Linux Traceroute 命令示例
在某些情况下,人们想知道连接所遵循的路线。这里的路由是指所有转发实体的 IP 地址(如中间的路由器)。
虽然不能保证连接的所有数据包的路由都相同,但通常是相同的。在调试网络相关问题时,此路由相关信息非常方便。
traceroute 实用程序打印出到特定目的地的完整路线。在本文中,我们将讨论 traceroute 的工作原理,并会看到一些实际示例。
Traceroute 是如何工作的?
在开始举例之前,让我们先了解一下 traceroute 工作的概念。
Traceroute 实用程序使用 IP 标头中的 TTL 字段来实现其操作。对于不熟悉 TTL 字段的用户,该字段描述了特定数据包在网络上传输时将花费多少跳。
因此,这有效地概述了网络上数据包的生命周期。该字段通常设置为 32 或 64。每次数据包保存在中间路由器上时,它都会将 TTL 值减 1。当路由器在接收到的数据包中发现 TTL 值为 1 时,该数据包不会被转发,而是丢弃。
丢弃数据包后,路由器将“超时”的 ICMP 错误消息发送回数据包生成源。发回的 ICMP 数据包包含路由器的 IP 地址。
所以现在很容易理解,traceroute 是通过发送 TTL 值从 1 开始,然后每次递增 1 的数据包来运行的。路由器每次收到数据包时,都会检查 TTL 字段,如果 TTL 字段为 1,则丢弃该数据包并发送包含其 IP 地址的 ICMP 错误数据包,这就是 traceroute 所要求的。因此,traceroute 会逐步获取源和目标之间所有路由器的 IP。
您还应该了解我们不久前讨论的IP 标头字段。
跟踪路由示例
1.如何运行traceroute?
$ traceroute <server-name>
上面的 server-name 是目标名称或 IP 地址。例如,traceroute 用于查找从我的机器到 google.com 的网络路径:
$ traceroute google.com
traceroute to google.com (74.125.236.132), 30 hops max, 60 byte packets
1 220.224.141.129 (220.224.141.129) 89.174 ms 89.094 ms 89.054 ms
2 115.255.239.65 (115.255.239.65) 109.037 ms 108.994 ms 108.963 ms
3 124.124.251.245 (124.124.251.245) 108.937 ms 121.322 ms 121.300 ms
4 * 115.255.239.45 (115.255.239.45) 113.754 ms 113.692 ms
5 72.14.212.118 (72.14.212.118) 123.585 ms 123.558 ms 123.527 ms
6 72.14.232.202 (72.14.232.202) 123.499 ms 123.475 ms 143.523 ms
7 216.239.48.179 (216.239.48.179) 143.503 ms 95.106 ms 95.026 ms
8 bom03s02-in-f4.1e100.net (74.125.236.132) 94.980 ms 104.989 ms 104.954 ms
每行都提供了与遇到的每个路由器交互的详细信息。所以我们看到,traceroute 不仅给出了中间路由器的 IP 地址,还给出了该特定路由器的三个往返时间,因为 traceroute 命令对每个路由器触发三个数据包。
输出中的“*”字段
有时可能会在输出中遇到“*”而不是值。这表示无法获取必填字段。原因可能是任何原因,从反向 DNS 查找失败到数据包未到达目标路由器,再到数据包在返回途中丢失。所以我们看到原因可能很多,但是对于所有这些类型的情况,traceroute 实用程序在输出中提供了一个 *。
2.禁用IP地址和主机名映射
Traceroute 提供了一个选项,通过该选项可以禁用 IP 地址与主机名的映射(traceroute 尝试)。这样做的选项是 '-n' 。以下示例说明了这一点:
$ traceroute google.com -n
traceroute to google.com (173.194.36.7), 30 hops max, 60 byte packets
1 220.224.141.129 109.352 ms 109.280 ms 109.248 ms
2 115.255.239.65 131.633 ms 131.598 ms 131.573 ms
3 124.124.251.245 131.554 ms 131.529 ms 131.502 ms
4 115.255.239.45 131.478 ms 131.464 ms 199.741 ms
5 72.14.212.118 199.674 ms 199.637 ms 199.603 ms
6 209.85.241.52 199.578 ms 199.549 ms 209.838 ms
7 209.85.241.187 199.488 ms 177.264 ms 177.196 ms
8 173.194.36.7 177.159 ms 187.463 ms 187.434 ms
所以我们看到输出中没有显示主机名。
3.配置响应等待时间
还可以配置 traceroute 实用程序在发出探测后等待的时间。这可以通过它提供的“-w”选项来完成。-w 选项需要一个值,该实用程序将作为等待的响应时间。在此示例中,等待时间为 0.1 秒,并且 traceroute 实用程序无法等待任何响应,它会打印所有 *。
$ traceroute google.com -w 0.1
traceroute to google.com (74.125.236.101), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
..
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
所以我们看到 traceroute 尝试了 30 次尝试(最大跳数尝试),然后因为在 0.1 秒内没有收到 ICMP 数据包而放弃。
4.配置每跳的查询数
如前所述,traceroute 实用程序每跳发送 3 个数据包以提供 3 个往返时间。此默认值 3 可使用选项“-q”进行配置。此选项需要一个整数,它设置为每跳探测数的新值。
$ traceroute google.com -q 5
traceroute to google.com (173.194.36.46), 30 hops max, 60 byte packets
1 220.224.141.129 (220.224.141.129) 91.579 ms 91.497 ms 91.458 ms 91.422 ms 91.385 ms
2 115.255.239.65 (115.255.239.65) 91.356 ms 91.325 ms 98.868 ms 98.848 ms 98.829 ms
3 124.124.251.245 (124.124.251.245) 94.581 ms 107.083 ms 107.044 ms 107.017 ms 106.981 ms
4 115.255.239.45 (115.255.239.45) 106.948 ms 106.918 ms 144.432 ms 144.412 ms 144.392 ms
5 72.14.212.118 (72.14.212.118) 115.565 ms 115.485 ms 115.446 ms 115.408 ms 115.381 ms
6 72.14.232.202 (72.14.232.202) 115.351 ms 87.232 ms 117.157 ms 117.123 ms 117.049 ms
7 209.85.241.189 (209.85.241.189) 126.998 ms 126.973 ms 126.950 ms 126.929 ms 126.912 ms
8 bom04s02-in-f14.1e100.net (173.194.36.46) 126.889 ms 95.526 ms 95.450 ms 95.418 ms 105.392 ms
所以我们看到,在将探测数配置为 5 后,输出开始显示每跳 5 个往返时间。
5.配置开始的TTL值
Traceroute 实用程序足够灵活,可以接受用户想要启动该实用程序的 TTL 值。默认情况下,它的值为 1,这意味着它从路径中的第一个路由器开始,但使用“-f”选项(期望 TTL 的新值)可以设置 TTL 字段的新值。例如,我尝试了正常的 traceroute 操作,然后尝试了具有不同 TTL 值的 traceroute。
$ traceroute google.com
traceroute to google.com (74.125.236.132), 30 hops max, 60 byte packets
1 220.224.141.129 (220.224.141.129) 89.181 ms 101.540 ms 101.503 ms
2 115.255.239.65 (115.255.239.65) 101.468 ms 101.431 ms 101.324 ms
3 124.124.251.245 (124.124.251.245) 121.373 ms 121.350 ms 158.694 ms
4 115.255.239.45 (115.255.239.45) 101.223 ms 141.135 ms 123.932 ms
5 72.14.212.118 (72.14.212.118) 123.867 ms 123.832 ms 123.802 ms
6 72.14.232.202 (72.14.232.202) 123.773 ms 123.742 ms 587.812 ms
7 216.239.48.179 (216.239.48.179) 587.723 ms 587.681 ms 587.642 ms
8 bom03s02-in-f4.1e100.net (74.125.236.132) 577.548 ms 577.524 ms 587.512 ms
$ traceroute google.com -f 8
traceroute to google.com (74.125.236.129), 30 hops max, 60 byte packets
8 bom03s02-in-f1.1e100.net (74.125.236.129) 96.961 ms 96.886 ms 96.849 ms
所以我们看到,在使用值为 8 的 -f 选项后,只显示了上一个输出的最后(第 8)行。
- 点赞
- 收藏
- 关注作者
评论(0)