首页/网络/网络排障速查/ping -M do 探测路径 MTU(二分法)
连通性与链路检测54 条

ping -M do 探测路径 MTU(二分法)

带 DF(禁止分片)位逐级加大包,找到「能通过的最大载荷」,即可反推路径 MTU;是隧道、VXLAN、VPN 场景最实用的排障动作。

网络排障速查网络更新于 2026-10-13

ping -M do 是什么

ping -M do 让本机在探测报文的 IP 头里置上 DF(禁止分片)位,这样包一旦超过路径上任意一跳的 MTU,就不会被悄悄切开,而是由该设备回一个『需要分片』的 ICMP 差错,或者干脆被丢弃。用二分法不断调整 -s 的载荷大小,就能找出这条路径真正能通过的最大报文,也就是路径 MTU。隧道、虚拟专用网、容器网络里『小包正常、大包全丢』类故障基本都靠这一招定位。

基本信息

命令要点ping -M do -s 载荷 目标;DF 置位后超限包不会在本机分片
换算关系IPv4 下路径 MTU = 载荷 + 28(20 字节 IP 头 + 8 字节 ICMP 头),1472 对应 1500
探测方式先用 1472 试,失败后向下二分;也可从 1200 向上加,收敛更快
Windows 对照用 ping -f -l 1472,-f 相当于 Linux 的 -M do
前提需要路径设备愿意返回 ICMP 需分片差错,否则只能看到丢包

典型使用场景

  • 虚拟专用网与专线:连接建立正常但大文件、页面大响应卡死,怀疑路径 MTU 偏小
  • 隧道与叠加网络:叠加封装会吃掉几十字节,业务实际只能过更小的包
  • 容器与集群网络:跨主机通信异常而本机正常,先确认隧道接口的 MTU
  • 访问特定站点异常:只有某个目标的大响应失败,需要与正常目标做对照探测
  • 变更验证:调整 MTU 或切换线路后,复测最大可通过载荷确认生效

二分法探测

二分法探测
ping -M do -s 1472 -c 2 10.0.0.5   # 1472 + 28 = 1500,标准以太网应能通过
ping -M do -s 1400 -c 2 10.0.0.5   # 不通就向下试,每次取中间值
ping -M do -s 1372 -c 2 10.0.0.5   # 1372 + 28 = 1400,常见隧道直通值
ping -M do -s 1422 -c 2 10.0.0.5   # 继续二分,逼近真实上限
# 找到最大可通过载荷 P 后:路径 MTU = P + 28(IPv4)

返回信息判读

返回信息含义结论
正常收到回包该尺寸未超过任何一跳的 MTU可以继续加大载荷继续试探
本机报报文过长本机按当前 MTU 发送就已被拒绝本机接口 MTU 小于探测值,先改本机再测路径
中间设备回需要分片某一跳的 MTU 小于当前载荷该跳的 MTU 已由差错报文给出,可直接采用
完全没有回包也无差错超限包被静默丢弃典型的路径 MTU 发现黑洞,需缩小包或改隧道参数
找到可用载荷后应把两端与隧道接口的 MTU 一起调整,只改一端往往只是把丢包点搬了个位置;改完再复测一次确认。
探测顺序建议从 1472 往下二分:常见限制值(1500、1450、1400、1380、1280)优先试,命中概率高,比逐字节递减快得多。
本机接口的 MTU 决定了 ping 的起点:如果本机接口已经是 1400,用 1472 去探测会在本机就被拒绝,得到的是本机限制而不是路径限制,先看 ip link show 确认起点。
同一条路径在不同时段可能给出不同结果:链路切换、隧道重建或负载分担都会让最大可通过长度变化,重要链路应多次探测取稳定值。
很多防火墙会连 ICMP 差错报文一起拦掉,形成路径 MTU 发现黑洞:表现为小包正常、大包静默消失,此时只能靠手工调低 MTU 或改用 TCP 层探测。

易错点

  • 1472 不通就直接写下路径 MTU 等于 1400,中间可能还差着几十字节;正确做法是二分出准确值再核对设备配置
  • 只测一个方向:上行能过不代表下行能过,双向都要验证
  • 忽略封装开销:以太网物理口 1500,叠加隧道后业务实际只能过更小的包,按 1500 配置必然踩坑
  • 把不带 DF 位的 ping 结果当依据:没有 DF 位时本机与中间设备都会分片,大包照样能通,测不出任何限制
  • 忘记 IPv6 的底线是 1280 且中间设备不允许分片,搬用 IPv4 的 1472 经验会得出错误结论
  • 改完 MTU 不去复测:改小后小包能通、大包仍丢,说明限制还在更前面一跳,需要继续向上游排查
  • 只看 ping 的 ICMP 结论:业务走的是 TCP,某些设备对两种协议处理不同,最终要用实际业务流量验证是否恢复了

数据来源与参考

  • RFC 1191:Path MTU Discovery
  • man 8 ping(-M do 语义)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌