Linux追踪路由命令有哪些?

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

linux追踪路由命令
(图片来源网络,侵删)

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追踪路由命令
(图片来源网络,侵删)
  • 第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可能需要ICMPv6IPv6 专用,语法与 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 能提供更全面的依据。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/423696.html<

(0)
运维的头像运维
上一篇2025-10-25 11:59
下一篇 2025-10-25 12:05

相关推荐

  • Linux设置网络命令有哪些常用?

    Linux作为开源操作系统,其网络配置命令丰富且灵活,掌握这些命令对于系统管理员和开发者至关重要,以下将详细介绍Linux中常用的网络设置命令,包括查看网络状态、配置IP地址、路由管理、DNS配置以及网络服务控制等内容,并通过表格形式对比部分命令的用法,最后附上相关FAQs,在Linux中,查看网络状态是基础操……

    2025-11-18
    0
  • 如何用cmd命令查看路由表?

    在Windows操作系统中,命令提示符(CMD)是一个强大的工具,它允许用户通过输入特定的命令来执行各种网络管理任务,其中查看和诊断路由信息是常见需求,路由决定了网络数据包从源头到目的地的传输路径,理解当前系统的路由表有助于排查网络连接问题、优化网络配置或实现特定的网络策略,本文将详细介绍如何使用CMD命令查看……

    2025-11-18
    0
  • mac路由跟踪命令怎么用?

    在macOS系统中,路由跟踪(也称为路径探测)是一项用于诊断网络连接问题的重要技术,它能够显示数据包从源主机到目标主机所经过的路径节点(路由器)以及每跳的延迟和丢包情况,通过分析这些信息,用户可以快速定位网络故障点,如链路中断、高延迟或路由错误等,macOS提供了多种命令行工具来实现路由跟踪功能,其中最常用的是……

    2025-11-17
    0
  • 如何查询445端口开放状态?

    在网络安全管理和系统运维中,445端口是一个需要重点关注的目标端口,因为它与SMB(Server Message Block)协议紧密相关,常被用于Windows系统之间的文件共享和打印机共享,由于该协议的历史漏洞(如永恒之蓝漏洞),445端口也成为恶意软件传播和网络攻击的主要入口之一,掌握445端口的查询方法……

    2025-11-17
    0
  • adb 如何查看端口占用与进程信息?

    在Android开发和系统调试过程中,adb(Android Debug Bridge)作为核心工具,提供了丰富的命令来管理设备、调试应用及监控系统状态,查看端口占用情况是排查网络问题、服务冲突或调试应用通信的关键操作,本文将详细解析adb查看端口的相关命令,包括基础用法、进阶技巧及实际应用场景,并辅以表格对比……

    2025-11-17
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注