MTU 与 MSS
百科词条 · VPS 术语 · 亦称 MTU / MSS / 最大传输单元 / 路径 MTU / MSS 钳制 / PMTUD
MTU(最大传输单元,RFC 791)是数据链路层单帧所能承载的最大有效 IP 载荷(标准以太网通常为 1500 字节);MSS(最大报文段大小,RFC 879)是 TCP 层单个数据包能承载的纯应用载荷。在跨国代理、VPN 隧道与拨号网络中,隧道加密报头开销若超过路径 MTU 且遭遇 ICMP 黑洞,会引发恶性分片丢包、TLS 握手假死与测速断流。
MTU 与 MSS 的底层数学推导
在标准以太网(MTU = 1500 字节)环境中:IPv4 基础报头占用 20 字节,标准 TCP 报头占用 20 字节,因此客户端在三次握手 SYN 包中协商的默认 MSS 为 1460 字节(1500 - 20 - 20)。在 IPv6 环境下,由于 IPv6 固定报头增大至 40 字节,标准 MSS 降至 1440 字节(1500 - 40 - 20)。家庭 PPPoE 宽带因外层额外封装了 8 字节 PPPoE 头,物理物理链路 MTU 进一步收缩至 1492 字节,对应 IPv4 MSS 仅为 1452 字节。
查看来源隧道封装报头开销(以 WireGuard 为例)
当使用 WireGuard、VLESS-Reality 或基于 UDP 的代理协议时,原始数据包必须完整封装在外层载荷中。以 WireGuard 为例,其开销包括外层 IP 报头(IPv4 20 字节 / IPv6 40 字节)、UDP 报头(8 字节)、WireGuard 内部协议字段(32 字节)及 Poly1305 认证标签(16 字节),总体固定开销达 60~80 字节。若客户端仍按 1500 字节发包,叠加后报文尺寸将达到 1560~1580 字节,严重超出物理网卡承载极限。
PMTUD 机制与「ICMP 黑洞」现象(RFC 1191)
RFC 1191 规范了经典的路径 MTU 发现机制(PMTUD):发送端在 IP 首部置位 DF(Don't Fragment,禁止分片)标记。若途中路由器 MTU 小于报文尺寸,应丢弃该报文并回送 ICMP Type 3 Code 4(需要分片但设置了 DF)通知源端收敛发包尺寸。然而公网防火墙与运营商边界网关普遍将 ICMP 差错报文视作潜在威胁全面丢弃,导致源端收不到减小尺寸的指令而无休止重传,出现「ping/DNS 正常,但访问网页与大文件下载无限卡死」的典型 ICMP 黑洞。
查看来源PLPMTUD 端到端探测升级(RFC 4821 / RFC 8899)
为规避 ICMP 拦截缺陷,IETF 先后制定了基于传输层 ACK 丢包推断的 RFC 4821(PLPMTUD)与针对现代 UDP/QUIC 隧道封装的 RFC 8899 规范。该方案由端点在用户态或传输层通过阶梯式发送不同尺寸的探测探测报文,根据对端是否能成功返回 ACK 确认包来动态学习真实全链路安全 MTU,彻底脱离对中间路由器 ICMP 差错回包的依赖。
查看来源工程调优方案:MSS 钳制与手动收缩
解决代理断流的核心手段包括两项:其一,在 WireGuard 或 TUN 虚拟网卡中主动收缩 MTU 配置值,一般建议设置为 1420(IPv4 网络)或 1280(IPv6 国际标准保底下限,RFC 8200);其二,在路由器或 VPS 防火墙规则中开启 MSS 钳制(MSS Clamping),利用 iptables/nftables 拦截转发链路上的 TCP SYN 握手包,强行将协商的 MSS 重写限制在安全范围之内(如 iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu)。