linux如何traceroute
- Linux
- 2025-07-09
- 4191
Linux系统中,traceroute是一个极为重要的网络诊断工具,它能够帮助用户追踪数据包从源主机到目标主机所经过的路由路径,通过分析每一跳(Hop)的延迟和丢包情况,可以精准诊断网络连接问题,如延迟高、路由环路、防火墙拦截等,以下是关于如何在Linux中使用traceroute命令的详细指南。
基本介绍
traceroute命令用于追踪数据包在网络上的传输路径,它默认发送的数据包大小是40字节(IPv4情况下),通过逐渐增加TTL(Time To Live,生存时间)值,发送一系列探测包,并监听来自中间路由器的ICMP超时消息,从而绘制出完整的路由路径。
安装与基本使用
安装traceroute
 
大多数Linux发行版都预装了traceroute命令,如果未安装,可以通过以下命令进行安装:
-  Debian/Ubuntu: sudo apt install traceroute 
-  CentOS/RHEL: sudo yum install traceroute 
-  Arch Linux: sudo pacman -S traceroute 
基本语法
traceroute [选项] 目标主机或IP
目标主机或IP是你想要追踪的目标地址。
基本实例
traceroute google.com
该命令将追踪到google.com的路径,并显示每个跳的IP地址和往返时间。
常用选项与参数
traceroute命令提供了多个选项,用于定制命令行为,以下是一些常用选项及其说明:
| 选项 | 说明 | 
|---|---|
| -4 | 强制使用IPv4 | 
| -6 | 强制使用IPv6 | 
| -d | 使用Socket层级的排错功能 | 
| -f first_ttl | 指定起始TTL值 | 
| -g gate | 通过指定网关路由数据包 | 
| -m max_ttl | 设置最大跳数 | 
| -n | 不将IP地址解析为域名,直接显示IP地址 | 
| -p port | 设置目标端口 | 
| -q nqueries | 设置每个跳的探测次数 | 
| -s src_addr | 指定发送数据包的源地址 | 
| -w MAX,HERE,NEAR | 设置等待响应的最大时间 | 
| -I | 使用ICMP ECHO进行追踪 | 
| -T | 使用TCP SYN进行追踪,默认端口为80 | 
实例详解
-  使用IPv4的 traceroute:traceroute -4 google.com 该命令指定使用IPv4进行追踪。 
-  使用IPv6的 traceroute: traceroute -6 google.com 该命令指定使用IPv6进行追踪。 
-  设置最大跳数: traceroute -m 5 google.com 该命令将最大跳数设置为5。 
-  设置每个跳的探测次数: traceroute -q 3 google.com 该命令将每个跳的探测次数设置为3。 
-  不将IP地址解析为域名: traceroute -n google.com 该命令在执行时不将IP地址解析为域名,直接显示IP地址,可以节省时间。 
-  设置目标端口: traceroute -p 80 google.com 该命令将目标端口设置为80。  
-  使用ICMP协议进行追踪: traceroute -I 8.8.8.8 该命令使用ICMP ECHO进行追踪。 
-  使用TCP SYN进行追踪: traceroute -T -p 80 8.8.8.8 该命令跟踪到某个Web服务(端口80)的路径,使用TCP SYN进行追踪。 
输出解读
traceroute命令的输出通常包括以下几列:
- 跳数(Hop):从1开始递增,表示数据包经过的路由器数量。
- 路由节点的IP地址和域名:如果可解析,会显示路由器的域名;否则,只显示IP地址。
- 往返时间(RTT):默认发送3个探测包,显示每个探测包的往返时间(单位为毫秒),如果某一跳超时或未响应,则显示。
示例输出
traceroute to google.com (172.217.10.46), 30 hops max, 60 byte packets 1 router.local (192.168.1.1) 1.234 ms 0.856 ms 0.764 ms 2 10.10.10.1 (10.10.10.1) 12.452 ms 11.523 ms 10.732 ms 3 4 216.58.202.202 (216.58.202.202) 28.437 ms 27.113 ms 26.831 ms ...
在输出中,第3跳显示为,表示该跳未收到响应,可能是防火墙丢弃了探测包或节点未回复。
典型应用场景
-  定位网络延迟问题: 
 观察哪一跳的RTT突然增加,可以判断出瓶颈节点,跨国路由拥堵可能导致某跳延迟显著增加。traceroute -n 8.8.8.8 
-  检测防火墙拦截: 
 若某跳后连续出现,可能是防火墙丢弃了ICMP/UDP包。traceroute -I -m 10 target.com 
-  绕过DNS解析问题: 
 直接使用IP地址进行追踪,可以避免因DNS故障导致的追踪失败。 traceroute -n 203.0.113.5 
-  对比不同协议路径: 
 某些网络可能对TCP/UDP/ICMP路径不同,需针对性测试。traceroute -T api.service.com # 使用TCP SYN traceroute -I api.service.com # 使用ICMP 
高级技巧与注意事项
-  权限要求: 
 使用ICMP或TCP探测时,可能需要root权限。sudo traceroute -I 10.20.30.40 
-  路径不对称问题: 
 网络中的往返路径可能不同,需结合反向追踪(从目标到源)进行分析。
-  使用 mtr工具:mtr结合了traceroute和ping的功能,可以实时监控路径质量。mtr -n 8.8.8.8 
-  隐私与安全: 
 部分企业网络会屏蔽traceroute探测,需遵守合规要求,输出中暴露的IP可能泄露内网结构,分享时需脱敏。
常见问题解答
Q1:为什么某些跳显示?
A1:可能的原因包括节点配置了防火墙丢弃探测包、网络拥塞导致响应超时等,可以尝试增加-w超时时间。
Q2:如何追踪IPv6地址?
A2:可以使用traceroute6命令或traceroute -6选项来追踪IPv6地址。
traceroute6 ipv6.google.com
 
  
			