traceroute 指令

用途

列印 IP 封包到網路主機的路徑。

語法

traceroute [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] [ -d ] [ -g gateway_addr ] [ -s SRC_Addr ] [  -t TypeOfService ] [ -f flow ] [ -v ] [ -w WaitTime ] 主機 [ PacketSize ]

說明

注意: traceroute 指令預期用於網路測試、測量及管理。 它應該主要用於手動錯誤隔離。 因為它會對網路造成負載,所以在正常作業期間或從自動化 Script 中不應使用 traceroute 指令。

traceroute 指令會嘗試追蹤 IP 封包所遵循至網際網路主機的路徑,方法是啟動具有存活時間小上限 (Max_ttl 變數) 的 UDP 探測封包,然後在此過程中接聽來自閘道的 ICMP TIME_EXceeded 回應。 探測器以一個躍點的 Max_ttl 值啟動,每次增加一個躍點,直到傳回 ICMP PORT_UNREACHABLE 訊息為止。 ICMP PORT_UNREACHABLE 訊息指出已找到主機,或指令已達到追蹤所容許的中繼站數目上限。

traceroute 指令會在每一個 Max_ttl 設定傳送三個探測,以記錄下列項目:

  • Max_ttl
  • 閘道的位址
  • 每一個成功探測的來回轉換時間

使用 -q 旗標可以增加傳送的探測數。 如果探測回答來自不同的閘道,則指令會列印每一個回應系統的位址。 如果在 3 秒逾時間隔內沒有來自探測器的回應,則會列印該探測器的 * (星號)。

traceroute 指令會列印! (驚嘆號) 在來回轉換時間之後 (如果 Max_ttl 值是一個中繼站或更少)。 一個躍點或更少的存活時間值上限通常表示不同網路軟體處理 ICMP 回覆的方式不相容。 通常可以透過將所使用的最後一個 Max_ttl 值加倍,然後再試一次來解決不相容。

來回表示法之後的其他可能註釋如下:

項目 說明
!H 無法呼叫到主機
!否 無法連接網路
!P 無法呼叫到通訊協定
!S 來源路徑失敗
!F 需要片段化

如果大部分探測導致錯誤,則 traceroute 指令會結束。

traceroute 指令的唯一必要參數是目的地主機名稱或 IP 號碼。 traceroute 指令將根據送出介面的「最大傳輸單位 (MTU)」來決定探測封包的長度。 UDP 探測封包會設為不太可能的值,以防止目的地主機進行處理。

旗標

項目 說明
-d 啟用 Socket 層次除錯。
-f 流程 在 IPv6 封包標頭中設定流程標籤欄位。 預設值是 0。
-g gateway_addr 使用 IP 來源遞送選項,透過指定的閘道遞送送出的封包。 在使用此旗標之前,路由器必須啟用 IP 來源遞送。 此旗標僅適用於 IP version 6 位址。
-m Max_ttl 設定送出探測封包中使用的存活時間上限 (中繼站數目上限)。 預設值是 30 個中繼站 (TCP 連線所用的相同預設值)。
-n 以數字方式列印中繼站位址,而不是以符號及數字方式列印。 此旗標會針對在路徑上找到的每一個閘道儲存名稱/伺服器位址至名稱查閱。
-p 設定探測器中使用的基本 UDP 埠號。 預設值為 33434。 traceroute 指令視目的地主機上開啟的 UDP 埠範圍 basebase + nhops- 1 而定。 如果 UDP 埠無法使用,此選項可用來挑選未用的埠範圍。
-q 查詢 指定 traceroute 指令在每一個 Max_ttl 設定上傳送的探測數。 預設值是三個探測。
-r 略過一般遞送表,並將探測封包直接傳送至連接網路上的主機。 如果指定的主機不在直接連接的網路上,則會傳回錯誤。 此選項可用來透過 routed 常駐程式遞送表中未登錄的介面,向本端主機發出 ping 指令。
-s SRC_Addr 使用數值形式的下一個 IP 位址作為送出探測封包中的來源位址。 在具有多個 IP 位址的主機上,可以使用 -s 旗標來強制來源位址不是傳送探測封包之介面的 IP 位址。 如果下一個 IP 位址不是機器的其中一個介面位址,則會傳回錯誤,且不會傳送任何內容。
-t TypeOf服務 將探測封包中的 TypeOf服務 變數設為 0 到 255 範圍內的十進位整數。 預設值是 0。 此旗標可用來調查不同的服務類型是否會導致不同的路徑。 如需相關資訊,請參閱 Performance Tools Guide and Reference中的 TCP/IP Protocols 。 有用的值為 -t 16 (低延遲) 及 -t 8 (高傳輸量)。
-v 接收 TIME_EXPERCTEDPORT_UNREACHABLE (詳細輸出) 以外的封包。
-w WaitTime 設定等待探測回應的時間 (以秒為單位)。 預設值是 3 秒。

參數

項目 說明
主機 依主機名稱或 IP 號碼指定目的地主機。 缺少參數。
PacketSize 指定探測資料封包長度。 預設封包大小由 traceroute 指令根據送出介面的 MTU 來決定。

安全

RBAC 使用者注意: 這個指令可以執行特許作業。 只有專用使用者可以執行專用作業。 如需授權及專用權的相關資訊,請參閱 Security中的 Privileged Command Database。 如需與此指令相關聯的專用權及授權清單,請參閱 lssecattr 指令或 getcmdattr 次指令。

範例

  1. 範例使用及輸出如下:
    [yak 71]% traceroute nis.nsf.net.
    traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 56 byte packet
     1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
     2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
     3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
     4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
     5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
     6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
     7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
     8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
     9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
    10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
    11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms
    第 2 行和第 3 行相同,因為第二個躍點系統上的核心中有錯誤 (lbl-csam.arpa) 轉遞零存活時間的封包。 因為國家科學基金會網路 (NSFNet) ,所以主機名稱不會列印在第 6 行到第 10 行129.140) 不提供其節點的位址至名稱轉換。
  2. 另一個輸出範例可能是:
    [yak 72]% traceroute rip.Berkeley.EDU (128.32.131.22)
    traceroute to rip.Berkeley.EDU (128.32.131.22), 30 hops max
     1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
     2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms
     3 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 39 ms 19 ms
     4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms
     5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms
     6 csgw/Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms
     7 * * *
     8 * * *
     9 * * *
    10 * * *
    11 * * *
    12 * * *
    13 rip.Berkeley.EDU (128.32.131.22) 59 ms! 39 ms! 39 ms!
    在此範例中,正好有一半的 12 個閘道中繼站 (13 是最終目的地)「遺漏」。 不過,這些中繼站實際上不是閘道。 目的地主機 (執行 Sun OS3.5的 Sun-3 工作站) 在其 ICMP 回覆中使用來自到達資料包的 ttl 作為 ttl; 因此,回覆在傳回路徑上逾時。 因為 ICMP 未傳送給 ICMP ,所以未收到任何通知。 ! (驚嘆號) 在每一個來回時間之後指出某種類型的軟體不相容問題。 (在 traceroute 指令發出路徑長度兩倍的探測之後診斷出原因。 目的地主機實際上只有七個中繼站距離。)