实测导读与核心结论(TL;DR):在使用千兆家庭光纤连接代理节点时,许多人经常遇到“小文本秒开、但大网页与高清图片卡在 99% 转圈假死”的怪异故障。这并非节点跑路,而是家庭宽带 PPPoE 默认 MTU 1492 叠加代理隧道封装(TLS / WireGuard / Shadowsocks)后超过了网络路径 MTU,导致数据包分片被骨干网丢弃(Path MTU Black Hole)。通过在客户端或本地网卡将 MSS 钳制在 1380–1400 字节,可立即消除 100% 的分片死锁,让千兆宽带性能完全释放。
一、 数据包分片与路径 MTU 黑洞(PMTUD Black Hole)
计算机网络通信依赖于以太网物理最大传输单元(MTU,默认 1500 字节):
- 家庭宽带的 PPPoE 开销:运营商光纤拨号引入了 8 字节 PPPoE 报头,导致本地最大有效 MTU 缩减为 1492 字节;
- 代理软件的封装膨胀:
- Shadowsocks 协议引入约 50 字节报头;
- VMess / VLESS + TLS + WS 引入约 85 字节报头;
- WireGuard / 内网隧道引入 60–80 字节报头;
- 分片被杀:当本地发送一个 1460 字节的 TCP 数据负载时,加上代理报头后总长度超过 1492 字节。由于现代操作系统默认设置了 DF(Don't Fragment,禁止分片) 标志位,骨干网路由器直接将超标数据包丢弃,且返回的 ICMP Fragmentation Needed 差错包常被防火墙屏蔽,导致 TCP 连接陷入无休止的重传假死!
二、 确定本地最佳 MTU 与 MSS 的终端实测法
在 Windows PowerShell 或 CMD 中运行以下 Ping 探测命令,寻找不丢包的极限包长:
# 测试到达入口机房的最大不分片数据包大小 (从 1464 开始递减)
ping sh-iepl.gsyvip.com -f -l 1464
- 若提示
Packet needs to be fragmented but DF set(数据包需要分片但设置了 DF 标志),说明包过大; - 逐步减小数值(1460、1450、1432),直到能够正常收到回复。
- 最佳 MTU 计算公式:
最终数值 + 28(IP/ICMP 报头)。例如测得 1432 正常,则最优 MTU 为 1460。
三、 客户端一键调优实操(Clash Verge 与 Sing-box)
在支持 TUN 模式的客户端中,直接强制声明 MTU,彻底解决分片问题:
3.1 Clash Verge Rev / Mihomo 配置文件调优
在配置文件中设置 TUN 模块的 MTU 参数:
tun:
enable: true
stack: mixed # 或 gvisor
dns-hijack:
- "any:53"
auto-route: true
auto-detect-interface: true
mtu: 1400 # 黄金安全值,彻底杜绝分片丢包
设置 mtu: 1400 后,TCP MSS 会被自动钳制为 1360 字节,预留充足报头空间,网页与大文件传输瞬间畅通无阻。