Plainnotes

IPv6 没有分片,MTU 更敏感

2024-04-05 · 3 分钟网络

IPv4 允许路由器分片,IPv6 把分片的责任完全交给源端,中间设备遇到过大的包直接回 Packet Too Big 并丢弃。

问题在于很多防火墙把 ICMPv6 也一起禁了,源端收不到 Packet Too Big,PMTUD 失效,表现就是“小包通、大包卡”。

排查:

ping -6 -M do -s 1452 example.com

从 1452 往下试,找到能通的最大值。IPv6 头 40 字节,加上 ICMPv6 的 8 字节,实际负载上限比 IPv4 少。

修法:把接口 MTU 调到 1480 或 1400,或者放行 ICMPv6 的 type 2(Packet Too Big)。禁 ICMPv6 是 IPv6 环境里最常见的自伤操作。