如何用Traceroute追蹤網絡路徑?

Traceroute(Windows 上稱 tracert)是逐跳列出封包由本機到目的地所經路由器的診斷工具:它顯示路徑上每一跳的地址與往返延遲,讓工程師知道「封包在哪裏斷、在哪裏慢」。與只回答「通或不通」的 ping 相比,Traceroute 能把故障定位到具體節點。本頁講解它借助 TTL 與 ICMP 的工作原理、各系統的使用方法、輸出的正確解讀,以及公司網絡排障的實戰流程。

工作原理:TTL 與 ICMP 超時

每個 IP 封包標頭都有一個 TTL(Time To Live)欄位,路由器每轉發一次便把它減一;當 TTL 減至零,路由器丟棄封包,並根據 RFC 792(ICMP 協定標準)向來源發出 Time Exceeded(類型 11)訊息。TTL 的原意是防止封包在路由迴路中永遠打轉,Traceroute 卻反過來利用它做測量。

根據 Wikipedia 對 Traceroute 的介紹,工具先發出 TTL=1 的探測封包:封包在第一跳路由器已「壽終」,該路由器回覆超時訊息,其來源地址便是第一跳的身份;接着發 TTL=2、TTL=3……每次多走一跳,逐一收集沿途路由器的地址與往返時間,直至封包成功到達目的地——目的主機回覆的不再是超時訊息,而是 Echo Reply(ICMP 探測)或 Port Unreachable(UDP 探測),工具便知道路徑已完整。每一跳預設發三個探測封包,因此輸出每行有三個延遲數字。

各系統的使用方法

系統指令預設探測方式常用參數
Windowstracert www.example.comICMP Echo Request-d 不解析主機名(加快)、-h 最大跳數
macOS/Linuxtraceroute www.example.comUDP 高埠號-I 改用 ICMP、-T 改用 TCP、-n 不解析主機名
Linux(另選)mtr www.example.comICMP,持續統計結合 ping 與 traceroute,長時間統計每跳遺失率
網絡設備traceroute(交換機/路由器 CLI)視乎廠商可指定來源接口,測試特定路徑

由於中途防火牆對 ICMP、UDP、TCP 的放行政策各異,同一路徑用不同探測方式可能得出不同結果:ICMP 全被攔截時,改以 TCP 443 探測(模擬正常網頁流量)往往能走得更遠。間歇性問題則建議用 mtr 長時間統計,比單次 Traceroute 更能反映每跳的遺失率。ICMP 的基礎概念可參考什麼是 ICMP 與 Ping

正確解讀輸出

① 個別星號不必緊張

某一跳顯示 * 但後續各跳正常,多數只是該路由器不回應探測或對 ICMP 限速,路徑本身無恙;連續星號直到最後而目的地不可達,斷點才在最後有回應的節點之後。

② 延遲要看趨勢

路由器回覆探測屬低優先級工作,單一跳延遲偏高而其後回落,通常只是該節點「回覆得慢」;真正的擁塞是延遲由某跳起持續上升並一直延續到目的地。

③ 回程可能不同路

Traceroute 顯示的是去程路徑,回程可以完全不同(不對稱路由);量得的往返延遲是兩程之和,個別跳的異常需結合兩端測試判斷。

④ 留意路徑突變

與平日基準對比,路徑突然多了繞行節點或延遲大增,可能是上游改道或故障切換的結果;保留平時正常的輸出作基準,排障時一比便知。

公司網絡排障實戰流程

  1. 確認問題——先 ping 目的地與預設閘道,確認故障存在並記下遺失率與延遲。
  2. 內網先行——traceroute 目的地:第一跳(預設閘道)已不通,問題在內網交換、VLAN 或閘道設備,轉向內網排查。
  3. 判斷出口——斷點在公司出口後首一兩跳,多屬寬頻線路或供應商邊緣問題;把輸出截圖連同時間一併向供應商報障,可大幅加快跟進。
  4. 對照測試——以流動數據熱點再跑一次:兩邊同樣有問題多屬目的地或上游網絡;只有公司線路有問題則集中在本地出口。
  5. 持續監察——間歇性問題用 mtr 長時間統計每跳遺失率,鎖定不穩定節點後再跟進。

香港常見場景:商廈辦公室存取內地或海外伺服器慢,Traceroute 可以分辨是本地出口擁塞還是跨境段延遲;屋苑監控平台連線不穩,則可從管理處到雲平台逐跳定位。把結果保存下來,是與網絡供應商溝通時最有力的證據。

不確定如何應用於實際環境?我們的工程師可按現場情況提供建議,免費解答及報價。

WhatsApp 即時查詢

常見問題

Traceroute 的原理是什麼?
它巧妙利用 IP 標頭的 TTL(Time To Live)欄位。路由器每轉發一個封包便把 TTL 減一,減至零時丟棄封包並向來源回覆 ICMP Time Exceeded 訊息。Traceroute 先發 TTL=1 的探測封包,第一跳路由器回覆超時訊息,於是得知第一跳的地址;再發 TTL=2 得知第二跳,如此遞增,直至封包到達目的地收到最終回覆為止,逐跳拼出完整路徑,並記錄每跳的往返延遲。
tracert 與 traceroute 有什麼分別?
兩者原理相同,分別在於系統與預設探測方式:Windows 的 tracert 以 ICMP Echo Request 作探測封包;Linux 與 macOS 的 traceroute 預設用 UDP 高埠號封包(亦可以參數改用 ICMP 或 TCP)。由於中途防火牆對 ICMP、UDP 與 TCP 的放行政策不同,同一路徑用不同工具可能得出不同結果;排障時若一種探測方式全被攔截,可轉用另一種方式(例如以 TCP 443 探測)再試。
輸出中的星號(*)代表什麼?
星號表示該跳在時限內沒有回覆探測封包。個別跳顯示星號但後續各跳正常,通常只是該路由器被設定為不回應探測或對 ICMP 限速,路徑本身並無問題,不必緊張;相反,若由某一跳開始之後全部是星號而且目的地不可達,故障點大概率在最後一個有回應的節點之後,這正是 Traceroute 定位故障位置的核心用法。
每一跳顯示三個延遲數字,應該怎樣解讀?
工具預設向每一跳發送三個探測封包,三個數字就是三次的往返時間(RTT)。三個數字接近代表該跳延遲穩定;差異很大或偶有遺失,可能反映該段鏈路擁塞或路由器對探測回覆限速。要注意路由器產生 ICMP 回覆屬低優先級工作,某一跳延遲偏高但其後各跳延遲正常,多數只是該路由器回覆得慢,並不代表實際轉發路徑有問題;判斷應以「延遲由某跳開始持續上升並延續到目的地」為準。
公司網絡出問題時,Traceroute 應該怎樣用?
先 ping 目的地確認問題存在,再 traceroute 觀察斷點:若第一跳(預設閘道)已不通,問題在內網或閘道設備;若卡在公司出口之後的第一、二跳,多數是寬頻線路或網絡供應商邊緣問題,可致電報障並附上結果;若斷點在更遠的中轉節點,則屬上游網絡問題,可提供 Traceroute 輸出讓供應商跟進。分別由內網及以流動數據各跑一次對比,可快速分辨是公司網絡還是外部網絡的問題。

網絡時快時慢找不到原因?

我們的工程師可為商廈、舖面與屋苑進行全面網絡健康檢查,由內網逐跳追蹤到對外線路測試,定位擁塞與故障根源並提出改善方案,歡迎查詢及免費報價。

WhatsApp 免費報價

延伸閱讀

若閣下正計劃相關工程或需要選購設備,歡迎瀏覽網絡工程服務了解方案詳情,或透過網上快速報價與我們的工程師聯絡。

產品規格以原廠最新文件為準;有需要請聯絡我們工程師。