Linux 路由追踪命令:traceroute

Linux 通过 traceroute 我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。 traceroute 通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备 traceroute 要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

在大多数情况下,我们会在linux主机系统下,直接执行命令行:

traceroute hostname

一、命令格式

traceroute [参数] [主机]

二、 命令功能

traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。

具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>…][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

三、 命令参数

-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 开启或关闭数据包的正确性检验。

例子:

[root@myvps ~]# traceroute 67.229.29.200
traceroute to 67.229.29.200 (67.229.29.200), 30 hops max, 60 byte packets
 1  172.22.62.200 (172.22.62.200)  14.671 ms  14.597 ms  14.567 ms
 2  172.22.61.48 (172.22.61.48)  12.515 ms  12.500 ms  12.473 ms
 3  lax-dc6-1-1.it7.net (66.165.226.121)  13.803 ms  13.803 ms  13.782 ms
 4  10.253.1.1 (10.253.1.1)  0.241 ms  0.239 ms  0.213 ms
 5  10.254.0.101 (10.254.0.101)  0.319 ms  0.449 ms  0.546 ms
 6  vpls.as35908.any2ix.coresite.com (206.72.210.19)  0.300 ms  0.362 ms  0.234 ms
 7  vlan54.br08.lax10.vpls.net (184.164.193.61)  0.867 ms  0.851 ms vlan11.br7.lax10.vpls.net (184.164.193.237)  0.998 ms
 8  vlan4.hr9.lax10.vpls.net (184.164.197.141)  2.336 ms  2.351 ms  8.832 ms
 9  67.229.29.200 (67.229.29.200)  0.879 ms  0.933 ms  0.893 ms