菜鸟科技网

Linux追踪路由命令有哪些?

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

Linux追踪路由命令有哪些?-图1
(图片来源网络,侵删)

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 (目标主机)

每列含义:

Linux追踪路由命令有哪些?-图2
(图片来源网络,侵删)
  • 第1列:跳数(Hop);
  • 第2列:路由器 IP 地址(-n 选项下不解析域名);
  • 第3-5列:该跳的响应时间(单位:毫秒,3次探测结果)。

注意事项

  • 部分路由器可能禁用 ICMP 或 UDP 端口,导致 traceroute 无法获取中间跳信息;
  • 若目标主机防火墙过滤了 ICMP,可能显示 (无响应);
  • 需要 root 权限才能使用原始套接字(如 -I 选项)。

traceroute6 命令:IPv6 环境下的路由追踪

traceroute6traceroute 的 IPv6 版本,语法和选项与 traceroute 基本一致,仅目标主机需为 IPv6 地址。

示例

traceroute6 -n ipv6.google.com

输出格式与 traceroute 类似,但 IP 地址为 IPv6 格式(如 2404:6800:4004:832::200e)。

tracepath 命令:无需 root 的轻量级工具

tracepathtraceroute 的简化版,无需 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)是 tracerouteping 的增强版,结合了两者功能,实时显示每跳的丢包率、延迟抖动,更适合深度网络分析。

基本语法

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 实时监控,丢包率统计 深度网络分析,定位延迟/丢包

常见问题与解决思路

  1. *traceroute 显示 ` `**

    • 原因:中间路由器禁用 ICMP 或防火墙过滤;
    • 解决:尝试使用 traceroute -T(TCP 模式)或 mtr(可绕过部分限制)。
  2. mtr 无法启动或权限不足

    • 原因:部分系统 mtr 默认无执行权限;
    • 解决:使用 sudo mtr 或安装 mtr-packet(需 root 权限的高级功能)。

相关问答 FAQs

Q1: 为什么 traceroute 有时只能显示部分跳数,无法到达目标主机?
A1: 可能的原因包括:① 目标主机防火墙过滤了 ICMP 或 UDP 端口;② 中间某跳路由器配置了“ICMP 不可达”不返回消息;③ 网络存在路由环路或策略路由限制,可尝试使用 traceroute -T(TCP 模式)或 mtr 进一步排查,若仍无法解决,可能是目标网络主动隐藏路径信息。

Q2: mtrtraceroute 相比,优势是什么?为什么推荐用于网络故障排查?
A2: mtr 的核心优势在于“实时监控+统计”:① 动态更新每跳的延迟和丢包率,可直观观察网络波动;② 提供 Loss%AvgStDev 等统计指标,快速定位高延迟或丢包节点;③ 交互式界面支持持续追踪,适合分析间歇性网络问题,而 traceroute 仅单次探测,无法反映实时状态,在需要深度诊断(如游戏卡顿、视频通话延迟)时,mtr 能提供更全面的依据。

分享:
扫描分享到社交APP
上一篇
下一篇