banner
约 900 字
3 分钟

网络诊断教程:ping、traceroute 与 mtr 定位故障

摘要

"网络卡了"怎么定位?本教程依据 iputils 与 mtr 官方手册,介绍 ping 看延迟丢包、traceroute 看路径、mtr 实时定位丢包段的完整排查套路,并解释中间跳 * * * 与假丢包现象,附常见网络现象对照表。

网络诊断教程:ping、traceroute 与 mtr

"网络卡了"是世界上最含糊的故障描述。ping、traceroute、mtr 三个命令可以帮你把"卡"拆解成具体环节:是连不上、丢包还是延迟高,问题出在哪一跳。本教程依据 iputils 与 mtr 官方手册整理。

一、ping:最基础的连通性测试

bash
ping example.com            # 持续 ping,Ctrl+C 停止
ping -c 5 example.com       # 只发 5 个包
ping -i 0.5 example.com     # 每 0.5 秒一次(间隔小于 0.2 需要 root)

重点看结果统计:time= 是往返延迟,packet loss 是丢包率。健康网络对国内目标延迟应在几十毫秒、丢包 0%。

注意:ping 不通不一定是网络断了——很多服务器会禁用 ICMP 响应。ping 不通时用 curl -I 再验证一次。

二、traceroute:看路径经过了哪里

bash
traceroute example.com

每一行是路径上的一个"跳"(路由器)。三个时间分别是三次探测的往返延迟:

  • 中间跳显示 * * *:常见现象,很多路由器不响应探测包,不代表故障,只要后续跳正常就行

  • 某一跳开始持续超时且后面全断:问题大概率在这一跳附近

排查运营商线路问题时,把各跳 IP 归属地(ip 查询)看一眼,就能定位是哪段网络慢。

三、mtr:ping + traceroute 合体

mtr 把上面两个结合成实时刷新的报表,是定位丢包的利器:

bash
mtr example.com          # 实时刷新界面
mtr -r -c 100 example.com   # 报告模式:测 100 个包后输出统计

重点看两列:

  • Loss%:每一跳的丢包率

  • Avg:平均延迟

判断丢包在哪一跳的小技巧:如果某跳丢包率高,但它后面的跳丢包率恢复到 0%,那是该路由器限速 ICMP 不理你(假丢包);如果从某跳开始后面所有跳都持续丢包,问题真的在那一段。

四、常见结论对照表

现象

可能原因

ping 不通但网站能开

服务器禁 ICMP,正常

全程延迟高、丢包 0%

线路绕远(看 traceroute 是否绕路)

某跳之后全丢包

该段线路故障或被墙

只在晚高峰丢包

运营商出口拥塞

DNS 慢但 ping IP 快

域名解析问题,用 dig 排查

五、总结

需求

命令

测连通与延迟

ping -c 5 目标

看路径

traceroute 目标

定位丢包

mtr -r -c 100 目标

Windows 对应

ping / tracert / pathping

诊断套路:ping 定性 → traceroute 定位段 → mtr 定位点。三个命令跑完,"网络卡"就变成了可汇报、可追责的具体结论。

END