traceroute 跟踪数据包到达网络主机所经过的路由工具;
traceroute 是用来发出数据包的主机到目标主机之间所经过的网关的工具。traceroute 的原理是试图以最小的TTL发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。发送数据包的大小默认为 38个字节。
traceroute [参数选项] hostname,域名或 IP地址
功能说明:显示数据包到主机间的路径。
语 法:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]
补充说明:traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
参数选项:
-d 使用Socket层级的排错功能。
-f<存活数值> 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g<网关> 设置来源路由网关,最多可设置8个。
-i<网络界面> 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m<存活数值> 设置检测数据包的最大存活数值TTL的大小,默认值为30次;。
-n 直接使用IP地址而非主机名称。当DNS不起作用时常用到这个参数;
-p<通信端口> 设置UDP传输协议的通信端口。默认值是33434
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s<来源地址> 设置本地主机送出数据包的IP地址。
-t<服务类型> 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w<超时秒数> 设置等待远端主机回报的时间。默认值为3秒;
-x 开启或关闭数据包的正确性检验。
-q n 在每次设置生存期时,把探测包的个数设置为值n,默认时为3;
实例一: traceroute 用法简单、最常用的用法
就是后面直接接IP或hostname或域名;比如下面的示例;
[root@localhost ~]# traceroute linuxsir.org
traceroute to linuxsir.org (211.93.98.20), 30 hops max, 40 byte packets
1 sir01.localdomain (192.168.1.1) 0.151 ms 0.094 ms 0.146 ms
2 221.201.88.1 (221.201.88.1) 5.867 ms 7.588 ms 5.178 ms
3 218.25.158.149 (218.25.158.149) 6.546 ms 6.230 ms 8.297 ms
4 218.25.138.133 (218.25.138.133) 7.129 ms 7.644 ms 8.311 ms
......
注: 此例中,记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 linuxsir.org ,表示向每个网关发送4个数据包;
有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据;
如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在, 是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可 能帮助我们解决。为什么呢?因为北方网通和南方电信各自为政。以前无论怎么说都是一张网,现在就是两张网,是通而不畅。咱们只能望网兴叹了;
实例二:一些参数的用法示例;
[root@localhost ~]# traceroute -m 10 linuxsir.org 把跳数设置为10次;
[root@localhost ~]# traceroute -n linuxsir.org 注:显示IP地址,不查主机名。
[root@localhost ~]# traceroute -p 6888 linuxsir.org 注:探测包使用的基本UDP端口设置6888
[root@localhost ~]# traceroute -q 4 linuxsir.org 注:把探测包的个数设置为值4;
[root@localhost ~]# traceroute -r linuxsir.org 注:绕过正常的路由表,直接发送到网络相连的主机;
[root@localhost ~]# traceroute -w 3 linuxsir.org 注:把对外发探测包的等待响应时间设置为5秒;
阅读(10075) | 评论(1) | 转发(0) |