Linux Traceroute 命令示例

举报
Tiamo_T 发表于 2022/06/16 16:04:48 2022/06/16
【摘要】 在本文中,我们将讨论 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)行。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。