
# 用 tcpdump 捉包:IT 人必學嘅網絡排錯神技
做 IT 嘅你,有冇試過啲奇怪嘅網絡問題,搞到你頭都大埋?無論係 server 無啦啦 timeout、定係懷疑有木馬偷偷連出去,識用 **tcpdump** 捉包,真係可以幫你慳返幾十個鐘頭嘅排查時間。今次就同大家由零開始,step-by-step 教你點樣用呢個神級工具。
## tcpdump 係乜嘢?
tcpdump 係一個命令行嘅網絡封包分析工具,可以將流經你部機張網卡嘅數據包「照鏡」咁顯示出嚟。無論係 TCP、UDP、ICMP,全部都可以捉得到。佢喺幾乎所有 Linux 發行版都有預裝,真係 IT 人嘅隨身瑞士刀。
## 基本用法:捉包入門
最簡單嘅指令就係直接行 tcpdump,但咁樣會捉到海量封包,睇到你眼都花。我哋一步一步嚟。
第一步,睇下你部機有邊幾張網卡:
tcpdump -D
呢個指令會列出所有可用嘅網絡介面,例如 `eth0`、`ens33`、`lo` 等等。記低你想捉嘅嗰張。
第二步,指定介面開始捉包:
sudo tcpdump -i eth0
行完之後,你就會見到一大堆封包資訊不停咁刷出嚟。想停嘅時候撳 `Ctrl+C` 就得。
## 進階過濾:唔想見到成海封包?
呢個先係 tcpdump 最勁嘅地方——過濾條件。你可以用 `host`、`port`、`src`、`dst` 呢啲關鍵字,精準咁捉你想睇嘅嘢。
只捉某個 IP 嘅流量:
sudo tcpdump -i eth0 host 192.168.1.100
只捉某個 port(例如 SSH 嘅 22):
sudo tcpdump -i eth0 port 22
只捉 HTTP 流量:
sudo tcpdump -i eth0 port 80 or port 443
如果你想睇某部機 send 出嚟嘅嘢,可以用 `src`:
sudo tcpdump -i eth0 src host 10.0.0.5
## 將結果存做檔案慢慢分析
即時睇未必夠,好多時你需要將捉到嘅封包存做 `.pcap` 檔,之後再用 Wireshark 慢慢解剖。
sudo tcpdump -i eth0 -w /tmp/capture.pcap
`-w` 就係寫入檔案嘅意思。之後你可以用 `-r` 讀返出嚟:
tcpdump -r /tmp/capture.pcap
甚至限制捉包數量,唔想佢無限咁跑:
sudo tcpdump -i eth0 -c 100 -w /tmp/capture.pcap
`-c 100` 代表捉夠 100 個封包就自動停。
## 實戰場景:點解個網站 load 唔到?
假設你個網站突然 load 唔到,你可以咁樣排錯。首先捉 HTTP 流量:
sudo tcpdump -i eth0 port 80 -A
`-A` 係將封包內容以 ASCII 形式顯示,咁你就可以直接睇到 HTTP 請求同回應,例如有冇出現 `500 Internal Server Error` 或者 connection reset 之類嘅情況。
如果你想睇 TCP 三次握手有冇成功,可以咁樣:
sudo tcpdump -i eth0 tcp[tcpflags] & tcp-syn != 0
呢個指令只顯示 SYN 封包,幫你判斷係咪握手失敗。
## 總結
🔗 參考資料:NVD NIST 漏洞資料庫
tcpdump 係每個 IT 人都應該掌握嘅基本功。由最基本嘅捉包,到進階過濾、存檔分析,掌握咗佢,網絡排錯真係事半功倍。下次遇到網絡問題,唔使再盲頭烏蠅咁亂估,直接捉包睇真章啦!



