了解linux下的traceroute命令

2017-05-12 07:47:19 6818

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。

语法

traceroute(选项)(参数)

选项

-d:使用Socket层级的排错功能;

 -f<存活数值>:设置第一个检测数据包的存活数值TTL的大小;

-F:设置勿离断位;

-g<网关>:设置来源路由网关,最多可设置8个;

-i<网络界面>:使用指定的网络界面送出数据包;

-I:使用ICMP回应取代UDP资料信息;

-m<存活数值>:设置检测数据包的最大存活数值TTL的大小;

-n:直接使用IP地址而非主机名称;

-p<通信端口>:设置UDP传输协议的通信端口;

 -r:忽略普通的Routing Table,直接将数据包送到远端主机上。

-s<来源地址>:设置本地主机送出数据包的IP地址;

-t<服务类型>:设置检测数据包的TOS数值;

-v:详细显示指令的执行过程;

-w<超时秒数>:设置等待远端主机回报的时间;

-x:开启或关闭数据包的正确性检验。

列如:

traceroute www.landui.com

记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用traceroute -q 4 www.landui.com,表示向每个网关发送4个数据包。

有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。

如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: