0%

Linux的tracepath命令

Linux的tracepath命令

tracepath用于显示报文到达某一个地址的路由信息,能够发现其中的MTU信息。

在探测过程中,会使用UDP端口或随机端口。所以可以看到后面的?符号。与traceroute类似。

这对于长距离的数据传输分析有很明显的帮助作用。

官方的定义为:

tracepath, tracepath6 - traces path to a network host discovering MTU along this path

使用方法为:

1
$ tracepath [-n] [-b] [-l pktlen] [-m max_hops] [-p port] destination

其中选项如下所示:

  • -n:只显示IP地址信息(默认是显示域名的,这个选项将不显示域名了)
  • -b:同时显示主机名和IP地址(默认没有域名的只显示IP地址,这个选项即使没有主机名也会把IP地址作为主机名)
  • -l:设置初始化的数据包长度,默认tracepath为65535,而tracepaht6为128000
  • -m:设置最大的hops(或最大的TTL)为max_hops(默认为30)
  • -p:设置初始使用的目标端口

官网的一个例子及含义

1
2
3
4
5
6
root@mops:~ $ tracepath6 3ffe:2400:0:109::2
1?: [LOCALHOST] pmtu 1500
1: dust.inr.ac.ru 0.411ms
2: dust.inr.ac.ru asymm 1 0.390ms pmtu 1480
2: 3ffe:2400:0:109::2 463.514ms reached
Resume: pmtu 1480 hops 2 back 2

以其中一行为例:

TTL 探测信息
1?: [LOCALHOST] pmtu 1500
1: dust.inr.ac.ru 0.411ms
这一列显示探测的TTL,用分号来分割。
不过有些情况下信息不足以确认,就出现了猜测的?
显示网络探测信息:
如果未发送到网络,则为路由器地址或者localhost地址;
这里还会显示MTU、延迟等等等。

最后一行会总结整个链路的状态信息,显示了检测到的路径MTU、到达目的地的hops以及从目的地返回的hops数。

可以与ping配合使用,可以先用ping获取到具体的IP地址,然后使用tracepath进行进一步的分析。

1
2
3
4
5
6
7
8
9
10
11
12
13
$  ping www.bing.com
PING china.bing123.com (202.89.233.101) 56(84) bytes of data.
64 bytes from 202.89.233.101 (202.89.233.101): icmp_seq=1 ttl=116 time=28.1 ms
64 bytes from 202.89.233.101 (202.89.233.101): icmp_seq=2 ttl=116 time=27.9 ms
^C
--- china.bing123.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 27.964/28.072/28.181/0.199 ms
$ tracepath 202.89.233.101
1?: [LOCALHOST] pmtu 1500
1: no reply
2: 202.127.24.1 2.859ms
...
处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道