Linux 系统中,追踪路由是网络诊断中常用的技术手段,主要用于显示数据包从源主机到目标主机所经过的路由路径,帮助定位网络延迟、丢包等问题,Linux 系统提供了多种追踪路由命令,其中最常用的是 traceroute 和 traceroute6(用于 IPv6),此外还有 tracepath、mtr 等工具,它们各有特点和适用场景。

traceroute 命令:经典的路由追踪工具
traceroute 是最基础的追踪路由命令,通过发送不同 TTL(Time To Live,生存时间)值的数据包,逐跳记录路径上的路由器信息,其工作原理是:首先发送一个 TTL=1 的数据包,到达第一跳路由器后,TTL 减为 0,路由器会返回一个“超时” ICMP 消息;接着发送 TTL=2 的数据包,第二跳路由器返回超时消息,依此类推,直到数据包到达目标主机。
基本语法
traceroute [选项] 目标主机
常用选项包括:
-I:使用 ICMP 数据包(默认为 UDP);-T:使用 TCP 数据包;-n:直接显示 IP 地址,不进行域名解析;-m:设置最大跳数(默认 30);-p:指定目标端口(仅 TCP/UDP 模式);-q:每次发送的数据包数量(默认 3);-w:等待响应的超时时间(秒,默认 3)。
示例与输出解析
traceroute -n -m 10 www.baidu.com
输出示例:
traceroute to www.baidu.com (182.61.200.7), 10 hops max, 60 byte packets
1 192.168.1.1 2.345 ms 1.234 ms 1.567 ms (第一跳:本地网关)
2 10.0.0.1 5.678 ms 4.321 ms 6.543 ms (第二跳:运营商路由器)
3 202.96.1.1 10.123 ms 9.876 ms 11.234 ms (第三跳:骨干网节点)
...
10 182.61.200.7 25.678 ms 24.321 ms 26.543 ms (目标主机)
每列含义:

- 第1列:跳数(Hop);
- 第2列:路由器 IP 地址(
-n选项下不解析域名); - 第3-5列:该跳的响应时间(单位:毫秒,3次探测结果)。
注意事项
- 部分路由器可能禁用 ICMP 或 UDP 端口,导致
traceroute无法获取中间跳信息; - 若目标主机防火墙过滤了 ICMP,可能显示 (无响应);
- 需要 root 权限才能使用原始套接字(如
-I选项)。
traceroute6 命令:IPv6 环境下的路由追踪
traceroute6 是 traceroute 的 IPv6 版本,语法和选项与 traceroute 基本一致,仅目标主机需为 IPv6 地址。
示例
traceroute6 -n ipv6.google.com
输出格式与 traceroute 类似,但 IP 地址为 IPv6 格式(如 2404:6800:4004:832::200e)。
tracepath 命令:无需 root 的轻量级工具
tracepath 是 traceroute 的简化版,无需 root 权限即可使用,且自动调整 MTU(最大传输单元)和超时时间,更适合普通用户。
基本语法
tracepath [选项] 目标主机
常用选项:
-n:不解析域名;-m:设置最大跳数(默认 30);-p:设置起始 UDP 端口(默认 33434)。
示例与输出解析
tracepath www.baidu.com
输出示例:
1?: [LOCALHOST] pmtu 1500
1: 192.168.1.1 0.234 ms
2: 10.0.0.1 1.567 ms
3: 202.96.1.1 3.456 ms
...
10: 182.61.200.7 20.123 ms
Cache hit (ok)
- 表示该跳 MTU 可能变化;
Cache hit (ok):表示到达目标主机。
优势
- 无需 root 权限;
- 自动显示路径 MTU 信息;
- 输出更简洁,适合快速诊断。
mtr 命令:集追踪与实时监控于一体的工具
mtr(My TraceRoute)是 traceroute 和 ping 的增强版,结合了两者功能,实时显示每跳的丢包率、延迟抖动,更适合深度网络分析。
基本语法
mtr [选项] 目标主机
常用选项:
-n:不解析域名;-t:使用 TCP 模式(默认 ICMP);-u:使用 UDP 模式;-p:指定端口(TCP/UDP 模式);-a:显示 AS 号(自治系统号);-i:数据包发送间隔(秒,默认 1)。
交互式界面示例
mtr -n www.baidu.com
输出为动态表格(实时更新):
Keys: Help Display mode Restart statistics Order of fields
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.1 0.0% 10 0.2 0.3 0.1 0.5 0.1
2. 10.0.0.1 0.0% 10 1.1 1.2 0.8 1.8 0.3
3. 202.96.1.1 10.0% 10 10.5 12.3 9.8 15.2 2.1
...
10. 182.61.200.7 0.0% 10 25.3 24.8 23.1 28.9 1.8
Loss%:丢包率;Snt:已发送数据包数;Last/Avg/Best/Wrst:平均/最小/最大延迟(ms);StDev:标准差(反映延迟稳定性)。
优势
- 实时监控,动态更新数据;
- 直观的丢包率和延迟统计;
- 支持生成报告(
-r选项)和输出格式(如 XML、JSON)。
不同工具的对比与选择
| 工具 | 权限要求 | 支持协议 | 特点 | 适用场景 |
|---|---|---|---|---|
traceroute |
可能需要 | ICMP/UDP/TCP | 经典工具,选项丰富 | 基础路径诊断,需详细选项控制 |
traceroute6 |
可能需要 | ICMPv6 | IPv6 专用,语法与 traceroute 一致 |
IPv6 网络环境 |
tracepath |
无需 | ICMP | 无需 root,自动调整参数 | 快速路径检查,普通用户 |
mtr |
无需 | ICMP/UDP/TCP | 实时监控,丢包率统计 | 深度网络分析,定位延迟/丢包 |
常见问题与解决思路
-
*
traceroute显示 ` `**- 原因:中间路由器禁用 ICMP 或防火墙过滤;
- 解决:尝试使用
traceroute -T(TCP 模式)或mtr(可绕过部分限制)。
-
mtr无法启动或权限不足- 原因:部分系统
mtr默认无执行权限; - 解决:使用
sudo mtr或安装mtr-packet(需 root 权限的高级功能)。
- 原因:部分系统
相关问答 FAQs
Q1: 为什么 traceroute 有时只能显示部分跳数,无法到达目标主机?
A1: 可能的原因包括:① 目标主机防火墙过滤了 ICMP 或 UDP 端口;② 中间某跳路由器配置了“ICMP 不可达”不返回消息;③ 网络存在路由环路或策略路由限制,可尝试使用 traceroute -T(TCP 模式)或 mtr 进一步排查,若仍无法解决,可能是目标网络主动隐藏路径信息。
Q2: mtr 和 traceroute 相比,优势是什么?为什么推荐用于网络故障排查?
A2: mtr 的核心优势在于“实时监控+统计”:① 动态更新每跳的延迟和丢包率,可直观观察网络波动;② 提供 Loss%、Avg、StDev 等统计指标,快速定位高延迟或丢包节点;③ 交互式界面支持持续追踪,适合分析间歇性网络问题,而 traceroute 仅单次探测,无法反映实时状态,在需要深度诊断(如游戏卡顿、视频通话延迟)时,mtr 能提供更全面的依据。
