人人都会AI编程

11.2 连通性测试:ping、traceroute、mtr 链路检测

更新时间:2026-07-12

网络故障排查的第一步,通常是确认“能不能通”以及“在哪里断了”。Linux 提供了三个经典工具用于链路连通性和路径分析:pingtraceroutemtr。它们各有侧重,配合使用可以快速定位网络问题。

1. ping —— 最基础的连通性检测
ping 使用 ICMP 协议向目标主机发送回显请求,并等待应答,用来确认目标是否可达、延迟及丢包情况。

基本用法:

ping -c 4 192.168.1.1          # 发送4个包后自动停止
ping -c 10 -i 0.2 10.0.0.1     # 每个包间隔0.2秒(默认1秒)

输出会显示 icmp_seqttltime,最后统计丢包率、平均 / 最大 / 最小延迟。ttl(生存时间)可以粗略判断经过了几个路由器(初始值减当前值)。

实用注意:

  • 某些主机或网络设备可能禁用 ICMP 或限制速率,导致 ping 无响应但服务正常(如 HTTP 可达),此时需结合其他手段判断。
  • ping 默认使用 IPv4,强制 IPv6 用 ping6ping -6

2. traceroute —— 路由逐跳追踪
traceroute 利用 IP 报文中的 TTL 字段,依次递增 TTL 值,让路径上每一跳路由器返回“超时”通知,从而揭示数据包到达目标所经过的网关序列。

基本用法:

traceroute www.example.com
traceroute -n 8.8.8.8          # 不进行DNS反向解析,加快显示
traceroute -I 8.8.8.8          # 使用ICMP代替默认的UDP(某些环境UDP被过滤)

典型输出显示每一跳的序号、路由器 IP、三次探测的延迟(或 表示无响应)。连续出现的 可能表示该跳路由器不回复(但可继续转发)或路径中断。

实用注意:

  • 结果受网络对称性影响,回程路径可能与去程不同。
  • 多次探测的时间差异可观察链路稳定性。
  • 防火墙可能封堵 traceroute 使用的 UDP 高端口或 ICMP,尝试更换探测方法(-I, -T 使用 TCP SYN)能绕过部分限制。

3. mtr —— 动态路由诊断利器
mtr(My TraceRoute)是 pingtraceroute 的有机结合体。它持续向目标发送探测包,并实时更新每一跳的丢包率和延迟统计,能更清晰地反映网络状况的动态变化。

基本用法:

mtr www.example.com
mtr -n -r -c 100 8.8.8.8      # 非交互模式,发送100个包后打印报告

交互界面中,每一跳会显示丢包率(Loss%)、平均/最好/最差延迟等,并随着时间刷新。如果某跳丢包率骤增且后续跳也受波及,通常表明该跳是问题点;若仅某跳丢包但后续正常,往往是该路由器的控制面限速,并不影响转发。

实用技巧:

  • mtr 非常适合诊断间歇性丢包或延迟波动的问题,因为它持续收集数据,而非像 traceroute 只做单次快照。
  • 结合 -s(指定 ICMP 包大小)可测试路径 MTU 或大数据包表现。
  • 报告模式下(-r)可将结果输出到文件,方便存档或发送给上游 ISP 排查。

组合使用场景
在真实排障中,通常的顺序是:

  1. 先用 ping 确认目标 IP 是否可达、有无丢包;
  2. 若不通或延迟异常,用 traceroute 快速查看路径经过哪些节点,找到断点或延迟增大的位置;
  3. 若问题间歇性出现或需深入分析路径上某一跳的质量,使用 mtr 做持续性监测,获取更详尽的统计数据。

这三个工具构成了 Linux 网络连通性测试的黄金三角,是运维工程师和开发者应熟练掌握的基础技能。