延迟与丢包 HOW-TO · 教程

丢包怎么排查?用 ping、mtr 与 WinMTR 定位问题出在哪一跳

丢包怎么排查?本文演示用 ping 确认丢包、用 mtr 与 WinMTR 或 pathping 追踪路径,提供 bash 与 PowerShell 命令示例,讲清 Loss、Avg、StDev 等列的读法、中间跳丢包何时可以忽略,以及如何判断问题出在家庭网络、运营商还是节点入口。

发布于 最后更新 3 分钟阅读

简要回答 排查丢包分两步:先用 ping 连续测试确认确实存在丢包,再用 mtr(Windows 用 WinMTR 或 pathping)逐跳查看路径。读结果时只看“从某一跳开始、一直持续到终点”的丢包,只出现在中间某一跳、后面恢复正常的丢包通常是路由器限速回应,可以忽略。

终端中 mtr 逐跳显示丢包率和延迟的结果示意图

排查丢包的思路是:先用 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 延迟波动,越大越不稳定

读法要点:

  1. 第 3 跳丢包 60%,但第 4 跳恢复 0%:这是路由器限制回应探测包,不影响实际转发,忽略即可。
  2. 从第 5 跳开始丢包并一直延续到终点:这才是真实丢包,问题出在第 4 跳到第 5 跳之间。
  3. 第 1 跳(家用路由器)就有丢包:问题在家庭网络,常见于 Wi-Fi 信号差或路由器过载。
  4. StDev 很大:说明该段延迟抖动明显,体验上表现为时快时卡。

第四步:根据位置采取行动

  • 家庭网络段:换网线或 5GHz Wi-Fi,重启路由器,减少同时下载的设备。
  • 运营商骨干段:通常只能错峰或更换线路,晚上加重的情况参考 晚高峰卡顿排查。
  • 节点入口附近:把 mtr 报告和测试时间发给机场客服;同时切换其他入口的节点对比。

延迟偏高但丢包不明显的情况,参考 节点延迟过高怎么办;想了解更多测速工具,见 测速工具使用指南。测试时请遵守所在地法律法规和网络服务条款,不要对他人服务器进行高频探测。更多内容见 延迟问题专题。

编辑推荐 · 综合第 1

二猫云
  • 三网优化 IEPL专线+中转+直连
  • ¥20/月起 · 130GB/月
  • 设备不限 · 运营2年+(2024年4月成立)
  • AI:ChatGPT、Claude、Claude Code、Codex、Gemini

常见问题

mtr 显示中间某一跳丢包 100%,但终点正常,有问题吗?

通常没有问题。很多路由器会限制或不回应发给自身的探测包,但照常转发流量。只要后续各跳和终点没有丢包,就可以忽略。

节点服务器 ping 不通,是不是节点坏了?

不一定。不少服务器会屏蔽 ICMP,ping 不通但代理可以正常使用。这时可以用 mtr 的 TCP 模式,或直接用客户端延迟测试判断。

丢包率多少算正常?

理想情况下终点应接近零丢包。偶发的零星丢包影响不大;持续出现的丢包会明显影响视频、语音和 AI 长连接,值得进一步排查。