您的位置:首页 > 运维架构 > Linux

traceroute linux命令使用

2012-12-11 15:08 267 查看
traceroute -r 172.16.10.12

[root@localhost yum.repos.d]# traceroute -r 172.16.10.12

traceroute to 172.16.10.12 (172.16.10.12), 30 hops max, 60 byte packets

connect: 网络不可达

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秒;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: