Traceroute 是一种网络诊断工具,在 Linux 系统中广泛用于故障排除。它旨在显示数据包从运行 traceroute 的系统到指定目标系统或网站的路径。它用于识别路由问题、提供延迟测量,并在数据包通过 Internet 时弄清楚网络结构。
沿路由的每次跳转都会测试多次(默认值为 3,但可以更改),并显示每个数据包的往返时间。如果某些数据包无法到达目的地,traceroute 可以帮助诊断故障发生的位置。
在 Linux 中跟踪路由可以通过执行命令来实现,该命令允许您发现 Internet 协议数据包在到达目的地时遵循的路由。traceroute
$ traceroute www.example.com
我来用快递送货的例子帮你理解 traceroute 的工作原理:
假设你从北京寄快递到上海的朋友家,但快递中途要经过多个中转站:
-
你寄出快递时在包裹上标记"有效期=1天"
-
第一个中转站(天津)收到后发现有效期只剩0天,就会:
-
销毁包裹
-
给你发回一条短信:"包裹在天津超时了"
-
-
你记录下天津站的响应时间(比如0.5ms)
-
接着你重新寄出包裹,标记"有效期=2天"
-
这次包裹能到达第二个中转站(济南),同样会收到超时通知
-
重复这个过程直到包裹到达上海朋友家
???? 执行 traceroute www.example.com
的输出示例:
复制
1 192.168.1.1 (路由器) 1.234 ms 1.456 ms 1.567 ms 2 61.128.192.1 (广州电信) 5.678 ms 5.712 ms 5.801 ms 3 202.97.12.34 (骨干网节点) 12.345 ms 12.401 ms 12.512 ms ... 10 203.0.113.5 (目标服务器) 38.901 ms 39.012 ms 39.123 ms
???? 关键点解析:
-
每行代表一个网络节点(路由器/服务器)
-
三个时间值对应三次探测的往返延迟
-
星号(*) 表示该次探测未得到响应
-
延迟突增的位置往往暗示网络瓶颈
???? 实用技巧:
-
用
-I
参数使用ICMP协议(类似ping)traceroute -I baidu.com
-
遇到星号时尝试增加探测次数:
traceroute -q 5 github.com
-
限制最大跳数(适合内网排查):
traceroute -m 10 192.168.0.100
⚠️ 注意:某些网络设备会屏蔽traceroute探测,这时候会出现连续星号,并不一定代表网络故障。