traceroute用于追踪网络路径,通过发送探测包并记录各跳响应时间,帮助定位延迟或中断;常用选项包括-I(ICMP)、-T(TCP)、-p(端口)、-n(不解析DNS)、-m(最大跳数)、-w(等待时间)、-q(探测次数);输出中*表示无响应,可能因防火墙或丢包;替代工具有tracepath和mtr。

在Linux系统中,traceroute 是一个非常实用的网络诊断工具,用于显示数据包从本地主机到达目标主机所经过的路由路径。它通过发送探测包并记录每一跳(hop)的响应时间,帮助我们了解网络连接的路径和潜在的延迟点。
traceroute 基本用法
在终端中输入以下命令即可开始跟踪路由:
traceroute example.com也可以使用IP地址:
traceroute 8.8.8.8执行后,你会看到类似以下的输出:
1 192.168.1.1 1.2 ms 1.0 ms 1.1 ms2 10.10.0.1 5.3 ms 5.1 ms 5.4 ms
3 203.0.113.6 12.7 ms 12.5 ms 12.8 ms
...
每一行代表一个网络节点(路由器),显示了该节点的IP地址、响应时间和三次探测的结果。
常用选项说明
traceroute 支持多种参数来调整行为,以下是一些常见且实用的选项:
- -I:使用ICMP ECHO请求(类似ping),某些网络环境下更易通过防火墙
- -T:使用TCP SYN包,适用于探测特定端口(如HTTP 80)
- -p:指定目标端口号,常与 -T 配合使用
- -n:不进行DNS反向解析,直接显示IP地址,加快输出速度
- -m:设置最大跳数(默认通常是30)
- -w:设置等待每个回复的最长时间(秒)
- -q:设置每跳发送的探测包数量(默认3个)
例如,使用TCP方式跟踪到目标的80端口:
traceroute -T -p 80 example.com查看路径中的问题节点
在输出中,如果某跳显示 *,表示该节点没有返回响应,可能是因为:
- 路由器配置为不响应ICMP或TCP探测
- 防火墙或安全策略屏蔽了探测包
- 网络拥塞或丢包
连续多跳都超时,可能意味着路径中断或目标不可达。结合延迟数值变化,可以判断网络延迟出现在哪一段。
替代工具:tracepath 和 mtr
如果系统中没有 traceroute,可以尝试使用 tracepath,它是iputils的一部分,无需特权即可运行:
tracepath example.com更强大的工具是 mtr,它结合了 ping 和 traceroute 的功能,提供实时动态视图:
mtr example.com 基本上就这些。掌握 traceroute 能帮你快速定位网络延迟或中断的位置,是运维和日常排查中非常有用的工具。











