Linux 中的 traceroute 命令


介紹

traceroute” 命令是一個網路診斷工具,允許使用者跟蹤資料包從源計算機到目的地的路由。此工具被網路管理員和工程師廣泛用於排查網路問題,例如高延遲、資料包丟失和連線問題。

Traceroute 透過向目標傳送生存時間 (TTL) 值逐漸增加的資料包來工作。每個資料包到達路由器時,路由器都會將 TTL 值減 1,如果 TTL 值變為零,則丟棄該資料包。traceroute 命令偵聽路由器發回的錯誤訊息,並記錄處理資料包的每個路由器的 IP 地址。

traceroute 命令可在多種作業系統上使用,包括 Linux。在本文中,我們將深入討論 Linux 中的 traceroute 命令,包括其語法、選項以及如何使用的示例。

Traceroute 命令語法

Linux 中 traceroute 命令的基本 語法如下:

$ traceroute [options] destination

目標可以是主機名或 IP 地址。一些可與 traceroute 命令一起使用的常用選項包括:

  • -I − 使用 ICMP 回顯代替 UDP 資料包

  • -T − 使用 TCP SYN 資料包代替 UDP 或 ICMP

  • -m max_ttl − 指定搜尋目標的最大跳數

  • -q nqueries − 指定每個跳數的探測次數

  • -w waittime − 指定等待響應的時間(以秒為單位)

使用 -I 選項

traceroute 命令預設使用 UDP 資料包。但是,在某些情況下,路由器或防火牆可能會阻止 UDP 資料包,這可能會導致 traceroute 命令失敗。在這種情況下,可以使用 -I 選項來使用 ICMP 回顯代替 UDP 資料包。

$ traceroute -I www.google.com

使用 -T 選項

traceroute 命令也可以用來使用 TCP SYN 資料包而不是 UDP 或 ICMP 來追蹤路由。當防火牆阻止 UDP 或 ICMP 資料包時,這很有用。

$ traceroute -T www.google.com

使用 -m 選項

traceroute 命令使用預設的最大跳數 (30) 來到達目標。但是,在某些情況下,在預設跳數內可能無法到達目標。在這種情況下,可以使用 “-m” 選項來指定搜尋目標的最大跳數。

$ traceroute -m 15 www.google.com

使用 -q 選項

預設情況下,traceroute 命令每個跳數只發送一個探測。但是,在某些情況下,需要更多關於特定跳數的資訊。在這種情況下,可以使用 “-q” 選項來指定每個跳數的探測次數。

$ traceroute -q 15 www.google.com

traceroute 命令的使用示例

讓我們來看一些 traceroute 命令在實踐中如何使用的示例。

示例 1

追蹤到網站的路由

$ traceroute www.google.com
traceroute to www.google.com (142.251.46.228), 30 hops max, 60 byte packets
 1  * * *
 2  10.88.3.230 (10.88.3.230)  1.396 ms 10.88.3.228 (10.88.3.228)  1.459 ms 10.88.3.222 (10.88.3.222)  1.410 ms
…………
 9  66.249.94.29 (66.249.94.29)  3.020 ms 209.85.250.83 (209.85.250.83)  2.457 ms sfo03s27-in-f4.1e100.net (142.251.46.228)  1.309 ms

在這個例子中,traceroute 命令用於追蹤到 "www.google.com" 網站的路由。輸出顯示處理資料包的路由器的 IP 地址和主機名,以及每個探測到達跳點並返回所花費的時間(以毫秒為單位)。我們可以看到,從源 IP “192.168.1.1” 開始,到達目的地需要 13 個跳點。最後一個跳點是 IP 地址 “142.251.46.228”,這是 "www.google.com" 網站的 IP 地址。

示例 2

追蹤到 IP 地址的路由

$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  * * *
…………
 5  138.68.33.9 (138.68.33.9)  4.040 ms  4.034 ms  4.020 ms
 6  * * *
 7  142.251.70.106 (142.251.70.106)  5.344 ms dns.google (8.8.8.8)  2.114 ms  2.051 ms

在這個例子中,traceroute 命令用於追蹤到 IP 地址 “8.8.8.8” 的路由,這是 Google 的公共 DNS 伺服器之一。輸出顯示與前一個示例相同的資訊,包括處理資料包的路由器的 IP 地址和主機名,以及每個探測到達跳點並返回所花費的時間(以毫秒為單位)。我們可以看到,從源 IP “192.168.1.1” 開始,到達目的地需要 7 個跳點。最後一個跳點是 IP 地址 “8.8.8.8”,這是目標 IP 地址。

結論

traceroute 命令是一個強大的網路診斷工具,允許使用者跟蹤資料包從源到目的地的路由。它可以透過識別出現問題的特定跳點或路由器來用於排查網路問題,例如高延遲、資料包丟失和連線問題。瞭解本文中討論的 traceroute 命令、其選項和示例可以幫助網路管理員和工程師更有效地在 Linux 中診斷和解決網路問題。

更新於:2024年2月26日

5K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告