用 Linux 指令快速排查網絡延遲問題:ping、traceroute、mtr 實戰教學

# 用 Linux 指令快速排查網絡延遲問題:ping、traceroute、mtr 實戰教學 做 IT 嘅朋友成日都會遇到一個情況:用户話「個網好慢」、「連唔到個 server」,但係又講唔出實際問題喺邊。今日就同大家分享幾個 Linux 網絡排查嘅基本功,用 ping、traceroute 同 mtr 三件法寶,幫你快速定位網絡延遲問題。 ## 點解要識網絡延遲排查? 網絡延遲(latency...

用 Linux 指令快速排查網絡延遲問題:ping、traceroute、mtr 實戰教學 - 文章重點速覽 infographic

# 用 Linux 指令快速排查網絡延遲問題:ping、traceroute、mtr 實戰教學

做 IT 嘅朋友成日都會遇到一個情況:用户話「個網好慢」、「連唔到個 server」,但係又講唔出實際問題喺邊。今日就同大家分享幾個 Linux 網絡排查嘅基本功,用 ping、traceroute 同 mtr 三件法寶,幫你快速定位網絡延遲問題。

## 點解要識網絡延遲排查?

網絡延遲(latency)係指數據由你部機去到目標 server 再返嚟所需嘅時間。延遲高唔一定代表斷線,但係會令到應用程式反應慢、網頁 load 得耐、甚至 remote desktop 操作 lag 到用唔到。識得用正確嘅工具去量度延遲,先可以判斷問題係出喺你本地網絡、ISP、定係目標 server 本身。

## 第一件法寶:ping 基本延遲測試

ping 係最簡單直接嘅工具,用 ICMP 協議去測試你同目標之間嘅來回時間(RTT)。

ping -c 10 google.com

上面呢個指令會 send 10 個 ICMP packet,然後顯示每個 packet 嘅 RTT。輸出大概係咁:

64 bytes from 142.250.200.14: icmp_seq=1 ttl=117 time=12.3 ms
64 bytes from 142.250.200.14: icmp_seq=2 ttl=117 time=11.8 ms

留意 `time=` 後面嘅數值,就係來回延遲。一般嚟講:

– **< 20ms**:非常好,本地或同城 - **20-50ms**:正常,跨城市 - **50-100ms**:偏慢,可能跨國 - **> 100ms**:明顯延遲,需要進一步排查

如果 ping 出現 `timeout` 或者 packet loss,就代表有問題。可以用 `-i` 參數加快發送頻率,或者 `-s` 加大 packet size 去測試大封包傳輸。

## 第二件法寶:traceroute 追蹤路徑

ping 只係話你知「有幾慢」,但係唔會話你知「慢喺邊一段」。traceroute 就係用嚟追蹤數據由你部機去到目標,中間經過邊啲 router。

traceroute google.com

輸出會列出每一跳(hop)嘅 IP 同延遲:

 1  192.168.1.1 (192.168.1.1)  1.2 ms  1.1 ms  1.3 ms
 2  10.0.0.1 (10.0.0.1)  5.4 ms  5.2 ms  5.6 ms
 3  203.123.45.67 (203.123.45.67)  8.9 ms  9.1 ms  8.8 ms

每一跳都會 send 三個 packet,顯示三個延遲數值。如果你見到某一跳延遲突然飆升,或者出現 `* * *`(代表冇回應),嗰一段就係問題所在。

## 第三件法寶:mtr 結合兩者優勢

mtr 係 ping 同 traceroute 嘅結合體,佢會持續追蹤路徑,同時顯示每一跳嘅延遲、packet loss 統計。呢個係我最推薦嘅工具,因為佢可以睇到延遲係持續性定係間歇性。

mtr -r -c 100 google.com

`-r` 代表 report mode(輸出一次就停),`-c 100` 代表 send 100 個 packet。輸出會顯示每一跳嘅 loss%、平均延遲、最差延遲等:

HOST: my-server                Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.1.1            0.0%   100    1.2   1.3   1.1   2.5   0.2
  2.|-- 10.0.0.1               0.0%   100    5.4   5.5   5.2   6.1   0.1
  3.|-- 203.123.45.67          2.0%   100    8.9   9.2   8.8  45.3   4.5

留意第三跳嘅 `Wrst` 去到 45.3ms,而 `Avg` 只係 9.2ms,呢個就代表有間歇性延遲,可能係嗰個 router 負載過高。

## 實戰:點樣判斷問題位置?

假設你 ping 一個 server 發現延遲好高,可以咁樣逐步排查:

1. **先 ping 自己嘅 gateway**(通常係 192.168.1.1 或者 10.0.0.1),如果呢度已經慢,問題喺你本地網絡(Wi-Fi 幹擾、switch 壞、cable 鬆)。
2. **再 traceroute 去目標**,睇下邊一跳開始慢。
3. **用 mtr 持續監測**,判斷延遲係咪間歇性。

如果延遲喺你 ISP 嗰一段(通常係第 3-5 跳)開始飆升,咁就係 ISP 問題,你可以聯絡佢哋。如果延遲喺目標 server 嗰一段先出現,咁就係對方 server 或者佢哋嘅網絡問題。

## 總結

網絡延遲排查唔使好複雜,識得用 ping、traceroute、mtr 呢三件法寶,已經可以解決大部分日常問題。記住一個原則:**先定位,再解決**。唔好一見到慢就亂咁 reboot,先揾出問題喺邊一段,先可以對症下藥。

🔗 參考資料:NVD NIST 漏洞資料庫

下次遇到用户投訴「個網好慢」,你就可以好有型咁開個 terminal,用 mtr 一查,即刻知道問題喺邊。