traceroute命令的用法实例分享traceroute命令详解




traceroute命令的用法实例分享traceroute命令详解

2022-07-21 2:08:46 网络知识 官方管理员

traceroute是Linux下跟踪数据包到达网络主机所经过的路由工具;

traceroute是用来发出数据包的主机到目标主机之间所经过的网关的工具。traceroute的原理是试图以最小的TTL发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。发送数据包的大小默认为38个字节。

traceroute[参数选项]hostname,域名或IP地址
参数选项:
-i指定网络接口,对于多个网络接口有用。比如-ieth1或-ippp1等;
-m把在外发探测试包中所用的最大生存期设置为max-ttl次转发,默认值为30次;
-n显示IP地址,不查主机名。当DNS不起作用时常用到这个参数;

-pport探测包使用的基本UDP端口设置为port,默认值是33434
-qn在每次设置生存期时,把探测包的个数设置为值n,默认时为3;
-r绕过正常的路由表,直接发送到网络相连的主机;
-wn把对外发探测包的等待响应时间设置为n秒,默认值为3秒;

实例一:traceroute用法简单、最常用的用法

就是后面直接接IP或hostname或域名;比如下面的示例;

[root@localhost~]#traceroutejb51.net
traceroutetojb51.net(211.93.98.20),30hopsmax,40bytepackets
1sir01.localdomain(192.168.1.1)0.151ms0.094ms0.146ms
2221.201.88.1(221.201.88.1)5.867ms7.588ms5.178ms
3218.25.158.149(218.25.158.149)6.546ms6.230ms8.297ms
4218.25.138.133(218.25.138.133)7.129ms7.644ms8.311ms
......
注:此例中,记录按序列号从1开始,每个纪录就是一跳,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用traceroute-q4jb51.net,表示向每个网关发送4个数据包;

有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据;

如果在局域网中的不同网段之间,我们可以通过traceroute来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。为什么呢?因为北方网通和南方电信各自为政。以前无论怎么说都是一张网,现在就是两张网,是通而不畅。咱们只能望网兴叹了;

实例二:一些参数的用法示例;

[root@localhost~]#traceroute-m10jb51.net把跳数设置为10次;
[root@localhost~]#traceroute-njb51.net注:显示IP地址,不查主机名。
[root@localhost~]#traceroute-p6888jb51.net注:探测包使用的基本UDP端口设置6888
[root@localhost~]#traceroute-q4jb51.net注:把探测包的个数设置为值4;
[root@localhost~]#traceroute-rjb51.net注:绕过正常的路由表,直接发送到网络相连的主机;
[root@localhost~]#traceroute-w3jb51.net注:把对外发探测包的等待响应时间设置为5秒;

在windows系统中,用tracert来跟踪路由

Tracert是路由跟踪程序,用于确定IP数据报访问目标所经过的路径。Tracert命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。在工作环境中有多条链路出口时,可以通过该命令查询数据是经过的哪一条链路出口。

Tracert一般用来检测故障的位置,我们可以使用用tracertIP命令确定数据包在网络上的停止位置,来判断在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,方便检测网络中存在的问题。

不带参数的Tracert或tracert/?命令显示帮助信息。

traceroute

通过向目标发送不同IP生存时间(TTL)值的Internet控制消息协议(ICMP)回应数据包,Tracert诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的TTL递减1。数据包上的TTL减为0时,路由器应该将ICMP已超时的消息发回源系统。

Tracert先发送TTL为1的回应数据包,并在随后的每次发送过程将TTL递增1,直到目标响应或TTL达到最大值,从而确定路由。通过检查中间路由器发回的ICMP已超时的消息确定路由。某些路由器不经询问直接丢弃TTL过期的数据包,这在Tracert实用程序中看不到。

Tracert命令按顺序打印出返回ICMP已超时消息的路径中的近端路由器接口列表。如果使用-d选项,则Tracert实用程序不在每个IP地址上查询DNS。

不带选项的tracert命令将显示到达目标IP地址所经过的路径,并将IP地址解析为主机名一同显示。如下图所示,第一跳是网关地址,可以根据看到的主机名,判断我使用的是极路由。

traceroute

不将地址解析成主机名,能够更快地显示路由器路径。与上图对比,路径是一样的,只是不将IP地址解析成主机名,速度更快。下图中红色框所示的主机名已消失。

traceroute

指定跟踪的跃点数。以下的命令只显示5跳,可以看到命令只跟踪到5跳就结束了。一般来说,5跳之内可能还是本地省内链路。

traceroute

指定等待每个应答的时间(以毫秒为单位)。默认值为3000毫秒(3秒)。

traceroute

另外,tracert命令还有如-j、-r、-s、-4、-6等参数,用得较少,其用法都可以在命令行中输入命令tracert直接查到,这里就不再赘述了。


发表评论:

最近发表
网站分类
标签列表