iStoreOS/OpenWrt 异地组网网速慢?ZeroTier 只有几百K?三步教你跑满带宽

Spread the love

🛑 问题现象

你是否遇到过这种情况:

  • 家里宽带上行有 30Mbps+,但异地组网(ZeroTier)传输文件只有 300K-500K/s
  • 使用 DDNS + 端口转发直接访问群晖 NAS,看视频依然卡顿,下载速度同样被锁死在 500K 左右。
  • 上传网盘速度正常(多线程),但单线程传输极慢。
  • Ping 值正常(几十毫秒),但传大文件就崩。

如果全中,这通常不是运营商的问题,而是 MTU(最大传输单元)MSS(最大分段大小) 设置不匹配导致的“大包阻塞”。本文将基于 iStoreOS(OpenWrt)提供全套解决方案。


🛠 第一步:诊断 ZeroTier 连接状态

首先确认你的 ZeroTier 是直连(Direct)还是中继(Relay)。

  1. SSH 登录路由器后台。
  2. 输入命令查看节点:Bashzerotier-cli peers 注意:如果提示 missing port 错误,说明配置文件路径非标准或服务假死。尝试指定路径:zerotier-cli -D/etc/config/zero peers 或重启服务。
  3. 分析结果:
    • LINK 显示 RELAY:走了中继服务器,速度慢是正常的。请检查防火墙是否开启 FullCone-NAT。
    • LINK 显示 DIRECT:已经直连(通常走 IPv6),但速度依然慢?请直接看第二步,这是 MTU 在作祟。

🚀 第二步:修改 ZeroTier 接口 MTU (核心修复)

在 IPv6 环境或某些运营商网络下,ZeroTier 默认的 MTU(通常为 2800)过大,导致数据包分片或被丢弃。

临时验证

  1. 查找 ZeroTier 虚拟网卡名称:Bashifconfig 找到 zt 开头的网卡(如 ztcfwxtj4s)。
  2. 强制将 MTU 修改为 1280(IPv6 安全下限):Bashifconfig ztcfwxtj4s mtu 1280
  3. 立刻测速:此时传输文件,速度应该瞬间恢复正常。

永久生效(iStoreOS 设置)

  1. 进入 网络 -> 接口
  2. 找到 ZeroTier 的接口,点击 修改
  3. 高级设置 中,找到 覆盖 MTU,填入 1280
  4. 保存并应用。

🛡 第三步:开启 MSS 钳制 (修复 NAS 直连慢)

如果你不走 ZeroTier,而是用 DDNS + 端口转发访问 NAS 也很慢,这是因为 PPPoE 拨号环境下,TCP 包头过大导致被运营商丢包。

命令行暴力开启(推荐,最稳)

iStoreOS 界面可能隐藏了此选项,直接 SSH 执行以下命令,强制全局开启:

Bash

uci set firewall.@defaults[0].mss_clamping='1'
uci commit firewall
/etc/init.d/firewall restart

网页端设置(如果能找到)

  1. 进入 网络 -> 防火墙
  2. 勾选 MSS 钳制 (MSS Clamping)
  3. 保存并应用。

原理:开启后,路由器会自动调整通过的数据包大小,确保它们能顺利通过运营商的管道。


⚠️ 常见坑点排查

1. ZeroTier 服务“假死”

如果 zerotier-cli 报错,且进程里有僵尸进程,按以下步骤重置:

Bash

# 杀掉卡死的进程 (PID换成你实际查到的)
kill -9 [PID]
# 确保配置启用
uci set zerotier.@zerotier[0].enabled='1'
uci commit zerotier
# 重启服务
/etc/init.d/zerotier restart

2. 测速误区

不要挂着 OpenClash/PassWall 测速!

  • 现象:Speedtest 自动连到台湾或国外服务器,延迟高,丢包严重。
  • 解决:暂时关闭所有代理插件,使用 ./speedtest -s [本地电信ID] 指定国内服务器测速,才能测出真实的物理带宽。

📝 总结

异地组网速度慢,90% 的情况不是带宽不够,而是 “路够宽,但这辆车(数据包)太宽了,卡在隧道口过不去”

  • ZeroTier 慢 👉 改虚拟网卡 MTU 为 1280
  • NAS 直连慢 👉 开启防火墙 MSS 钳制

只需这两步,即可榨干你的上行带宽。

Leave a Reply Cancel reply