traceroute命令进行路由跟踪

路由跟踪功能是用来识别一个设备到另一个设备的网络路径。在一个简单的网络上,这个网络路径可能只经过一个路由器,甚至一个都不经过。但是在复杂的网络中,数据包可能要经过数十个路由器才会到达最终目的地。在通信过程中,可以通过路由跟踪功能判断数据包传输的路径。

traceroute 命令用来检测发出数据包的主机到目标主机之间所经过的网关。它通过设置探测包的 TTL(存活时间)值,跟踪数据包到达目标主机所经过的网关,并监听来自网关 ICMP 的应答。

【实例】在主机 192.168.12.106 中,使用 traceroute 命令探测数据包到达目标 www.qq.com (http://www.qq.com) 所经过的路由信息。

1) 进行路由跟踪,执行命令如下:

root@kali:~# traceroute www.qq.com

输出信息如下:

traceroute to www.qq.com (125.39.52.26), 30 hops max, 60 byte packets
1  localhost (192.168.12.1)        0.297 ms  0.297 ms  0.336 ms
2  localhost (192.168.0.1)  0.971 ms  0.969 ms  0.964 ms
3  1.164.185.183.adsl-pool.sx.cn (183.185.164.1) 4.941 ms 5.173 ms 5.511 ms
4  157.28.26.218.internet.sx.cn (218.26.28.157) 4.554 ms 4.898 ms 5.463 ms
5  237.151.26.218.internet.sx.cn (218.26.151.237)  37.650 ms 85.135.26.218.router-switch.sx.cn (218.26.135.85)  15.346 ms 205.151.26.218.internet.sx.cn (218.26.151.205)  18.777 ms
6  219.158.15.214 (219.158.15.214)  36.378 ms  38.361 ms  38.319 ms
7  * * *
8  no-data (125.39.79.162)  16.932 ms no-data (125.39.79.234)  16.165 ms no-data (125.39.79.166)  16.766 ms
9  * * *
10  * * *
11  * * *
···  #省略其他信息

上述输出信息显示了跟踪到的路由地址信息。记录从序号 1 开始,每个记录就是一跳,而每一跳表示经过的一个网关。记录给出了每个网关对应的IP地址。

例如,经过的第 2 个网关的IP地址为 192.168.0.1。其中,为 *** 的记录表示可能被防火墙拦截的 ICMP 的返回信息。

2) 为了验证 traceroute 命令探测数据包,使用 Wireshark 捕获数据包进行查看,如图所示。

图中捕获的数据包的目标地址都为 192.168.12.106,数据包协议都为 ICMP,数据包的源 IP 地址为进行路由跟踪时所经过的网关地址。因此这些数据包都为路由返回主机 192.168.12.106 的 ICMP 包。