知识 Wiki 总览 / VPN
MTU与MSS
更新于 2026-11-07条目链接
最大传输单元(MTU)是接口可承载的最大网络层报文尺寸。路径 MTU(PMTU)是源到目标路径上各链路 MTU 的最小值。VPN 封装增加外层头部、认证标签等开销,隧道内报文若仍沿用底层链路大小,就可能超过路径可承载上限。
MTU 与 MSS
TCP 最大报文段大小(MSS)限制一个 TCP 段可携带的数据量。IPv4 TCP 基础头部通常为 20 字节 IP 头和 20 字节 TCP 头,IPv6 基础头部通常为 40 字节 IP 头和 20 字节 TCP 头;TCP 选项和 IPv6 扩展头会改变实际可用空间。MSS 调整只影响 TCP,不会自动解决 UDP 报文大小问题。
故障表现
TCP 握手可能成功,但较大的网页、文件传输或 TLS 数据停滞。PMTU 发现依赖的 ICMP 或 ICMPv6 错误若被过滤,连接可能形成黑洞。降低隧道接口 MTU 可作为受控诊断,但应记录原值并按 VPN 供应方或网络管理员建议恢复。
查看或临时调整接口 MTU
Windows
Get-NetIPInterface | Select-Object InterfaceAlias,AddressFamily,NlMtuBytes
Set-NetIPInterface -InterfaceAlias "WireGuard Tunnel" -NlMtuBytes 1380
macOS
ifconfig
sudo ifconfig utun4 mtu 1380
utun4 只是示例接口名;macOS 隧道接口编号可能变化。持久配置应由 VPN 应用管理。
Linux
ip link show wg0
sudo ip link set dev wg0 mtu 1380
示例中的 1380 不是适用于所有线路的固定值。隧道协议、外层 IPv4/IPv6、底层接入方式及路径都会改变开销。
诊断原则
- 先记录接口和路径 MTU,再逐步测试,不直接假定所有隧道都应使用同一数值。
- 检查防火墙是否错误丢弃必要的 ICMP 或 ICMPv6 Packet Too Big 消息。
- 同时验证 IPv4 与 IPv6 路径,并确认服务端和客户端采用一致的 MTU/MSS 策略。
- 手工临时设置后恢复原值,持久设置应写入 VPN 客户端或受管理配置。
参考资料
RFC 1191:IPv4 路径 MTU 发现;RFC 8201:IPv6 路径 MTU 发现;Microsoft Learn:Set-NetIPInterface;Linux ip-link 手册。
