網絡工程師必學:用 tcpdump 快速排查網絡故障(附實戰案例)

# 網絡工程師必學:用 tcpdump 快速排查網絡故障(附實戰案例) 做 IT 嘅朋友一定遇過呢種情況:個客打嚟話「上唔到網喎」、「個 server 好慢」、「VPN 成日斷」,但你 remote 入去睇又好似乜事都冇。呢個時候,**tcpdump** 就係你最好嘅朋友。 今日同大家分享幾個 tcpdump 實戰技巧,等你下次遇到網絡問題可以快速定位 root cause,唔使靠估。 ## 乜嘢...

網絡工程師必學:用 tcpdump 快速排查網絡故障(附實戰案例) - 文章重點速覽 infographic

# 網絡工程師必學:用 tcpdump 快速排查網絡故障(附實戰案例)

做 IT 嘅朋友一定遇過呢種情況:個客打嚟話「上唔到網喎」、「個 server 好慢」、「VPN 成日斷」,但你 remote 入去睇又好似乜事都冇。呢個時候,**tcpdump** 就係你最好嘅朋友。

今日同大家分享幾個 tcpdump 實戰技巧,等你下次遇到網絡問題可以快速定位 root cause,唔使靠估。

## 乜嘢係 tcpdump?

tcpdump 係 Linux 上最強大嘅命令行封包分析工具,可以即時擷取網絡介面上嘅所有 traffic,然後用 filter 篩選出你想要嘅封包。基本上所有 Unix-like 系統都內置咗,唔使額外安裝。

## tcpdump 基本用法

最簡單嘅用法就係直接 run:

sudo tcpdump -i eth0

呢個 command 會顯示 eth0 介面上所有經過嘅封包。但現實中咁樣睇會太多 noise,所以要加 filter。

## 實戰案例一:檢查特定 port 有冇 traffic

假設你個 web server 行緊 port 443,你想知到底有冇人 connect 緊:

sudo tcpdump -i eth0 port 443 -nn

`-nn` 參數好重要:唔做 DNS reverse lookup 同唔轉換 port name,快好多。輸出會類似:

14:32:01.123456 IP 192.168.1.100.54321 > 10.0.0.1.443: Flags [S], seq 123456789

見到 `Flags [S]` 即係 SYN packet,代表有人嘗試建立 TCP 連線。如果只得 SYN 冇後續,即係可能 firewall block 咗或者 server 冇回應。

## 實戰案例二:排查 DNS 問題

用户話「上到 Google 但上唔到公司 internal system」,好大機會係 DNS 出事:

sudo tcpdump -i eth0 port 53 -vv

`-vv` 會顯示詳細內容,你可以睇到 DNS query 嘅 domain name 同埋 server 回覆嘅 IP address。如果見到 query 出去但冇 response,即係 DNS server 有問題。

## 實戰案例三:擷取 HTTP headers 做 debug

有時要睇 API call 嘅 request/response headers:

sudo tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

呢個 command 會顯示 HTTP 嘅實際內容(`-A` = ASCII),你可以睇到 headers、cookies、甚至 response body。

## 實戰案例四:儲存封包俾同事分析

有時你要將 capture 咗嘅 traffic send 俾 network team 分析:

sudo tcpdump -i eth0 -w /tmp/capture.pcap host 192.168.1.50

`-w` 會將封包寫入 pcap file,之後可以用 Wireshark 打開慢慢分析。`host 192.168.1.50` 限制只 capture 呢部機嘅 traffic。

## 進階技巧:組合 filter

tcpdump 支援 Boolean expression,你可以組合多個條件:

sudo tcpdump -i eth0 'host 10.0.0.5 and (port 443 or port 80) and not port 22'

呢個 command 會 capture 10.0.0.5 嘅 HTTP/HTTPS traffic,但排除 SSH,等你唔會俾自己嘅 SSH session 幹擾。

## 常用 tcpdump 參數速查表

| 參數 | 用途 |
|——|——|
| `-i eth0` | 指定網絡介面 |
| `-nn` | 唔做 DNS/port name lookup |
| `-vv` / `-vvv` | 詳細輸出 |
| `-A` | 以 ASCII 顯示封包內容 |
| `-w file.pcap` | 儲存到檔案 |
| `-r file.pcap` | 讀取 pcap 檔案 |
| `-c 100` | 只 capture 100 個封包 |
| `-s 0` | 擷取完整封包(唔 truncate) |

## 總結

tcpdump 係每個網絡工程師必須熟練掌握嘅工具。記住幾個常用 filter pattern,下次遇到網絡問題就唔使靠估,直接用 data 説話。最緊要係:**先縮窄範圍,再加 detail** — 唔好一嚟就 `tcpdump -i any -vvv`,你會俾自己淹沒喺封包海入面。

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

有咩 tcpdump 問題歡迎留言討論!