丢包怎么排查?用 ping、mtr 与 WinMTR 定位问题出在哪一跳
丢包怎么排查?本文演示用 ping 确认丢包、用 mtr 与 WinMTR 或 pathping 追踪路径,提供 bash 与 PowerShell 命令示例,讲清 Loss、Avg、StDev 等列的读法、中间跳丢包何时可以忽略,以及如何判断问题出在家庭网络、运营商还是节点入口。
简要回答 排查丢包分两步:先用 ping 连续测试确认确实存在丢包,再用 mtr(Windows 用 WinMTR 或 pathping)逐跳查看路径。读结果时只看“从某一跳开始、一直持续到终点”的丢包,只出现在中间某一跳、后面恢复正常的丢包通常是路由器限速回应,可以忽略。
排查丢包的思路是:先用 ping 确认“确实在丢包”,再用 mtr 找出“从哪一跳开始丢”。mtr 把 ping 和路由追踪合在一起,能持续显示每一跳的丢包率和延迟;Windows 上可以用 WinMTR 或系统自带的 pathping。本文给出三个平台的命令示例和结果读法。
测试前的准备
丢包测试最容易被忽略的是测试环境本身。开始之前建议做好以下几件事:
- 关闭 TUN 模式或暂时退出客户端:TUN 模式会接管系统流量,开启 Fake-IP 时,域名可能被解析成
198.18开头的虚拟地址,ping 和 mtr 测到的就不是真实路径。测试节点入口时,直接使用节点的真实 IP 更稳妥。 - 暂停大流量任务:下载、网盘同步和视频上传会占满带宽,让本地网络看起来在丢包。
- 尽量用有线连接:Wi-Fi 信号本身就可能造成丢包,先用网线排除这一因素,再判断外部线路。
- 记录测试时间和运营商:同一条线路在白天和晚上的表现可能完全不同,记录下来便于对比和向客服反馈。
第一步:用 ping 确认丢包
先对两个目标分别测试:一个是国内公共 DNS,用来检查本地网络;另一个是节点的服务器地址,可在客户端节点详情或订阅配置中查看。
# Linux / macOS,连续发送 100 个包
ping -c 100 223.5.5.5
ping -c 100 node.example.com
# Windows
ping -n 100 223.5.5.5
Test-Connection -ComputerName node.example.com -Count 50
看输出末尾的统计行。国内目标就有丢包,说明问题在本地或宽带;国内正常、节点地址丢包,才需要继续追踪路径。
第二步:用 mtr 追踪路径
macOS 可以用 Homebrew 安装,Linux 用系统包管理器安装,具体包名以发行版为准。
# 报告模式:发送 100 轮后输出汇总,-n 不做反向解析,速度更快
sudo mtr -rwn -c 100 node.example.com
# 服务器屏蔽 ICMP 时,改用 TCP 探测 443 端口
sudo mtr -rwn -T -P 443 -c 100 node.example.com
Windows 没有自带 mtr,可以使用:
- WinMTR:图形界面工具,输入地址后点开始,运行几分钟后停止即可。请只从项目官方渠道获取。
- pathping:系统自带,先追踪路由,再对每一跳统计丢包,耗时较长。
pathping -n -q 100 node.example.com
第三步:读懂结果
下面是一段示意输出,地址和数值仅用于说明读法:
HOST Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.1 0.0% 100 1.2 1.5 0.9 6.1 0.6
2. 10.12.0.1 0.0% 100 4.8 5.3 3.9 12.4 1.2
3. 203.0.113.9 60.0% 100 9.1 9.8 8.7 15.0 1.1
4. 203.0.113.33 0.0% 100 9.5 10.2 8.9 18.3 1.4
5. 198.51.100.7 8.0% 100 38.6 41.2 35.0 90.7 9.8
6. node.example.com 8.0% 100 39.1 42.0 35.4 95.2 10.3
| 列名 | 含义 |
|---|---|
| Loss% | 该跳的丢包率 |
| Snt | 已发送探测包数量 |
| Avg / Best / Wrst | 平均、最好、最差延迟(毫秒) |
| StDev | 延迟波动,越大越不稳定 |
读法要点:
- 第 3 跳丢包 60%,但第 4 跳恢复 0%:这是路由器限制回应探测包,不影响实际转发,忽略即可。
- 从第 5 跳开始丢包并一直延续到终点:这才是真实丢包,问题出在第 4 跳到第 5 跳之间。
- 第 1 跳(家用路由器)就有丢包:问题在家庭网络,常见于 Wi-Fi 信号差或路由器过载。
- StDev 很大:说明该段延迟抖动明显,体验上表现为时快时卡。
第四步:根据位置采取行动
- 家庭网络段:换网线或 5GHz Wi-Fi,重启路由器,减少同时下载的设备。
- 运营商骨干段:通常只能错峰或更换线路,晚上加重的情况参考 晚高峰卡顿排查。
- 节点入口附近:把 mtr 报告和测试时间发给机场客服;同时切换其他入口的节点对比。
延迟偏高但丢包不明显的情况,参考 节点延迟过高怎么办;想了解更多测速工具,见 测速工具使用指南。测试时请遵守所在地法律法规和网络服务条款,不要对他人服务器进行高频探测。更多内容见 延迟问题专题。
常见问题
mtr 显示中间某一跳丢包 100%,但终点正常,有问题吗?
通常没有问题。很多路由器会限制或不回应发给自身的探测包,但照常转发流量。只要后续各跳和终点没有丢包,就可以忽略。
节点服务器 ping 不通,是不是节点坏了?
不一定。不少服务器会屏蔽 ICMP,ping 不通但代理可以正常使用。这时可以用 mtr 的 TCP 模式,或直接用客户端延迟测试判断。
丢包率多少算正常?
理想情况下终点应接近零丢包。偶发的零星丢包影响不大;持续出现的丢包会明显影响视频、语音和 AI 长连接,值得进一步排查。