在Linux中運行Traceroute的指南

如果你需要弄清楚在离开你的Linux计算机后,数据包到底去了哪里,traceroute在Linux上是你的朋友。

Traceroute是一个方便的实用工具,几乎在每个Linux发行版上都能找到,它可以追踪你的网络数据包在网络上经过哪些路由器。这个实用工具对故障排除或简单的网络规划非常有用。

并非每个Linux发行版都包含相同的traceroute命令包。一些发行版使用传统的inetutils包,其中包含traceroute作为网络工具套件的一部分,而其他一些则有现代的traceroute.x86_64包

相关内容:如何在Windows 10中使用Traceroute(Tracert)

检查Traceroute参数

首先,让我们看看Linux traceroute命令有哪些可能性。

打开终端并键入命令traceroute -?以访问手册页面

Usage: traceroute [OPTION...] HOST
Print the route packets trace to network host.

  -f, --first-hop=NUM        set initial hop distance, i.e., time-to-live
  -g, --gateways=GATES       list of gateways for loose source routing
  -I, --icmp                 use ICMP ECHO as probe
  -m, --max-hop=NUM          set maximal hop count (default: 64)
  -M, --type=METHOD          use METHOD (`icmp' or `udp') for traceroute
                             operations, defaulting to `udp'
  -p, --port=PORT            use destination PORT port (default: 33434)
  -q, --tries=NUM            send NUM probe packets per hop (default: 3)
      --resolve-hostnames    resolve hostnames
  -t, --tos=NUM              set type of service (TOS) to NUM
  -w, --wait=NUM             wait NUM seconds for response (default: 3)
  -?, --help                 give this help list
      --usage                give a short usage message
  -V, --version              print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to <bug-inetutils@gnu.org>.

如上所示,你有很多选项来调整traceroute的工作方式。

基本Traceroute功能

雖然您可以調整 traceroute 的參數,但實際上並不需要全部。事實上,您只需運行 traceroute 並提供要追蹤的主機即可。一旦您這樣做,就像下面所示,Linux 上的 traceroute 會發送一個 60 字節的封包,並跟踪到達目的地主機的每一個跳躍。

它通過在每個封包上使用一個逐跳生存時間(TTL)來跟踪這些跳躍,每次減一,直到檢測到封包不再收到為止。

Traceroute to google.com

請注意,traceroute 有最大跳數限制。它最多只能達到 30 跳。

添加更精確跟踪的開關

Linux 上 traceroute 的默認功能很好,但您還可以做更多。現在讓我們介紹一些最受歡迎和有用的可用開關。

使用第一跳開關排除跳躍

一個有用的命令可以排除某些路由器的追蹤。使用 -f--first-hop=NUM 參數,您可以排除某些路由器的顯示。如果您確信一個或多個路由器不會引起任何問題,這可能非常有用。

您還可以使用 -f 開關將追蹤設置為從您的網絡邊界開始,以縮小互聯網上可能引起延遲的原因範圍。

在下面的 GIF 中,您可以看到正在運行的指令 traceroute -f 3 google.com。 這個指令跳過了前三個路由器,因此繞過了我的家庭網絡和 ISP 路由器。 請注意,前兩個跳數是缺失的。

traceroute -f example

從上面的例子來看,從我的網絡到達 www.google.com 需要 15 個跳。 您可以看到:

  • 跳數
  • 沿著被追蹤的路徑的路由器的主機名稱或 IP
  • 與之前一樣的響應時間

您可能會在輸出中看到一些跳躍的額外界面。 這是預期的。

使用 Max-Hop 開關限制跳數

現在假設除了跳過前兩個跳之外,您還希望將路徑延伸到第五個跳。 這就是您會使用 -m--max-hop=NUM 開關參數的地方。

在終端中輸入 traceroute -m 5 -f 3 http://www.google.com,然後按 Enter 鍵。 這個指令肯定對縮小可能的路由問題很有用。 現在,traceroute 跳過了前兩個跳,並在第五個跳停止。

Traceroute skipping hops

使用 -Q 開關減少發送的探查封包

在 Linux 上,traceroute 默認向路徑中的每個路由器發送三個探查封包。 也許您想要減少 traceroute 運行的時間。 您可以使用 -q 參數更改發送到每個路由器的探查封包數量。

在終端機中輸入traceroute -q -m 5 -f 3 www.google.com,然後按下Enter。您可以看到下面的內容,traceroute只發送了一個封包,因為我們每個跳躍只獲得了一個回應時間。

traceroute -q 6 example

您還可以通過為-q參數指定一個參數來增加每個跳躍的探測封包數量,如下所示。增加封包探測數量可以通過提供跳躍的平均回應時間來幫助。

Argument for -q Parameter

摘要

在這篇關於Linux的Traceroute文章中,您學會了使用這個實用工具的基礎知識。這個命令還有很多其他用法。如果您想了解如何使用每個選項,請務必查看man頁面

Source:
https://adamtheautomator.com/traceroute-linux/