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 埠範圍 base 至 base + 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_EXPERCTED 及 PORT_UNREACHABLE (詳細輸出) 以外的封包。 |
-w WaitTime | 設定等待探測回應的時間 (以秒為單位)。 預設值是 3 秒。 |
參數
項目 | 說明 |
---|---|
主機 | 依主機名稱或 IP 號碼指定目的地主機。 缺少參數。 |
PacketSize | 指定探測資料封包長度。 預設封包大小由 traceroute 指令根據送出介面的 MTU 來決定。 |
安全
範例
- 範例使用及輸出如下:
第 2 行和第 3 行相同,因為第二個躍點系統上的核心中有錯誤 (lbl-csam.arpa) 轉遞零存活時間的封包。 因為國家科學基金會網路 (NSFNet) ,所以主機名稱不會列印在第 6 行到第 10 行129.140) 不提供其節點的位址至名稱轉換。[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
- 另一個輸出範例可能是:
在此範例中,正好有一半的 12 個閘道中繼站 (13 是最終目的地)「遺漏」。 不過,這些中繼站實際上不是閘道。 目的地主機 (執行 Sun OS3.5的 Sun-3 工作站) 在其 ICMP 回覆中使用來自到達資料包的 ttl 作為 ttl; 因此,回覆在傳回路徑上逾時。 因為 ICMP 未傳送給 ICMP ,所以未收到任何通知。 ! (驚嘆號) 在每一個來回時間之後指出某種類型的軟體不相容問題。 (在 traceroute 指令發出路徑長度兩倍的探測之後診斷出原因。 目的地主機實際上只有七個中繼站距離。)[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!