Oracle云e2.1.micro优化tailscale的exit模式网速

前言:

复制代码
"在Oracle的e2.1.micro免费实例上安装了tailsacle,
设置为了exit出口,
Windows电脑也把这个实例作为所有流量exit出口,
第一天连接这个出口的网速很快,
但第二天、第三天就很慢,
在云南省文山州使用Windows电脑,e2.1.micro实例在Tokyo"

一、可以通过如下命令优化网速:

这些命令是 Tailscale 官方推荐的性能优化配置,特别是针对作为 Exit Node(出口节点)的 Linux 设备。

  1. tailscale netcheck

    检查当前网络连接状况(包括 UDP 是否可用、NAT 类型、到 DERP 中继服务器的延迟、是否能直连等)。这是 Tailscale 的诊断工具,用于排查连接问题,比如是直连还是走中继(DERP,中继速度通常慢很多)。

  2. NETDEV=$(ip -o route get 8.8.8.8 | cut -f 5 -d " ")

    自动获取默认路由出口网卡的名称(通常是 eth0 或 ens3 等),后面 ethtool 命令会用在这个网卡上。

bash 复制代码
# 获取网卡名称  ens3
ubuntu@:~$ ip -o route get 8.8.8.8
8.8.8.8 via 10.0.0.1 dev ens3 src 10.0.0.54 uid 1001 \    cache
  1. sudo ethtool -K $NETDEV rx-udp-gro-forwarding on rx-gro-list off

    这是核心优化命令:

    • rx-udp-gro-forwarding on:启用 UDP Generic Receive Offload 转发功能,能让内核批量聚合传入的 UDP 包,显著降低 CPU 开销,提高转发吞吐量(对 WireGuard/Tailscale 这种 UDP 隧道特别有效)。
    • rx-gro-list off(接收通用接收分段列表):关闭 GRO fraglist,防止它优先级高于上面的 UDP GRO 转发,导致优化失效。

    Tailscale 1.54+ + Linux 内核 6.2+ 时,作为 Exit Node 或 Subnet Router 时强烈推荐开启,能明显提升 UDP 转发性能。

  2. 最后的 ethtool 检查命令:验证设置是否生效。

bash 复制代码
ubuntu@:~$ ethtool -k $NETDEV | grep -E 'rx-udp-gro|rx-gro-list'
rx-gro-list: off
rx-udp-gro-forwarding: on

总结:这些命令优化了 Linux 内核对 UDP 流量的接收/转发能力,减少 CPU 消耗,提高 Tailscale Exit Node 的吞吐量(尤其是高流量场景)。不设置的话,Tailscale 会提示 "UDP GRO forwarding is suboptimally configured" 警告,性能受限。

注意 :ethtool 修改重启后会丢失,建议按 Tailscale 文档用 networkd-dispatcher 做开机自动生效。

"第一天快,后面慢"的原因

Oracle e2.1.microburstable(可突发) 的免费实例,只有很低的 baseline CPU(约 1/8 核),有 CPU 积分(credit)机制。

  • 第一天快:实例有积累的 CPU credit,能突发高性能。
  • 第二天/第三天慢:CPU credit 耗尽,只能跑很低的 baseline 性能,Tailscale WireGuard 加密 + 转发会很吃 CPU,导致整体变慢。

其他可能原因(跨国 + 中国网络环境):

  • 直连变中继(DERP):东京到云南的 UDP 直连可能不稳定,尤其是 Oracle 的网络策略或中国出口限速。tailscale netcheck 能确认。
  • Oracle 免费实例网络本身有一定限制 + 长时间高负载。
  • Windows 客户端问题或 MTU 不优。

建议优化步骤

  1. 立即检查

    • 在 Exit Node(Oracle)上运行 tailscale netcheck 和客户端的 tailscale netcheck,看是否直连(Preferred DERP 相同且 latency 合理)。
    • 检查 CPU 使用率(htoptop),看是否长期 100%。
  2. 应用上面 GRO 优化(已经贴的命令),并做持久化。

  3. 考虑换实例(强烈推荐):

    • Oracle Ampere A1(ARM)免费实例转发性能远好于 E2 micro,即使 1 OCPU 也能轻松跑几百 Mbps。很多用户反馈用 ARM 后速度大幅提升。
  4. 其他优化

    • 确保 IP forwarding 和 iptables 配置正确(Tailscale exit node 需要)。
    • Windows 客户端试试调整 MTU(有时默认 1280 太保守)。
    • GRO 优化还没持久化或没完全生效
    • Windows 客户端 MTU 或驱动问题

立即诊断命令(请在 Windows 电脑 上运行)

powershell 复制代码
# 1. 看具体到 Exit Node 的连接详情
tailscale ping 你的-exit-node-hostname   # 或 tailnet IP

# 2. 客户端自己的 netcheck
tailscale netcheck

优化建议

  • 应用你之前提到的 GRO 命令,并做开机持久化(参考 Tailscale 文档用 networkd-dispatcher)。
  • 在 Windows 客户端尝试:
    • tailscale down && tailscale up --exit-node=xxx --reset
    • 调整 MTU:tailscale up ... --mtu=1280(或 1420 测试)
  • 监控 Exit Node CPU:htop,如果长期接近 100%,就是 CPU 瓶颈。

二、查看mtu值

bash 复制代码
PS C:\Users\> netsh interface ipv4 show subinterfaces

   MTU  MediaSenseState   Bytes In  Bytes Out  Interface
------  ---------------  ---------  ---------  -------------
4294967295                1          0    1326587  Loopback Pseudo-Interface 1
  1280                1  2418943923  643979728  Tailscale
  1500                5          0          0  Ethernet
  1500                1  1209466813  430082065  Wi-Fi 2
  1500                5          0          0  Local Area Connection* 9
  1500                5          0          0  Local Area Connection* 10
  1500                1          0     277173  vEthernet (Default Switch)
  1500                5          0          0  vEthernet (June9virtual_Switch)
1,1280 是 Tailscale 的默认值**,也是最常用的推荐值。**

默认1280的原因

  • 这是 IPv6 要求的最小 MTU(RFC 标准规定 IPv6 至少支持 1280)。
  • Tailscale 是 WireGuard 隧道,会有一定的封装开销(UDP + 加密头)。默认 1280 能在绝大多数网络环境下稳定工作,避免分片(fragmentation)和丢包。
  • 对大多数用户(尤其是跨地区、跨运营商)来说,1280 是一个安全且平衡的选择

在你这个场景下的建议

你的 Oracle → 云南是长距离国际直连 ,网络路径复杂(中间可能有各种 NAT、防火墙、中国出口等),默认 1280 已经算保守,但不一定是"最优"。

很多用户(包括 Reddit 上反馈)在类似长距离或不稳定链路上,把 MTU 再调低到 12501200 后,反而获得更高吞吐量和更稳定的速度。

快速测试建议

继续用你当前的 Wi-Fi 环境,依次测试下面几个值(每次改完测速 30-60 秒):

powershell 复制代码
tailscale down

# 最推荐先测这两个
tailscale up --exit-node=ccpp --reset --mtu=1250
tailscale up --exit-node=ccpp --reset --mtu=1200

# 如果还想试
tailscale up --exit-node=ccpp --reset --mtu=1280   # 默认值
tailscale up --exit-node=ccpp --reset --mtu=1150   # 再低一点(极限测试)
相关推荐
上海云盾-小余1 小时前
企业云服务器安全底线:漏洞自查、攻击溯源与应急防护手册
运维·服务器·安全
楼田莉子1 小时前
Linux网络:网络多路IO模型详解
linux·网络·数据库
wen_zhufeng1 小时前
python-dotenv 使用文档
数据库·python·oracle
嵌入式小能手1 小时前
飞凌嵌入式ElfBoard-进程间的通信之信号处理signal
linux·服务器·信号处理
HMS工业网络1 小时前
技术干货:EtherCAT设备ESI(XML)文件中的CompleteAccess关键字有什么作用
xml·运维·服务器
汽车仪器仪表相关领域2 小时前
HORIBA MEXA-584L 全功能汽车排放废气分析仪:便携精准排放检测 + 多参数同步测量 + 国六 / 欧 7 合规适配,汽车检测与调校的黄金标准
服务器·数据库·人工智能·功能测试·汽车·压力测试·可用性测试
Irene19912 小时前
Linux 中换行符 = 命令结束,xargs 防止意外执行的机制,不支持标准输入的命令,-i 在各个命令中的真实含义
linux
TechWayfarer2 小时前
账号安全实战:基于IP归属地基线的三原则异地登录风控模型
服务器·网络·python·安全·网络安全
Edward111111112 小时前
SSL/TSL配置 集群节点间通信加密还有客户端
linux·服务器·ssl