tracepath指令可以追踪数据到达目标主机的路由信息,同时还能够发现MTU值。tracepath使用套接字API
来实现其所有功能,不需要root权限。它跟踪路径到目的地,沿着这条路径发现MTU。它使用UDP端口或一些随机端口。它类似于Traceroute,只是不需要超级用户特权,并且没有花哨的选项。tracepath6很好地替代了traceroute6和Linux错误队列应用程序的典型示例。tracepath的情况更糟,因为商用IP路由器在ICMP错误消息中没有返回足够的信息。很可能当它们被更新的时候,它会改变。
此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora
描述
它沿着这条路径追踪到发现MTU的目的地。它使用UDP端口或一些随机端口。它类似于traceroute,只是不需要超级用户特权,没有花哨的选项。
tracepath6是对traceroute6的很好的替代,也是Linux错误队列应用的经典示例。IPv4的情况更糟,因为商业IP路由器在ICMP错误消息中没有返回足够的信息。当它们被更新时,它可能会改变。目前,它使用Van Jacobson的技巧,清扫一系列UDP端口来维护跟踪历史。
命令格式
# 用法:tracepath [-n] [-b] [-l <len>] [-p port] <destination>
-n 只显示ip地址
-b 同时显示ip地址和主机名
-l 设置初始化的数据包长度,默认为65535
-m 设置最大TTL值,默认为30
-p 设置要使用的初始目标端口
参考示例
tracepath www.baidu.com # 追踪到达域名的主机路由信息
tracepath -b www.baidu.com # 追踪到达域名的主机路由信息(同时显示ip地址与主机名)
tracepath -n www.baidu.com # 追踪到达域名的主机路由信息(只显示ip)
[root@master ~]# tracepath -b www.baidu.com
1?: [LOCALHOST] pmtu 1500
1: 100.75.0.1 (100.75.0.1) 7.563ms asymm 7
1: 100.75.0.1 (100.75.0.1) 2.019ms asymm 7
2: 10.38.11.42 4.274ms asymm 6
3: 11.76.17.63 9.121ms asymm 5
4: no reply
5: no reply
Resume: pmtu 1500 hops 1 back 1 <这个是机器之间相互ping>
第一列显示探针的TTL,后面是冒号。通常TTL的值是从网络中得到的,但有时回复并不包含必要的信息,我们不得不猜测它。在这种情况下,数字后面跟着?。
第二列显示网络跳,对探测作出答复。如果探测未发送到网络,则为路由器地址或者[localhost]
地址。
行的其余部分显示了有关到达相关工作跳的路径的各种信息。作为规则,它包含RTT的值。此外它可以显示路径MTU,当它改变。如果路径是不对称的,或者探测在到达指定跳之前完成,则显示前向和后向跳数之间的差异。这一信息不可靠。第二三行显示1的不对称性,这是因为第一次TTL为2的探针在第一跳时由于路径MTU发现而被拒绝。
最后一行总结了到达目的地的所有路径的信息,显示了检测到的路径MTU、到达目的地的跳数以及我们对从目的地到我们的跳数的猜测,这在路径不对称时可能有所不同。
综上,tracepath是一款很好用的故障排查工具,但他最大的用武之地在于探测源目节点间路由走向是否异常,是否发生as路径错误等故障,而不在于探测目的节点网络连通性
We people this life is not a model for others, is the reference of others.