Plainnotes

MTU 不一致导致的怪现象

2026-06-10 · 3 分钟网络

一个经典现象:ping 通,ssh 能登录,但 scp 一个大文件传到一半就卡死;或者 HTTPS 页面能打开,下载大文件失败。

这通常是路径 MTU 小于接口 MTU,而中间设备把 ICMP fragmentation needed 丢了(PMTUD 黑洞)。小包能过,大包被静默丢弃。

验证:

ping -M do -s 1472 1.2.3.4     # 1472+28=1500

从 1472 往下试,找到能通的最大值,加 28 就是实际 MTU。常见值是 1400(PPPoE)、1420(WireGuard)、1450(某些隧道)。

修法:把接口 MTU 调到实测值,或者开 tcp_mtu_probing=1 让内核自己探测。后者更省事,但只在建立连接时生效。