traceroute命令
用于显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况。默认数据包大小是60字节(IPv4)或80字节(IPv6),用户可另行设置。它与Windows下的tracert命令类似。
traceroute [option] [host] [packet len]
traceroute [选项] [主机名或IP] [数据包大小]
traceroute命令的参数选项及说明
-q <nqueries> 设置每一跳的探测包数量。默认是3
-I 使用ICMP ECHO探测,即ping
-n 直接使用IP地址而不使用主机名
-m 设置最大的跳教,默认为30
[root@cs6 ~]# yum install traceroute.x86_64 -y [root@cs6 ~]# traceroute www.wenyule.top traceroute to www.wenyule.top (213.232.105.22), 30 hops max, 60 byte packets # 域名 IP地址 最大30跳(次) 60字节数据包 1 10.0.0.2 (10.0.0.2) 0.445 ms 0.214 ms 0.348 ms # <==第一个同关 第1次时间 第2次 第3次 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * *^C
命令结果说明具体如下。
记录按序列号从1开始,每个记录就是一跳,每跳表示一个网关,我们看到每行有3个时间,单位是ms,其实就是-q的默认参数值为3。探测数据包向每个网关发送3个数据包之后,网关响应并返回的时间。
有时我们traceroute一台主机时,会看到有一些星号。出现这样的情况,可能是因为网络设备封掉或丢弃了返回的信息,所以我们得不到返回的时间。
有时在某一网关的延时比较长,这有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现了问题,不能解析主机名、域名时,也会有延时比较长的现象,这时可以加-n参数来避免DNS解析,以IP格式输出数据。
在局域网的不同网段之间,我们可以通过traceroute来排查问题所在,确定是主机的问题还是网关的问题。如果通过远程来访问某台服务器遇到问题时,用traceroute来追踪数据包所经过的网关,并提交给IDC服务商,这样也有助于解决问题。
加快查询时间
traceroute默认是使用UDP协议(受网络影响性能不太好),因此使用-1参数来调用icmp协议(ping命令使用的协议),若同时还使用-n参数,则不解析主机名:
[root@cs6 ~]# traceroute -In www.wenyule.top traceroute to www.wenyule.top (213.232.105.22), 30 hops max, 60 byte packets 1 10.0.0.2 0.089 ms 0.056 ms 0.034 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 * * * 14 * * * 15 * * * 16 * * * 17 * * * 18 * * * 19 * * * 20 * * * 21 * * * 22 * * * 23 * 213.232.105.22 203.477 ms 203.017 ms