6个常用的网络排查工具

当你在排查网络故障时,是不是上来就 ping 一下,通了就觉得“没事”?然后用户说“还是慢”,你又 traceroute 看一遍,发现一堆 * * * 就懵了?

我做Linux运维的头两年也这样。后来被线上事故教育了几回才明白:每个命令都有它的正确打开方式,用错了等于白干。

我把手头最常用的 6 个网络排查工具,按 “先看通不通 → 再看怎么走 → 再看谁在占 → 最后抓包破案” 的顺序讲清楚。每个工具只讲高频用法,不做“全部参数罗列”——那种事让 man 手册去做就行。

工具 1:ping

什么时候用它

别笑话 ping——这个 1983 年就有的工具,到今天仍然是排查网络的“敲门砖”。它的价值不是“测速”,而是回答三个问题:

  1. 目标机器在不在?(网络层可达)
  2. 大概有多远?(RTT 粗估)
  3. 丢包严重吗?(丢包率)

推荐的用法

# 发 30 个包,带时间戳,不走域名解析(避免 DNS 干扰)
ping -c 30 -D -n   8.8.8.8

输出

[1787536993.123456] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.3 ms
[1787536993.126789] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=11.9 ms
...
--- 8.8.8.8 ping statistics ---
30 packets transmitted, 30 received, 0% packet loss, time 29034ms
rtt min/avg/max/mdev = 11.234/12.567/15.432/1.234 ms

参数说明

  • -c 30:发 30 个包就停(别挂在那等 Ctrl+C)
  • -D:每行前面打印时间戳,事后对日志排查非常有用
  • -n:不解析域名,快很多

工具 2:mtr

它解决了什么问题
traceroute 只跑一遍,遇到中间某节点不响应就直接显示 ***,然后你就抓瞎了。

而 mtr(My TraceRoute)把 ping 和 traceroute 合二为一,持续探测每个中间节点,给出丢包率和延迟统计。

用一句话说:traceroute 告诉你“经过了哪些路由器”,mtr 告诉你“每台路由器表现怎么样”。

命令

# 日常推荐:TCP 模式 + 443 端口,更接近真实业务路径
mtr --tcp -P 443 -n -c 100 目标IP

参数说明

  • --tcp:改用 TCP 数据包(不是 ICMP),走业务走的链路
  • -P 443:指定探测端口(如果是 HTTP 服务就改 80)
  • -n:不反解域名
  • -c 100:发 100 个包后退出

输出结果

[root@hk-x86 ~]# mtr -r -c 100 chenkaidi.com
Start: 2026-08-24T10:47:15+0800
HOST: hk-x86                      Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 10.130.86.82              98.0%   100    1.6   1.6   1.6   1.6   0.0
  2.|-- 10.102.123.86             62.0%   100    1.3   1.3   1.3   1.8   0.1
  3.|-- 11.94.68.70                0.0%   100    1.7   2.2   1.6   9.3   1.8
  4.|-- 10.255.191.162            73.0%   100    2.0   1.9   1.8   2.6   0.2
  5.|-- 10.54.21.82               20.0%   100    2.1   6.5   2.0  62.5  11.1
  6.|-- 146762-hk1-ix.equinix.com  0.0%   100    2.9   3.0   2.9   3.2   0.0
  7.|-- 103.2.158.237              0.0%   100   32.6  31.9  31.5  34.1   0.4
  8.|-- 103.2.158.34               0.0%   100   34.7  35.3  34.6  47.3   2.1
  9.|-- ???                       100.0   100    0.0   0.0   0.0   0.0   0.0
 10.|-- ???                       100.0   100    0.0   0.0   0.0   0.0   0.0
 11.|-- ???                       100.0   100    0.0   0.0   0.0   0.0   0.0
 12.|-- 116.62.102.173             0.0%   100   40.1  40.2  40.1  44.5   0.5
列名 说明
Host 路径上每一跳(路由器)的IP地址或主机名。
Loss% 丢包率。显示发往该节点的数据包丢失百分比。
Snt 已发送的数据包总数
Last 最近一个数据包的往返延迟(毫秒)。
Avg 所有发送数据包的平均延迟
Best 最佳(最小)延迟
Wrst 最差(最大)延迟
StDev 标准偏差,反映延迟的稳定性,值越大表示网络越不稳定

判断原则

  1. 只看最后一跳的 Loss%:如果最终目标丢包率 0%,中间某跳 50% 丢包但后续恢复了,大概率是那个节点禁 ICMP 回复,不是故障。
  2. 某一跳延迟突然飙升(比如从 10ms 跳到 300ms),之后又降不下来 → 问题大概率出在这跳所在的运营商骨干网或跨网互联节点。
  3. 跳数中出现 ??? 但后续节点正常:说明该节点不响应探测,忽略即可。

工具 3:ss