如果您需要查明一旦离开您的Linux计算机,数据包将去往何处,那么在Linux上使用traceroute是个好办法。
Traceroute是一个方便实用的实用程序,几乎在每个Linux发行版上都可以找到,它可以追踪您的网络数据包在网络上经过的路由器。这个实用程序对故障排除或简单的网络规划非常有用。
并非每个Linux发行版都包含相同的
traceroute
命令包。有些发行版使用传统的inetutils包,其中包含traceroute作为一套网络工具的一部分,而其他一些则有现代的traceroute.x86_64包。
相关: 如何在Windows 10中使用Traceroute(Tracert)
检查Traceroute参数
首先,让我们看看Linux traceroute命令的可能性。
打开终端并键入命令traceroute -?
以获取手册页面:
如上所示,您有很多选项可以调整traceroute的工作方式。
基本Traceroute功能
虽然您有调整 traceroute 的参数,但实际上并不需要全部。事实上,您只需运行 traceroute 并提供要跟踪的主机即可。一旦您这样做了,就像您下面所看到的那样,Linux 上的 traceroute 会发送一个 60 字节的数据包,并跟踪到达目标主机的每一个跳跃。
它能够通过在每个数据包上使用生存时间(TTL)来跟踪这些跳跃,每次递减一个,以检测何时不再收到数据包。

请注意,traceroute 有最大跳数限制。最多只能跳转 30 次。
添加开关以进行更精确的跟踪
Linux 上 traceroute 的默认功能效果很好,但您还可以做更多。现在让我们介绍一些您可以使用的最受欢迎和有用的开关。
使用第一个跳跃开关排除跳跃
一个有用的命令可以排除跟踪中的某些路由器。使用 -f
或 --first-hop=NUM
参数,您可以排除显示某些路由器。如果您确信一个或多个路由器不会导致任何问题,这可能非常有用。
您还可以使用 -f
开关将跟踪设置为从网络边界之后开始,以缩小可能导致互联网延迟的范围。
在以下的 GIF 中,你可以看到命令 traceroute -f 3 google.com
的运行。这个命令跳过了前三个路由器,因此绕过了我的家庭网络和 ISP 路由器。注意到前两个跳数是缺失的。

从上面的例子来看,从我的网络到达 www.google.com 需要 15 个跳。你会看到:
- 跳数
- 沿途跟踪的路由器的主机名或 IP
- 和以前一样的响应时间
在输出中,你可能会看到一些跳数的额外接口。这是正常的。
使用 Max-Hop 开关限制跳数
现在假设除了跳过前两个跳数外,你还想要路径达到第五个跳数。这就是你会使用 -m
或 --max-hop=NUM
开关参数的地方。
在你的终端中键入 traceroute -m 5 -f 3 http://www.google.com
,然后按 Enter 键。这个命令确实对缩小潜在的路由问题很有用。traceroute 现在跳过了前两个跳数,并在第五个跳数停止。

使用 -Q 开关减少发送的探测包
在 Linux 上,默认情况下,traceroute 对路径中的每个路由器发送三个探测包。也许你想要减少 traceroute
运行的时间。你可以使用 -q
参数来改变发送给每个路由器的探测包的数量。
在终端中键入traceroute -q -m 5 -f 3 www.google.com
,然后按Enter。您可以看到下面的traceroute
仅发送一个数据包,因为我们每一跳只得到一个响应时间。

您还可以通过为-q
参数指定参数来增加每一跳发送的探测数据包的数量,如下所示。增加发送的数据包探测可以通过提供一种平均响应时间到每一跳的方式来帮助。

摘要
在这篇关于Linux的Traceroute的文章中,您学习了使用这个方便实用程序的基础知识。您可以使用这个命令做更多的事情。如果您想学习如何使用每个开关,请务必查阅man页面。