深色外观
MTU 最佳参数调优与防断流实战指南
很多用户在日常使用代理节点或 VPN 时,经常会遇到以下“诡异”现象:
- 测速显示带宽非常充裕,延迟也很低;
- 但打开某些特定网页时一直转圈,甚至卡在 TLS 握手阶段;
- 远程 SSH 连接经常无故卡死断开;
- 在 Telegram 或微信发送小文字秒发,但发送稍大的图片或视频时直接卡住报失败。
这一系列故障的幕后元凶,往往就是 MTU(Maximum Transmission Unit,最大传输单元)配置不当 导致的数据包分片(Packet Fragmentation)与静默丢弃(Path MTU Black Hole)。
本文介绍常用的 MTU 诊断与优化方法。
一、什么是 MTU?为什么代理会导致数据包分片?
- MTU 定义:以太网接口在一次传输中能够承载的最大 IP 数据包字节数,标准以太网默认通常为
1500 字节。 - 代理隧道协议头开销:当你的数据包通过 Shadowsocks、Trojan、WireGuard 或 Hysteria2 传输时,代理客户端必须在原始数据包外包裹一层额外的加密头、认证标签和传输层包头(开销通常在 40~80 字节左右)。
【标准以太网传输链路 (MTU = 1500)】
[原始数据包 (1460 字节)] + [标准 TCP/IP 报头 (40 字节)] = 1500 字节 (刚好放行)
【加入代理隧道后 (若 MTU 依然设为 1500)】
[原始数据包 (1460 字节)] + [TCP 头 (40)] + [代理加密隧道头 (60 字节)] = 1560 字节 ──► 超过 1500!
│
▼
[中间运营商路由器因为设置了 DF (不分片)]
│
▼
❌ 数据包被直接静默丢弃!导致连接卡死断流!二、如何测试出你本地宽带的最佳 MTU 值?
在 Windows 或 macOS 命令行中使用 ping 命令,可以精准探测出不分片的最大载荷:
1. Windows 端测试命令
以测试国内网关或海外目标为例,运行以下命令(-f 表示禁止分片,-l 表示指定数据包大小):
powershell
ping 1.1.1.1 -f -l 1472- 如果提示:
Packet needs to be fragmented but DF set.(需要拆分数据包但是设置了 DF),说明数值过大,需要减小测试值(如1460、1450、1440); - 逐步递减测试,直到找到刚好能够连通且不报分片的临界值(假设为
1432); - 最终最佳 MTU = 临界测试值 + 28(ICMP/IP 报头):例如
1432 + 28 = 1460。
三、各场景推荐 MTU 设置黄金参考值
| 代理与网络环境 | 推荐 MTU 数值 | 调优说明 |
|---|---|---|
| 家庭千兆宽带 (PPPoE 拨号) | 1420 | 预留了 PPPoE (8字节) 与代理隧道协议头空间,绝大多数场景的黄金通用值 |
| 移动 4G / 5G 手机热点 | 1360 | 蜂窝移动网络基站开销较大,调至 1360 可彻底消除手机端断流 |
| WireGuard 内核隧道 | 1420 或 1280 | WireGuard 开销固定为 60/80 字节,设为 1420 表现最佳;若遇 IPv6 设为 1280 |
| Hysteria2 (QUIC 协议) | 1350 | 适配 UDP 报文的最小公分母,避免跨国运营商对大 UDP 分片限制 |
四、如何在客户端中修改 MTU?
- 在 TUN 模式配置中指定: 在 Clash / Mihomo 配置文件中的
tun模块,明确添加mtu: 1420:yamltun: enable: true stack: gvisor mtu: 1420 auto-route: true - 在专属客户端中:本站推荐的 9 大主力品牌专属客户端,在出厂编译时已经将默认 MTU 调优为自适应的最佳安全区间(
1400~1420),普通用户无需进行任何修改即可享受不卡顿、不断流的高速体验。