。
一,什么是tracepath命令
https://man.he.net/man8/tracepath
tracepath - 追踪到网络主机的路径,并发现该路径上的最大传输单元(MTU)。tracepath 用于追踪到目标主机的网络路径,并发现该路径上的最大传输单元(MTU)。它使用指定的 UDP 端口(或某个随机端口)。该工具与 traceroute 类似,但不需要超级用户权限,且没有复杂的选项。
tracepath -6 是 traceroute6 的良好替代工具,也是 Linux 错误队列应用的经典示例。不过,在 IPv4 环境下情况稍差,因为商业 IP 路由器在 ICMP 错误消息中返回的信息不足。随着这些路由器的更新,这种情况可能会得到改善。目前,在 IPv4 环境下,tracepath 使用范·雅各布森(Van Jacobson)的方法,即扫描一系列 UDP 端口来维护追踪历史。
二,选项
OPTIONS -n 主要以数字形式打印IP地址 -b 打印主机名和IP地址 -l 将初始数据包长度设置为pktlen,而不是65535(用于跟踪)或128000(用于跟踪6)。 -m 将最大跳数(或最大TTL)设置为max_happs,而不是30。 -p 设置要使用的初始目标端口OUTPUT 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),后面紧跟一个冒号。通常,TTL 值是从网络回复中获取的,但有时回复中不包含必要信息,此时我们就需要对其进行推测。在这种情况下,该数字后面会跟一个问号(?)。
第二列显示对探测包作出回复的网络跳数节点,它要么是路由器的地址,要么是“[LOCALHOST]”这个词(如果探测包未发送到网络上)。
该行的其余部分显示有关到对应网络跳数节点的路径的各种信息。按照惯例,它包含往返时间(RTT)的值。此外,当路径最大传输单元(Path MTU)发生变化时,它也会显示出来。如果路径是不对称的,或者探测包在到达规定的跳数节点之前就结束了,那么会使用“async”关键字后跟正向与反向跳数之差来显示这种情况。不过,此信息并不可靠。例如,第三行显示不对称性为1,这是因为第一个TTL为2的探测包在第一跳就因路径最大传输单元发现(Path MTU Discovery)而被拒绝。
最后一行汇总了有关到目标主机的所有路径的信息,它显示检测到的路径最大传输单元(Path MTU)、到目标主机的跳数,以及我们对从目标主机返回的跳数的推测(当路径不对称时,这两个跳数可能不同)。
三,例子
1、追踪到达目标主机的路径和延迟信息
[root@master1 ~]# tracepath 172.25.61.66 1?: [LOCALHOST] pmtu 1500 1: 172.25.61.66 0.169ms reached 1: 172.25.61.66 0.235ms reached Resume: pmtu 1500 hops 1 back 1
输出逐行解释
1?: [LOCALHOST] pmtu 15001?:表示本地主机(源地址),?表示未明确指定探测包的协议(可能是 UDP 或 ICMP)。pmtu 1500:路径 MTU(最大传输单元)为 1500 字节(标准以太网 MTU)。
1: 172.25.61.66 0.169ms reached- 第一跳直接到达目标主机 172.25.61.66,响应时间 0.169ms(极低延迟,说明在本地局域网内)。
reached:表示探测包成功到达目标,无需继续向后探测。1: 172.25.61.66 0.235ms reached,重复探测同一目标,响应时间略有变化(0.235ms),属于正常波动。
Resume: pmtu 1500 hops 1 back 1
pmtu 1500:确认路径 MTU 为 1500 字节。hops 1:仅需 1 跳即可到达目标(即目标与源主机在同一子网)。back 1:返回路径的跳数也是 1(双向直接可达)
pmtu 1500:确认路径 MTU 为 1500 字节。hops 1:仅需 1 跳即可到达目标(即目标与源主机在同一子网)。back 1:返回路径的跳数也是 1(双向直接可达)。
2、只显示 IP 地址,不进行反向 DNS 解析
[root@bogon ~]# tracepath baidu.com 1?: [LOCALHOST] pmtu 1500 1: bogon 0.161ms 1: bogon 0.153ms ^C[root@bogon ~]# tracepath -n baidu.com 1?: [LOCALHOST] pmtu 1500 1: 192.168.67.2 0.139ms 1: 192.168.67.2 0.159ms ^C
3、同时显示 IP 地址和主机名,和上面对比,
[root@bogon ~]# tracepath -b baidu.com 1?: [LOCALHOST] pmtu 1500 1: bogon (192.168.67.2) 0.116ms 1: bogon (192.168.67.2) 0.158ms
4、设置最大 TTL 值
使用 -m 选项可以设置最大 TTL(Time To Live)值,即数据包在网络上可以经过的最大跳数。这个例子中,最大跳数被设置为 5,防止数据包无限循环
[root@bogon ~]# tracepath -m 5 baidu.com 1?: [LOCALHOST] pmtu 1500 1: bogon 0.214ms 1: bogon 0.293ms 2: no reply 3: no reply 4: no reply 5: no reply Too many hops: pmtu 1500 Resume: pmtu 1500 [root@bogon ~]#
5、指定数据包长度,使用 -l 选项可以设置初始化数据包长度,指定越大,等待也越久,同时不能超过mtu默认值1500
[root@master1 ~]# tracepath -n 172.25.61.66 1?: [LOCALHOST] pmtu 1500 1: 172.25.61.66 0.222ms reached 1: 172.25.61.66 0.124ms reached Resume: pmtu 1500 hops 1 back 1 [root@master1 ~]# tracepath -l 100 172.25.61.66 1: 172.25.61.66 0.123ms reached Resume: pmtu 100 hops 1 back 1 [root@master1 ~]# tracepath -l 10000 172.25.61.66 1?: [LOCALHOST] pmtu 1500 1: 172.25.61.66 0.225ms reached 1: 172.25.61.66 0.174ms reached Resume: pmtu 1500 hops 1 back 1
6、指定目标端口
[root@master1 ~]# tracepath -p 22 172.25.61.66 1?: [LOCALHOST] pmtu 1500 1: 172.25.61.66 0.211ms reached 1: 172.25.61.66 0.154ms reached Resume: pmtu 1500 hops 1 back 1
7、从第 5 跳开始探测
[root@master1 ~]# traceroute -n -f 5 -q 3 172.25.61.66traceroute to 172.25.61.66 (172.25.61.66), 30 hops max, 60 byte packets 5 172.25.61.66 0.153 ms 0.167 ms 0.146 ms命令解析-n:不解析主机名(直接显示 IP 地址,加快速度)。-f 5:从 TTL=5 开始发送探测包(跳过前 4 跳,直接从第 5 跳探测)。-q 3:每跳发送 3 个探测包(默认行为,但显式指定更清晰)。172.25.61.66:目标 IP 地址。
30 hops max:最大探测跳数为 30(默认值,未被 -m 参数覆盖)。60 byte packets:每个探测包大小为 60 字节(含 IP/ICMP 头部)。5 172.25.61.66 ...
- 三个探测包的往返时间(RTT),极低(<1ms),表明网络质量常好(可能是本地连接或高速链路)。
- 目标主机距离你很近(可能在同一局域网或直接连接的子网)。
- 前 4 跳(TTL=1~4)的路由器可能未响应(或被防火墙丢弃),但TTL=5 时目标主机主动回复了 ICMP 超时或端口不可达消息(取于
traceroute 实现)。
- 第 5 跳:直接到达目标主机(
172.25.61.66),说明:延迟时间(0.153 ms、0.167 ms、0.146 ms)
四,补充
另请参阅
traceroute(8)、traceroute6(8)、ping(8)。
作者
tracepath 由 Alexey Kuznetsov mailto:kuznet@ms2.inr.ac.ru编写。
安全性
无安全问题。
这段简洁的表述值得进一步阐释。与 traceroute、ping 等同类工具不同,tracepath 并非特权程序。只要用户拥有足够的网络访问权限,能够使用指定端口向目标地址发送 UDP 数据报,便可以执行 tracepath 命令。
可获取性
tracepath 是 iputils 软件包的一部分。
五,总结
tracepath 命令是跟踪路由的一个命令,如果中间有防火墙或者其它协议策略,很有可能跟踪不到,即便如此,此命令也能帮助我们很直观的发现问题
最后的最后(Last but not least),欢迎交流:
关注公众号留言,或者在下方直接留言: