您的位置:

深入了解linux路由跟踪

一、基础知识

路由跟踪(Routing Trace)是用来追踪IP数据包在网络中的传输状态的一种机制,可以帮助我们找到网络中发生故障的位置。在linux操作系统中,路由跟踪是通过iproute2工具包来实现的。

路由跟踪可以追踪IP数据包在整个路由路径中的转发情况,我们可以通过路由跟踪来确定数据包是被丢弃还是被正确转发,从而快速排查网络故障。

下面是一些常用的路由跟踪命令:

traceroute -I -n -p 80 www.example.com
tracepath -n -m 5 -p 80 www.example.com
mtr www.example.com

二、使用traceroute进行路由跟踪

traceroute是一个非常常用的路由跟踪工具,它可以帮助我们了解IP在网络中的传输情况。下面我们来看一个例子:

traceroute -I -n -p 80 www.example.com

这个命令的作用是使用ICMP协议进行路由跟踪,目标IP为www.example.com,目标端口为80。它将逐一显示IP数据包从本机到目标主机的路由路径。其中,-I参数表示使用ICMP协议,-n参数表示不需要将IP地址解析为主机名,-p参数表示指定目标端口。

执行这个命令后,我们可以看到如下输出:

 1  192.168.1.1 (192.168.1.1)  1.112 ms  1.104 ms  1.118 ms
 2  202.120.166.169 (202.120.166.169)  9.688 ms  9.686 ms  9.674 ms
 3  202.120.224.170 (202.120.224.170)  13.853 ms  14.281 ms  14.538 ms
 4  202.120.224.130 (202.120.224.130)  15.309 ms  15.305 ms  15.286 ms
 5  202.120.224.69 (202.120.224.69)  14.935 ms  14.936 ms  14.943 ms
 6  101.4.116.102 (101.4.116.102)  30.500 ms  30.537 ms  30.606 ms
 7  101.4.117.14 (101.4.117.14)  30.257 ms  30.235 ms  30.237 ms
 8  101.4.120.70 (101.4.120.70)  35.136 ms  35.202 ms  35.179 ms
 9  * * *

每一行的前面有一个数字,表示数据包从源地址到目标地址经过的跳数。后面跟着的是一个地址,表示经过该跳的下一个设备的IP地址。再后面是三个时间值,表示三次从本机发送数据包到目标设备的响应时间。最后一行表示目标设备无法响应。

三、使用tracepath进行路由跟踪

tracepath是另外一个常用的路由跟踪工具,与traceroute相比,它的输出更简洁。

tracepath -n -m 5 -p 80 www.example.com

这个命令的作用是使用默认的UDP协议进行路由跟踪,目标IP为www.example.com,目标端口为80,最大跳数为5。它将显示从本机到目标主机经过的所有跳数,以及每个跳数经过的时间。

执行这个命令后,我们可以看到如下输出:

 1:  192.168.1.1                                        1.227ms pmtu 1500
 1:  202.120.166.169                                     11.719ms
 2:  202.120.224.170                                     15.854ms
 3:  202.120.224.130                                     15.416ms
 4:  202.120.224.69                                      18.615ms
 5:  101.4.116.102                                       31.194ms
     Resume: pmtu 1500

从这个输出中,我们可以看到从本机到目标主机的所有跳数,以及每个跳数所需的时间。第一行中的pmtu 1500表示该路径的MTU值为1500字节,Resume表示该数据包的响应时间。

四、使用mtr进行路由跟踪

mtr是一个功能非常强大的路由跟踪工具,它可以实时显示路由跟踪的结果,并且可以进行带宽测试。

mtr www.example.com

这个命令的作用是使用UDP协议进行路由跟踪,目标IP为www.example.com。它将绘制一个交互式的图表,显示到目标主机的路由路径,以及每个路径经过的时间和可达性。

执行这个命令后,我们可以看到如下输出:

My traceroute  [v0.85]
(linux4u)                                        Tue Oct  6 00:39:47 2020
Resolver: Shared to [email protected]
Destination: www.example.com (www.example.com)
Packets: Sent = 30, Received = 30, Lost = 0 (0% loss)
...
[中间省略部分输出]
...
Name or service not known

从这个输出中,我们可以看到每个路径经过的时间和可达性,以及每个路径的带宽使用率。

五、总结

本文介绍了在linux系统中使用traceroute、tracepath和mtr进行路由跟踪的方法。通过这些工具,在排查网络故障时,我们可以快速定位到故障点,提高排障效率。