[Linux] 網路路徑追蹤(traceroute)
在上次的學習中,我們探討到關於雲端部屬時,我們對網路的檢查指令。不過在實務操作上,我們可能會碰到「可以 ping 通,但是封包傳送接收速度很慢」的情況,此時我們使用 ping 指令就無法反映真實情況。
[Linux] 網路路徑追蹤(traceroute)

traceroute
在上次的學習中,我們探討到關於雲端部屬時,我們對網路的檢查指令。不過在實務操作上,我們可能會碰到「可以 ping 通,但是封包傳送接收速度很慢」的情況,此時我們使用 ping 指令就無法反映真實情況。
碰到這種情況時,原先以為是 EC2 所設定的網路寬頻問題,但在透過後續指令學習後,才找到原因並解決,發現問題並不在於頻寬,而是中間路由節點出了狀況。這讓我開始意識到,光是知道主機之間能不能進行連通還不夠,我們還需要一個能夠追蹤封包的完整路徑的指令,才能更精準地定位問題所在。
所以,今天想跟大家分享的是,如何透過指令來追蹤網路封包路徑 traceroute,來排除網路不穩或是連線相關問題。
traceroute
在 Linux 環境中,traceroute 是用來追蹤封包路徑的,他會顯示封包從本機到目標主機之間的完整路徑,並且提供每一跳(Hop)的延遲時間,方便使用者找出問題點,以下是基本語法
基本語法
traceroute [option] [destination]
-參數 -目標主機 IP 位置或網域名稱
我們這次也以 Google 做為追蹤的目標主機😂,以下是 traceroute 指令範例顯示內容
traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 192.168.1.1 1.123 ms 0.921 ms 0.845 ms
2 10.0.0.1 3.234 ms 3.120 ms 3.002 ms
3 168.95.98.1 8.543 ms 8.421 ms 8.399 ms
4 220.128.1.65 12.234 ms 12.110 ms 12.090 ms
5 72.14.223.20 28.320 ms 28.200 ms 28.178 ms
6 108.170.250.49 32.456 ms 32.321 ms 32.299 ms
7 142.250.56.163 35.654 ms 35.530 ms 35.410 ms
8 8.8.8.8 36.876 ms 36.752 ms 36.699 ms
當我們執行 traceroute 指令後,螢幕上會出現多行輸出資料。這是我們封包經過的完整路徑,範例中乍看之下好像一堆數字與星號,有點令人無所適從,所以以下來介紹一下,要如何看懂以上封包範例回傳資料。
- 每一行代表一個路由跳點 (Hop) ● 路由跳點我們可以視為是封包所經過的地方 ● 首列顯示的數字代表是封包經過 Hop 的順序。
- 第二列代表封包停留主機 ● 根據帶入指令參數的不同,會顯示 IP 位置或是 DNS 主機名稱 ● 讓我們可以知道目前停留跳點主機位置
- 第三列由秒數所組成,顯示其封包往返延遲時間, ● 在預設不帶入參數調整的情況下通常會顯示 3 組往返時間數值 ● 數字越小代表速度越快,若延遲逐漸上升或有明顯跳動,通常就是問題出現的位置 ● 藉由封包傳輸速度或是穩定度來了解封包狀況
- 有時可能會*出現特殊符號 ` ` ● **代表該節點並沒有回覆封包,可能是防火牆設定為不回應,屬正常現象,不代表網路一定斷掉,只要後續 hop 還有回應,就表示封包仍然順利往前傳送。
透過判讀及了解這些資訊,我們就能從結果中觀察出是哪個節點開始延遲異常、封包丟失,甚至完全中斷,進而更精準地定位問題。
常見選項
- -n:只顯示 IP,不做 DNS 解析,加快速度
- -w num:設定每一跳的等待回應時間
- -m num:限制最大跳數(預設 30),可以避免無限等待,快速中斷追蹤
- -q num:設定每一跳發送的探測封包數(預設 3)
使用情境
以下是我列出幾個在實務中可以使用 traceroute 指令檢查的情況,並提供相對應得簡單狀況排查方式
- 使用 ping 指令可以執行,但網路狀況不理想
→ 使用
traceroute看看卡在哪一跳,再根據跳數 IP 位置,來確認是本地網路、ISP 還是目標端的問題,是否能作調整 - 跨國連線的專案或雲端服務
→ 使用
traceroute查看整體網路速度是否會影響,可根據傳輸速度對專案或是其他方面做相對應的調整或是部屬 CDN 等 - 伺服器連線品質不穩
→ 使用
traceroute來查看使否是在特定節點出現問題或是封包遺失,可以做瞭解及偵測。
注意事項
- 在 Windows 系統中,也有著與
traceroute的指令類似功能的指令,是使用tracert這個指令,但輸出格式略有不同。 - 在某些 Linux 的發行版中,
traceroute可能不是預設指令,需要額外進行安裝
這次的學習經驗對我來說幫助很大。雖然我本身還不夠專業,但我現在可以透過封包傳輸路徑以及延遲時間,來先做初步的網路問題判斷,之後再去更深入了解及排查。整體來說是相當實用,因為這讓我在面對問題時更有方向,不會像在尚未學習前一樣,像無頭蒼蠅一樣亂亂尋找原因。
而在初步了解指令並實際操作使用後,才知道確認本身對於網路知識還需要再加強(雖然本身就有點薄弱😅),加上查找資料時發現,其實traceroute 指令是還有許多參數可以做更細節的查找及使用,未來也會做深入學習研究的,希望這篇分享能對你在工作或學習上帶來幫助,也期待我們能一起成長,我們下篇學習文章見!🙋♂️
參考資料: [1] man7:Traceroute [2] IBM:traceroute 指令 [3]Mr. 沙先生:在 CentOS 7 中所不見的命令 — Round 1: ifconfig、route、netstat、traceroute
메타데이터
- post_id
- 04b244ca2c2a
- slug
- linux-網路路徑追蹤-traceroute-04b244ca2c2a
- url
- https://medium.com/@chacha0519/linux-%E7%B6%B2%E8%B7%AF%E8%B7%AF%E5%BE%91%E8%BF%BD%E8%B9%A4-traceroute-04b244ca2c2a
- canonical_url
- https://medium.com/@chacha0519/linux-%E7%B6%B2%E8%B7%AF%E8%B7%AF%E5%BE%91%E8%BF%BD%E8%B9%A4-traceroute-04b244ca2c2a
- author_url
- https://medium.com/@chacha0519
- status
- ok
- fetched_at
- 2026-07-27 09:19:11