一、traceroute介绍
1、基本介绍
在Linux系统中,traceroute 是一个常用的网络诊断命令,用于追踪数据包从源主机到目标主机所经过路由节点(每一跳)的路径。通过分析每一跳(Hop)的延迟和丢包情况,可以精准诊断网络连接问题(如延迟高、路由环路、防火墙拦截等)。
2、核心原理
traceroute 通过发送一系列数据包(默认使用UDP协议,端口从33434递增)并监控其路径,实现路由追踪。其核心逻辑基于数据包的TTL(Time-To-Live)机制:
1)发送第一个数据包时设置TTL=1,到达第一个路由器后TTL减为0,路由器返回 ICMP "超时"消息(Time Exceeded),记录第 1 跳路由;
2)发送第二个数据包时设置TTL=2,重复上述过程。
3)逐步增加TTL值(TTL=3,4...),直至数据包到达目标主机或达到最大跳数(默认30跳),目标返回 ICMP Port Unreachable(默认 UDP 协议)或 ICMP Echo Reply(ICMP 协议)。
4)对于无法响应的节点,连接状态将显示为 *,预设数据包大小是 60Bytes,探测30跳。
通过这一过程,Traceroute 会记录每一跳的IP地址和响应时间,绘制出完整的路径图。
3、常见用途
在网络诊断中,traceroute的用途非常广泛:
• 定位网络延迟:发现数据包在哪一跳耗时过长。
• 识别路径阻断:找出数据包无法到达目标的原因。
• 排查防火墙问题:检测防火墙是否错误拦截了数据包。
• 优化网络性能:分析路由选择是否合理。
二、traceroute安装
在大多数Linux发行版中,traceroute 工具默认没有安装。如果没有,你可以使用包管理器安装它,例如:
- 对于基于Debian的系统(如Ubuntu):
bash
sudo apt-get install traceroute
- 对于基于RPM的系统(如CentOS7/RHEL7):
bash
sudo yum install traceroute
- 对于较新的RHEL/CentOS 8及以上版本:
bash
sudo dnf install traceroute
三、traceroute使用
1、使用帮助
- 使用 --help 选项查询 traceroute 命令的帮助信息
bash
traceroute --help
2、基本用法
bash
traceroute [选项] 目标主机/IP
3、常见选项

四、traceroute使用实例
1、基本用法
- 默认使用UDP协议
bash
traceroute 223.5.5.5
traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets
1 bogon (192.168.10.2) 0.123 ms 0.101 ms 0.075 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
- 从输出结果中可以看到,traceroute命令首先会输出目标主机的IP地址和最大跳数(30),发送的数据包大小为60字节,然后每一行显示一个路由节点的信息。
- 例如,第一个路由节点的IP地址(192.168.10.2),主机名(bogon),三次ping探测的返回时间(0.123 ms,0.101 ms,0.075 ms)。
- 第 2-30 跳,输出均为 *,表示这些跳数对应的路由节点未返回响应。
- 出现连续* * *的原因是中间路由节点或网络策略拦截了追踪请求,无法返回响应。
2、使用TCP协议追踪
bash
traceroute -T -p 80 www.baidu.com
traceroute to www.baidu.com (110.242.70.57), 30 hops max, 60 byte packets
1 bogon (192.168.10.2) 0.092 ms 0.033 ms 0.030 ms
2 110.242.70.57 (110.242.70.57) 28.195 ms 27.508 ms 26.462 ms
3、禁用DNS反向解析
bash
traceroute -T -p 80 -n www.baidu.com
traceroute to www.baidu.com (110.242.69.21), 30 hops max, 60 byte packets
1 192.168.10.2 0.109 ms 0.120 ms 0.087 ms
2 110.242.69.21 28.930 ms 28.358 ms 29.610 ms
4、使用ICMP协议追踪
bash
traceroute -n -I www.baidu.com
traceroute to www.baidu.com (110.242.69.21), 30 hops max, 60 byte packets
1 192.168.10.2 0.096 ms 0.069 ms 0.057 ms
2 192.168.0.1 1.767 ms 2.012 ms 2.019 ms
3 192.168.1.1 2.643 ms 2.641 ms 2.630 ms
4 220.202.88.1 5.595 ms 5.596 ms 5.585 ms
5 * * *
6 * * *
7 * * *
8 110.242.66.170 27.867 ms * *
9 221.194.45.134 27.330 ms 27.011 ms 27.811 ms
10 * * *
11 * * *
12 * * *
13 110.242.69.21 32.532 ms 32.529 ms 32.514 ms
5、自定义最大跳数和超时追踪
bash
traceroute -m 20 -w 5 www.baidu.com
traceroute to www.baidu.com (110.242.69.21), 10 hops max, 60 byte packets
1 bogon (192.168.10.2) 0.038 ms 0.020 ms 0.063 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *