← Back to list

[Linux] 網路路徑追蹤(traceroute)

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

Chacha · 2025-09-26 16:23 · 0 claps · 4.6 min read
#linux #linux-commands #traceroute #chachalearn
Open on Medium ↗
Wiki topics: 🔓 · Open Source 🥊 · Combat Sports

[Linux] 網路路徑追蹤(traceroute)

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 指令後,螢幕上會出現多行輸出資料。這是我們封包經過的完整路徑,範例中乍看之下好像一堆數字與星號,有點令人無所適從,所以以下來介紹一下,要如何看懂以上封包範例回傳資料。

  1. 每一行代表一個路由跳點 (Hop) ● 路由跳點我們可以視為是封包所經過的地方 首列顯示的數字代表是封包經過 Hop 的順序。
  2. 第二列代表封包停留主機 根據帶入指令參數的不同,會顯示 IP 位置或是 DNS 主機名稱 讓我們可以知道目前停留跳點主機位置
  3. 第三列由秒數所組成,顯示其封包往返延遲時間在預設不帶入參數調整的情況下通常會顯示 3 組往返時間數值 數字越小代表速度越快,若延遲逐漸上升或有明顯跳動,通常就是問題出現的位置 藉由封包傳輸速度或是穩定度來了解封包狀況
  4. 有時可能會*出現特殊符號 ` ` ● **代表該節點並沒有回覆封包,可能是防火牆設定為不回應,屬正常現象,不代表網路一定斷掉,只要後續 hop 還有回應,就表示封包仍然順利往前傳送。

透過判讀及了解這些資訊,我們就能從結果中觀察出是哪個節點開始延遲異常、封包丟失,甚至完全中斷,進而更精準地定位問題。

常見選項

  • -n:只顯示 IP,不做 DNS 解析,加快速度
  • -w num:設定每一跳的等待回應時間
  • -m num:限制最大跳數(預設 30),可以避免無限等待,快速中斷追蹤
  • -q num:設定每一跳發送的探測封包數(預設 3)

使用情境

以下是我列出幾個在實務中可以使用 traceroute 指令檢查的情況,並提供相對應得簡單狀況排查方式

  1. 使用 ping 指令可以執行,但網路狀況不理想 → 使用 traceroute 看看卡在哪一跳,再根據跳數 IP 位置,來確認是本地網路、ISP 還是目標端的問題,是否能作調整
  2. 跨國連線的專案或雲端服務 → 使用 traceroute 查看整體網路速度是否會影響,可根據傳輸速度對專案或是其他方面做相對應的調整或是部屬 CDN 等
  3. 伺服器連線品質不穩 → 使用 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