网络链路追踪工具

概述

参考:

trace 路由追踪

参考:

Linux 中有两个工具可以用来追踪路由,tracepath 与 traceroute。tracepath 工具包含在 iputils 包中,安装完系统可以直接使用。traceroute 是单独的一个包,需要手动安装。

默认使用 UDP 来进行追踪。

下面是 tracepath 工具输出的信息

~]# tracepath qq.com -n
1?: [LOCALHOST]                                         pmtu 1500
1:  no reply
2:  10.20.1.1                                             1.205ms
.....
6:  111.33.170.185                                        3.582ms
7:  117.131.130.137                                       6.999ms
8:  221.183.13.45                                         6.017ms asymm  9
9:  221.183.38.61                                         7.326ms asymm  8

第一列为 TTL 的值。TTL(Time To Live)存活时间,指一个数据包到达目的地时,可传递的最长距离(Hop)。每当数据包经过一个路由器时,其存活次数就会减一,当存货次数为 0 时,路由器会丢弃该数据包。TTL 的设计目的时为了防止数据包因为不正确的路由表等原因造成的无限循环而无法送达目的地。

第二列为每个 hop (i.e.每跳)的信息(就是路由吓一跳的地址)。注意,如果当前 hop 的设备禁止 icmp 报文,那么该 hop 无法显示地址。

剩下的信息为当前 hop 路径点的信息。这些信息包含如下内容

  • RTT 的值(默认显示的信息)。RTT(Round-trip delay time)来回通信延迟。指在双方通信中,发讯方的信号(Signal)传播(Propagation)到收讯方的时间(意即:传播延迟(Propagation delay)),加上收讯方回传消息到发讯方的时间(如果没有造成双向传播速率差异的因素,此时间与发讯方将信号传播到收讯方的时间一样久)
  • MTU 的值。如果当前 hop 的 MTU 与上一个 hop 的 MTU 不相同,即显示。
  • asymm 的值。如果路径是不对称的,或者探测在到达指定跳之前完成,则显示前向和后向跳数之间的差异。这一信息不可靠。F.E.第三行显示 1 的不对称性,这是因为第一次 TTL 为 2 的探针在第一跳时由于路径 MTU 发现而被拒绝。

tracepath

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

OPTIONS

默认是-U选项使用 UDP 的 33434 端口进行侦测

  • -n # 不进行域名解析,单纯用 IP
  • -b # Print both of host names and IP addresses.
  • -l # Sets the initial packet length to pktlen instead of 65535 for tracepath or 128000 for tracepath6.
  • -m # 将最大 hots(或者最大 TTLs)设置为 max_hops,而不是默认的 30
  • -p # Sets the initial destination port to use.

traceroute

OPTIONS

  • -n
  • -T # 使用 TCP 进行侦测,一般是 80 端口。当默认 UDP trace 不到目标的时候,可以尝试使用 TCP 来 trace
  • -i <DEV> 使用 DEV 的网卡来进行 trace

EXAMPLE

  • traceroute -w 1 -n -T baidu.com # 使用 TCP 协议追踪 baidu.com 的路由经过,不进行 DNS,如果 1 秒没回复则终端

ping - 测试网络情况

ping [OPTIONS] DESTINATION

OPTIONS:

  • -I <源 IP> # 以<>括号中指定的 IP 去 ping 目标 ip
  • -s NUM # 指定每次 ping 包的大小,默认为 64Btye

ping6

使用 ping6 时需要指定网络设备,否则会报 connect: Invalid argument 错误。

~]# ping6 fe80::2c75:df14:7422:36a
connect: Invalid argument
~]# ping6 -I br0 fe80::2c75:df14:7422:36a
PING fe80::2c75:df14:7422:36a(fe80::2c75:df14:7422:36a) from fe80::2c75:df14:7422:36a%br0 br0: 56 data bytes
64 bytes from fe80::2c75:df14:7422:36a%br0: icmp_seq=1 ttl=64 time=0.050 ms

EXAMPLE

  • ping6 -I br0 fe80::2c75:df14:7422:36a

mtr

参考:

My Traceroute(简称 MTR) 原名是 Matt’s traceroute,是一个结合了 ping 与 traceroute 工具的网络诊断程序。MTR 通过限制单个数据包可能经过的跳数来探测路由路径上的路由器,并监听他们的到期响应。它将定期重复此过程,通常每秒一次,并跟踪路径上的跃点的响应时间。


最后修改 April 16, 2024: k8s log, api (a9ca5914)