☰
Linux traceroute 命令详解:Linux Command 仓库中的路由追踪实战指南
2026/10/3 2:23:59 网站建设 项目流程
  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

traceroute是 Linux 网络排障中定位"数据包走到哪里、卡在哪里"的核心工具,本文以 Linux Command 仓库中的 traceroute.md 为基础,完整讲解其语法、选项、输出解读与常见排障场景,并结合仓库中 ping、tracepath、mtr 等网络诊断文档,帮助你建立一套从连通性测试到逐跳路由分析的完整排障思路。

traceroute 是什么:一条命令看清数据包的网络旅程

traceroute 命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是 40 字节。

通过 traceroute 我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

它的工作原理基于 IP 报文头中的 TTL(Time To Live,存活数值)字段:数据包每经过一个路由器,TTL 就减 1,当 TTL 减到 0 时,路由器会丢弃该包并向源地址回送一个 ICMP 超时报文。traceroute 正是利用这一点,依次将探测包的 TTL 从 1 递增,从而让每一跳的路由器都"报一次到"——你看到的每一行输出,就是数据包沿途经过的一个网关节点。

traceroute 通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备 traceroute 要测 3 次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其 IP 地址。

在 Linux Command 仓库中,traceroute 被归类在 README.md 的"网络通讯"分类下,与 ping、netstat、tcpdump 等命令并列,是网络诊断工具链中定位"路由路径与瓶颈"的关键一环。

语法与参数

traceroute 的基本语法非常简单:

traceroute(选项)(参数)
组成说明
选项控制探测方式、TTL 范围、输出格式等行为,见下文选项详解
参数主机:指定目的主机 IP 地址或主机名,是唯一必填参数

例如追踪到www.58.com的路径:

traceroute www.58.com

选项详解:从探测方式到输出格式的全面控制

traceroute 提供的选项覆盖了探测协议、TTL 范围、网络界面、输出格式、超时控制等多个维度,完整选项及含义如下:

-d:使用 Socket 层级的排错功能; -f<存活数值>:设置第一个检测数据包的存活数值 TTL 的大小; -F:设置勿离断位; -g<网关>:设置来源路由网关,最多可设置 8 个; -i<网络界面>:使用指定的网络界面送出数据包; -I:使用 ICMP 回应取代 UDP 资料信息; -m<存活数值>:设置检测数据包的最大存活数值 TTL 的大小; -n:直接使用 IP 地址而非主机名称; -p<通信端口>:设置 UDP 传输协议的通信端口; -r:忽略普通的 Routing Table,直接将数据包送到远端主机上。 -s<来源地址>:设置本地主机送出数据包的 IP 地址; -t<服务类型>:设置检测数据包的 TOS 数值; -v:详细显示指令的执行过程; -w<超时秒数>:设置等待远端主机回报的时间; -x:开启或关闭数据包的正确性检验。

结合仓库文档与使用场景,几个高频选项可以这样理解:

  • -m<存活数值>:限定最大探测跳数。默认情况下 traceroute 最多探测 30 跳,用该选项可缩减探测范围,加快诊断速度,例如-m 10表示只探测前 10 跳。
  • -n:直接以 IP 地址输出,跳过 DNS 反向解析。当 DNS 解析缓慢或故障导致结果迟迟不出现时,-n是首选加速手段。
  • -I:默认 traceroute 使用 UDP 报文探测,-I将其切换为 ICMP Echo 请求,常用于穿越只放行 ICMP 的防火墙场景。
  • -i<网络界面>:在多网卡主机上指定发包的网络接口,例如-i eth0。
  • -p<通信端口>:指定 UDP 探测报文使用的目标端口,默认通常为 33434 起递增,改变端口可以绕过对特定端口的过滤策略。
  • -w<超时秒数>:设置等待远端主机回报的时间,在网络丢包严重时适当调大超时值,避免误判为不可达。
  • -s<来源地址>:指定本地主机送出数据包的源 IP,适用于多 IP 主机需要以特定地址对外探测的场景。
  • -f<存活数值>:从指定的 TTL 值开始探测,适合已知前几跳无意义时跳过它们直接看后续路径。

读懂 traceroute 的输出:逐跳解读网关与往返时延

以文档中的完整实例为例,执行:

traceroute www.58.com

典型输出如下:

traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets 1 unknown (192.168.2.1) 3.453 ms 3.801 ms 3.937 ms 2 221.6.45.33 (221.6.45.33) 7.768 ms 7.816 ms 7.840 ms 3 221.6.0.233 (221.6.0.233) 13.784 ms 13.827 ms 221.6.9.81 (221.6.9.81) 9.758 ms 4 221.6.2.169 (221.6.2.169) 11.777 ms 122.96.66.13 (122.96.66.13) 34.952 ms 221.6.2.53 (221.6.2.53) 41.372 ms 5 219.158.96.149 (219.158.96.149) 39.167 ms 39.210 ms 39.238 ms 6 123.126.0.194 (123.126.0.194) 37.270 ms 123.126.0.66 (123.126.0.66) 37.163 ms 37.441 ms 7 124.65.57.26 (124.65.57.26) 42.787 ms 42.799 ms 42.809 ms 8 61.148.146.210 (61.148.146.210) 30.176 ms 61.148.154.98 (61.148.154.98) 32.613 ms 32.675 ms 9 202.106.42.102 (202.106.42.102) 44.563 ms 44.600 ms 44.627 ms 10 210.77.139.150 (210.77.139.150) 53.302 ms 53.233 ms 53.032 ms 11 211.151.104.6 (211.151.104.6) 39.585 ms 39.502 ms 39.598 ms 12 211.151.111.30 (211.151.111.30) 35.161 ms 35.938 ms 36.005 ms

解读要点如下:

  • 第一行是探测概要:目的主机www.58.com解析为211.151.111.30,最大 30 跳(30 hops max),每个探测包 40 字节(40 byte packets)。
  • 记录按序列号从 1 开始,每个纪录就是一跳,每跳表示一个网关。第 1 跳通常是本机所在网段的网关(如文档示例中的192.168.2.1),之后的每一跳依次是沿途的路由器。
  • 我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用traceroute -q 4 www.58.com,表示向每个网关发送 4 个数据包,此时每行会出现 4 个时间值。
  • 部分行中三个时间对应的 IP 不完全相同(如第 3、4 行),说明这些路由器采用了多路径负载均衡(ECMP),同一目标的不同探测包走了不同链路,这是正常现象而非故障。

常见输出现象与排障技巧

星号(* * *)输出:防火墙过滤或节点不响应

有时我们 traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了 ICMP 的返回信息,所以我们得不到什么相关的数据包返回数据。

值得注意的是,星号出现的位置不一定代表网络真的中断——很多核心路由器会限制或完全不响应 ICMP 超时报文,但它们依然在正常转发数据。如果星号之后仍有后续跳数输出,说明路径并未断裂;只有当目的主机前的连续多跳全部为星号且最终无法到达时,才需要重点排查。

某一跳延时异常:拥塞、物理链路或 DNS 解析问题

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台 DNS 出现问题时,不能解析主机名、域名时,也会有时延长的现象;您可以加-n参数来避免 DNS 解析,以 IP 格式输出数据。这样既能看到原始 IP 路径,又能排除 DNS 反向解析耗时对结果的干扰。

典型排障场景

如果在局域网中的不同网段之间,我们可以通过 traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到 traceroute 追踪数据包所经过的网关,提交 IDC 服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC 服务商也不可能帮助我们解决。

也就是说,traceroute 的价值在于定位故障段:把"网络整体不可用"细化到"具体哪一跳开始异常",从而区分问题属于本机网段、运营商骨干、还是目标服务器侧,为后续更换链路、联系服务商或调整业务部署提供依据。

跳数设置与控制探测行为的实战组合

跳数设置(-m)

当目的主机距离较近、无需探测完整 30 跳时,用-m限制最大跳数可以显著缩短诊断时间:

[root@localhost ~]# traceroute -m 10 www.baidu.com traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets 1 192.168.74.2 (192.168.74.2) 1.534 ms 1.775 ms 1.961 ms 2 211.151.56.1 (211.151.56.1) 0.508 ms 0.514 ms 0.507 ms 3 211.151.227.206 (211.151.227.206) 0.571 ms 0.558 ms 0.550 ms 4 210.77.139.145 (210.77.139.145) 0.708 ms 0.729 ms 0.785 ms 5 202.106.42.101 (202.106.42.101) 7.978 ms 8.155 ms 8.311 ms 6 bt-228-037.bta.net.cn (202.106.228.37) 772.460 ms bt-228-025.bta.net.cn (202.106.228.25) 2.152 ms 61.148.154.97 (61.148.154.97) 772.107 ms 7 124.65.58.221 (124.65.58.221) 4.875 ms 61.148.146.29 (61.148.146.29) 2.124 ms 124.65.58.221 (124.65.58.221) 4.854 ms 8 123.126.6.198 (123.126.6.198) 2.944 ms 61.148.156.6 (61.148.156.6) 3.505 ms 123.126.6.198 (123.126.6.198) 2.885 ms 9 * * * 10 * * *

注意该输出中第 6 跳出现了772.460 ms的异常高时延,而同跳其他探测只有约 2 ms,属于典型的瞬时拥塞或负载均衡导致的抖动;第 9、10 跳全部为星号,则是后续节点不响应 ICMP 超时报文的常见表现。

其它常用实例

文档中给出的其它高频用法可以直接复制使用:

traceroute -m 10 www.baidu.com # 跳数设置 traceroute -n www.baidu.com # 显示IP地址,不查主机名 traceroute -p 6888 www.baidu.com # 探测包使用的基本UDP端口设置6888 traceroute -q 4 www.baidu.com # 把探测包的个数设置为值4 traceroute -r www.baidu.com # 绕过正常的路由表,直接发送到网络相连的主机 traceroute -w 3 www.baidu.com # 把对外发探测包的等待响应时间设置为3秒

几个命令的组合逻辑如下:-n负责提速(跳过 DNS 解析)、-q 4负责增加每跳探测样本以获得更稳定的平均时延、-p 6888负责更换探测端口以绕过端口过滤、-w 3负责放宽超时等待,遇到复杂网络时可按需组合使用。

与仓库中其他网络诊断工具的协同使用

Linux Command 仓库还收录了多个与 traceroute 定位目标相近的命令,理解它们的分工能让排障更高效:

工具定位仓库文档
ping测试主机之间网络的连通性(ICMP 协议),确认目标是否可达ping.md
traceroute追踪数据包到主机间的路径,定位每一跳traceroute.md
tracepath追踪并显示报文到达目的主机所经过的路由信息,无需 root 权限即可使用tracepath.md
mtr结合 traceroute 和 ping 的功能,持续探测每一跳并统计丢包率与时延mtr.md
hping3可构造各类数据包进行防火墙测试,文档中专门提到可用于测试防火墙是否支持 traceroutehping3.md

推荐的排障顺序是:先用ping判断目标是否可达,再用traceroute(或免 root 的tracepath)定位路径中具体卡在哪一跳,最后可用mtr做持续观测,统计各跳的丢包率与平均时延,判断故障是瞬时波动还是持续性的链路质量问题。此外,traceroute相关文档与索引也被打包进 dist/data.json,开发者可以通过 npm 包linux-command或 CDN 直接引用这些 Markdown 内容,将路由追踪的知识整合进自己的运维工具或速查手册中。

小结

traceroute 的核心能力可以概括为三句话:利用 TTL 逐跳递增探测出完整路径、每跳三次探测提供往返时延样本、星号与异常时延提示防火墙策略与链路质量。结合本文的选项详解与排障场景,你可以在局域网段隔离、远程服务不可达、运营商链路异常等实际问题中快速定位故障段,并将排查结论(如某跳网关时延异常)作为与 IDC 或网络服务商沟通的依据。

  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载
上一篇:5分钟备份十年QQ空间说说,GetQzonehistory让你彻底告别数据丢失焦虑
下一篇:一句话备份全部QQ说说:免费开源工具GetQzonehistory完整上手指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询