Linux命令每天必学(55)之traceroute命令
关于linuxtraceroute命令的相关知识介绍如下所示:
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MSWindows中为tracert。traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
在大多数情况下,我们会在linux主机系统下,直接执行命令行:
traceroutehostname
而在Windows系统下是执行tracert的命令:
tracerthostname
1.命令格式:
traceroute[参数][主机]
2.命令功能:
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
具体参数格式:traceroute[-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]
3.命令参数:
-d使用Socket层级的排错功能。
-f设置第一个检测数据包的存活数值TTL的大小。
-F设置勿离断位。
-g设置来源路由网关,最多可设置8个。
-i使用指定的网络界面送出数据包。
-I使用ICMP回应取代UDP资料信息。
-m设置检测数据包的最大存活数值TTL的大小。
-n直接使用IP地址而非主机名称。
-p设置UDP传输协议的通信端口。
-r忽略普通的RoutingTable,直接将数据包送到远端主机上。
-s设置本地主机送出数据包的IP地址。
-t设置检测数据包的TOS数值。
-v详细显示指令的执行过程。
-w设置等待远端主机回报的时间。
-x开启或关闭数据包的正确性检验。
4.使用实例:
实例1:traceroute用法简单、最常用的用法
命令:
traceroutewww.baidu.com
输出:
[root@localhost~]#traceroutewww.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets
1 192.168.74.2(192.168.74.2) 2.606ms 2.771ms 2.950ms
2 211.151.56.57(211.151.56.57) 0.596ms 0.598ms 0.591ms
3 211.151.227.206(211.151.227.206) 0.546ms 0.544ms 0.538ms
4 210.77.139.145(210.77.139.145) 0.710ms 0.748ms 0.801ms
5 202.106.42.101(202.106.42.101) 6.759ms 6.945ms 7.107ms
6 61.148.154.97(61.148.154.97) 718.908ms*bt-228-025.bta.net.cn(202.106.228.25) 5.177ms
7 124.65.58.213(124.65.58.213) 4.343ms 4.336ms 4.367ms
8 202.106.35.190(202.106.35.190) 1.795ms61.148.156.138(61.148.156.138) 1.899ms 1.951ms
9 ***
30 ***
[root@localhost~]#
说明:
记录按序列号从1开始,每个纪录就是一跳,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用traceroute-q4www.58.com,表示向每个网关发送4个数据包。
有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。
如果在局域网中的不同网段之间,我们可以通过traceroute来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
实例2:跳数设置
命令:
traceroute-m10www.baidu.com
输出:
[root@localhost~]#traceroute-m10www.baidu.com
traceroutetowww.baidu.com(61.135.169.105),10hopsmax,40bytepackets
1 192.168.74.2(192.168.74.2) 1.534ms 1.775ms 1.961ms
2 211.151.56.1(211.151.56.1) 0.508ms 0.514ms 0.507ms
3 211.151.227.206(211.151.227.206) 0.571ms 0.558ms 0.550ms
4 210.77.139.145(210.77.139.145) 0.708ms 0.729ms 0.785ms
5 202.106.42.101(202.106.42.101) 7.978ms 8.155ms 8.311ms
6 bt-228-037.bta.net.cn(202.106.228.37) 772.460msbt-228-025.bta.net.cn(202.106.228.25) 2.152ms61.148.154.97(61.148.154.97) 772.107ms
7 124.65.58.221(124.65.58.221) 4.875ms61.148.146.29(61.148.146.29) 2.124ms124.65.58.221(124.65.58.221) 4.854ms
8 123.126.6.198(123.126.6.198) 2.944ms61.148.156.6(61.148.156.6) 3.505ms123.126.6.198(123.126.6.198) 2.885ms
9 ***
10 ***
[root@localhost~]#
说明:
实例3:显示IP地址,不查主机名
命令:
traceroute-nwww.baidu.com
输出:
[root@localhost~]#traceroute-nwww.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets
1 211.151.74.2 5.430ms 5.636ms 5.802ms
2 211.151.56.57 0.627ms 0.625ms 0.617ms
3 211.151.227.206 0.575ms 0.584ms 0.576ms
4 210.77.139.145 0.703ms 0.754ms 0.806ms
5 202.106.42.101 23.683ms 23.869ms 23.998ms
6 202.106.228.37 247.101ms**
7 61.148.146.29 5.256ms124.65.58.213 4.386ms 4.373ms
8 202.106.35.190 1.610ms61.148.156.138 1.786ms61.148.3.34 2.089ms
9 ***
30 ***
[root@localhost~]#traceroutewww.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets
1 211.151.74.2(211.151.74.2) 4.671ms 4.865ms 5.055ms
2 211.151.56.57(211.151.56.57) 0.619ms 0.618ms 0.612ms
3 211.151.227.206(211.151.227.206) 0.620ms 0.642ms 0.636ms
4 210.77.139.145(210.77.139.145) 0.720ms 0.772ms 0.816ms
5 202.106.42.101(202.106.42.101) 7.667ms 7.910ms 8.012ms
6 bt-228-025.bta.net.cn(202.106.228.25) 2.965ms 2.440ms61.148.154.97(61.148.154.97) 431.337ms
7 124.65.58.213(124.65.58.213) 5.134ms 5.124ms 5.044ms
8 202.106.35.190(202.106.35.190) 1.917ms 2.052ms 2.059ms
9 ***
30 ***
[root@localhost~]#
说明:
实例4:探测包使用的基本UDP端口设置6888
命令:
traceroute-p6888www.baidu.com
输出:
[root@localhost~]#traceroute-p6888www.baidu.com
traceroutetowww.baidu.com(220.181.111.147),30hopsmax,40bytepackets
1 211.151.74.2(211.151.74.2) 4.927ms 5.121ms 5.298ms
2 211.151.56.1(211.151.56.1) 0.500ms 0.499ms 0.509ms
3 211.151.224.90(211.151.224.90) 0.637ms 0.631ms 0.641ms
4 ***
5 220.181.70.98(220.181.70.98) 5.050ms 5.313ms 5.596ms
6 220.181.17.94(220.181.17.94) 1.665ms!X**
[root@localhost~]#
说明:
实例5:把探测包的个数设置为值4
命令:
traceroute-q4www.baidu.com
输出:
[root@localhost~]#traceroute-q4www.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets
1 211.151.74.2(211.151.74.2) 40.633ms 40.819ms 41.004ms 41.188ms
2 211.151.56.57(211.151.56.57) 0.637ms 0.633ms 0.627ms 0.619ms
3 211.151.227.206(211.151.227.206) 0.505ms 0.580ms 0.571ms 0.569ms
4 210.77.139.145(210.77.139.145) 0.753ms 0.800ms 0.853ms 0.904ms
5 202.106.42.101(202.106.42.101) 7.449ms 7.543ms 7.738ms 7.893ms
6 61.148.154.97(61.148.154.97) 316.817msbt-228-025.bta.net.cn(202.106.228.25) 3.695ms 3.672ms*
7 124.65.58.213(124.65.58.213) 3.056ms 2.993ms 2.960ms61.148.146.29(61.148.146.29) 2.837ms
8 61.148.3.34(61.148.3.34) 2.179ms 2.295ms 2.442ms202.106.35.190(202.106.35.190) 7.136ms
9 ****
30 ****
[root@localhost~]#
说明:
实例6:绕过正常的路由表,直接发送到网络相连的主机
命令:
traceroute-rwww.baidu.com
输出:
[root@localhost~]#traceroute-rwww.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets
connect:网络不可达
[root@localhost~]#
说明:
实例7:把对外发探测包的等待响应时间设置为3秒
命令:
traceroute-w3www.baidu.com
输出:
[root@localhost~]#traceroute-w3www.baidu.com
traceroutetowww.baidu.com(61.135.169.105),30hopsmax,40bytepackets
1 211.151.74.2(211.151.74.2) 2.306ms 2.469ms 2.650ms
2 211.151.56.1(211.151.56.1) 0.621ms 0.613ms 0.603ms
3 211.151.227.206(211.151.227.206) 0.557ms 0.560ms 0.552ms
4 210.77.139.145(210.77.139.145) 0.708ms 0.761ms 0.817ms
5 202.106.42.101(202.106.42.101) 7.520ms 7.774ms 7.902ms
6 bt-228-025.bta.net.cn(202.106.228.25) 2.890ms 2.369ms61.148.154.97(61.148.154.97) 471.961ms
7 124.65.58.221(124.65.58.221) 4.490ms 4.483ms 4.472ms
8 123.126.6.198(123.126.6.198) 2.948ms61.148.156.6(61.148.156.6) 7.688ms 7.756ms
9 ***
30 ***
[root@localhost~]#
说明:
Traceroute的工作原理:
Traceroute最简单的基本用法是:traceroutehostname
Traceroute程序的设计是利用ICMP及IPheader的TTL(TimeToLive)栏位(field)。首先,traceroute送出一个TTL是1的IPdatagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMPtimeexceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute再送出另一个TTL是2的datagram,发现第2个路由器......traceroute每次将送出的datagram的TTL加1来发现另一个路由器,这个重复的动作一直持续到某个datagram抵达目的地。当datagram到达目的地后,该主机并不会送回ICMPtimeexceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?
Traceroute在送出UDPdatagrams到目的地时,它所选择送达的portnumber是一个一般应用程序都不会用的号码(30000以上),所以当此UDPdatagram到达目的地后该主机会送回一个「ICMPportunreachable」的消息,而当traceroute收到这个消息时,便知道目的地已经到达了。所以traceroute在Server端也是没有所谓的Daemon程式。
Traceroute提取发ICMPTTL到期消息设备的IP地址并作域名解析。每次,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及IP地址,三个包每次来回所花时间。
windows之tracert:
格式:
tracert[-d][-hmaximum_hops][-jhost-list][-wtimeout]target_name
参数说明:
tracert[-d][-hmaximum_hops][-jcomputer-list][-wtimeout]target_name
该诊断实用程序通过向目的地发送具有不同生存时间(TL)的Internet控制信息协议(CMP)回应报文,以确定至目的地的路由。路径上的每个路由器都要在转发该ICMP回应报文之前将其TTL值至少减1,因此TTL是有效的跳转计数。当报文的TTL值减少到0时,路由器向源系统发回ICMP超时信息。通过发送TTL为1的第一个回应报文并且在随后的发送中每次将TTL值加1,直到目标响应或达到最大TTL值,Tracert可以确定路由。通过检查中间路由器发发回的ICMP超时(imeExceeded)信息,可以确定路由器。注意,有些路由器“安静”地丢弃生存时间(TLS)过期的报文并且对tracert无效。
参数:
-d指定不对计算机名解析地址。
-hmaximum_hops指定查找目标的跳转的最大数目。
-jcomputer-list指定在computer-list中松散源路由。
-wtimeout等待由timeout对每个应答指定的毫秒数。
target_name目标计算机的名称。
实例:
C:\Users\Administrator>tracertwww.58.com
Tracingroutetowww.58.com[221.187.111.30]
overamaximumof30hops:
1 1ms 1ms 1ms 10.58.156.1
2 1ms <1ms <1ms 10.10.10.1
3 1ms 1ms 1ms 211.103.193.129
4 2ms 2ms 2ms 10.255.109.129
5 1ms 1ms 3ms 124.205.98.205
6 2ms 2ms 2ms 124.205.98.253
7 2ms 6ms 1ms 202.99.1.125
8 5ms 6ms 5ms 118.186.0.113
9 207ms * * 118.186.0.106
10 8ms 6ms 11ms 124.238.226.201
11 6ms 7ms 6ms 219.148.19.177
12 12ms 12ms 16ms 219.148.18.117
13 14ms 17ms 16ms 219.148.19.125
14 13ms 13ms 12ms 202.97.80.113
15 * * * Requesttimedout.
16 12ms 12ms 17ms bj141-147-82.bjtelecom.net[219.141.147.82]
17 13ms 13ms 12ms 202.97.48.2
18 * * * Requesttimedout.
19 14ms 14ms 12ms 221.187.224.85
20 15ms 13ms 12ms 221.187.104.2
21 * * * Requesttimedout.
22 15ms 17ms 18ms 221.187.111.30
Tracecomplete.