← 返回题目列表

MTU 问题会导致什么现象?如何排查路径 MTU 和分片问题?

高频 中等 第 15 / 26 题 更新于 2026/07/31
MTU分片PMTUD网络排查

简化版

MTU 是链路层一次能承载的最大包大小。路径 MTU 过小、DF 位禁止分片或 ICMP 被屏蔽,可能导致小包正常、大包卡住、HTTPS 或 VPN 访问异常。排查可用 ping 指定包大小和 DF 位、抓包观察 ICMP Fragmentation Needed、检查 VPN/隧道封装开销和网卡 MTU。

详细版

以太网常见 MTU 是 1500 字节,但 VPN、隧道、云网络封装会吃掉一部分头部空间,导致实际可用 MTU 更小。如果发送端发出超过路径 MTU 的包,又设置 DF 不允许分片,路由器应返回 ICMP 提示需要分片。如果 ICMP 被防火墙拦截,发送端不知道要降包大小,就会出现黑洞。

常见现象是 ping 小包通、大包不通;TCP 建连成功但传输大响应卡住;某些网站或 VPN 下访问异常。解决方式包括调小接口 MTU、调整 MSS、放行必要 ICMP、避免隧道叠隧道。

完整版教学

一、MTU 是什么

MTU 是 Maximum Transmission Unit,表示某条链路一次能传输的最大二层载荷。普通以太网常见 MTU 是 1500 字节。

Ethernet MTU = 1500
IP header = 20 bytes
TCP header = 20 bytes
TCP payload often <= 1460 bytes

这个 1460 常被称为 MSS 的典型值。它不是固定真理,只是 1500 MTU 下常见的 TCP 载荷大小。

二、路径 MTU 为什么更小

端到端路径经过多段链路,真正能用的包大小取决于最小那一段。VPN、GRE、IPSec、VXLAN 等封装会额外加头,降低可用 MTU。

client MTU 1500
VPN overhead 60
effective payload MTU around 1440

如果还按 1500 发送,隧道里可能装不下。于是出现“本地网络正常,走 VPN 就卡”的典型问题。

三、分片和 DF 位

IPv4 可以分片,但分片会增加丢包和重组成本。现代 TCP 常用路径 MTU 发现,设置 DF 位不允许路由器分片,让路由器返回 ICMP Fragmentation Needed,发送端据此调小包。

packet size 1500, path MTU 1400, DF set
router drops packet
router sends ICMP need frag, MTU=1400
sender lowers size

如果 ICMP 被拦截,发送端收不到提示,就形成 PMTU 黑洞。

四、MTU 黑洞的现象

MTU 问题很迷惑,因为不是完全不通。小包、TCP 握手、DNS 查询可能正常,大响应、大上传、TLS 握手后数据传输可能卡住。

ping small ok
tcp connect ok
HTTP large response stalls
VPN access some sites fail

这和应用慢、服务器卡很像,所以要用包大小测试和抓包确认。

五、如何用 ping 测试

可以用 ping 指定不分片和包大小。不同系统参数不同,Linux 常用 -M do -s,Windows 常用 -f -l

ping -M do -s 1472 example.com
ping -M do -s 1400 example.com

IPv4 下 ICMP payload 1472 加上 IP 20 字节和 ICMP 8 字节,刚好是 1500。逐步降低大小,能估算路径 MTU。

六、TCP MSS 调整

TCP 通过 MSS 告诉对端自己希望接收的最大 TCP payload。网关、VPN 或防火墙可以做 MSS clamping,把 MSS 调小,避免后续 TCP 包超过路径 MTU。

original MSS 1460
tunnel overhead 60
clamped MSS 1400

这在 VPN、PPPoE、云隧道场景很常见。只改本机 MTU 不一定覆盖所有客户端,网关侧 MSS 调整有时更有效。

七、抓包怎么看

抓包时可以关注大包是否反复重传,以及是否有 ICMP Fragmentation Needed。如果只看到大段 TCP 重传,没有看到 ICMP,可能是 ICMP 被中间设备拦了。

现象可能原因
小包成功大包失败MTU/PMTUD
ICMP need frag路径 MTU 较小
大包持续重传PMTU 黑洞
VPN 下才异常隧道开销

记忆钩子:MTU 问题最像“路是通的,但车太高过不了限高杆”。

八、常见误区与追问

  • 误区:ping 通就没有 MTU 问题。 小包 ping 通,不代表大包能通过。
  • 误区:MTU 一定是 1500。 隧道、VPN、PPPoE、云网络都可能让路径 MTU 更小。
  • 误区:屏蔽 ICMP 更安全且无副作用。 PMTUD 依赖部分 ICMP,乱屏蔽会导致黑洞。
  • 追问:为什么 TCP 建连成功但传大数据卡住? SYN 很小能过,大数据包可能超过路径 MTU。
  • 追问:MSS 和 MTU 什么关系? MSS 是 TCP payload 上限,通常等于 MTU 减 IP/TCP 头。
  • 追问:VPN 下怎么解决 MTU 问题? 调小隧道 MTU、做 MSS clamping、减少封装层数。
  • 追问:IPv6 分片有什么不同? 路由器不分片,更依赖源端和 PMTUD。

九、加强记忆

MTU 排查要抓住“小包通、大包挂”这个特征。先理解路径 MTU 由最小链路决定,再用带 DF 的 ping 试包大小,用抓包看 ICMP need frag 和 TCP 重传。VPN、隧道、云网络最容易引入额外头部开销,解决手段通常是调 MTU、调 MSS 和放行必要 ICMP。