如果你需要弄清楚在离开你的Linux计算机后,数据包到底去了哪里,traceroute在Linux上是你的朋友。
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頁面。