
# tcpdump 網絡排查實戰教學:由入門到進階嘅封包分析技巧
做 IT 嘅你一定試過俾人話「個 network 好慢」,但係又冇人講得出邊度出事。今日就同大家分享一個 Linux 神器 — **tcpdump**,等你可以自己落手落腳捉封包,唔使靠估。
## tcpdump 係乜嘢?
tcpdump 係 Linux 平台最經典嘅命令行封包擷取工具,佢可以即時擷取同分析經過網絡介面嘅所有封包。無論係排查連線問題、分析流量異常、定係做安全審計,tcpdump 都係必備技能。
## tcpdump 基本用法
最簡單嘅用法就係直接行:
sudo tcpdump -i eth0
呢個指令會擷取 eth0 介面上所有流量。但係現實環境流量好大,咁樣睇會眼花撩亂,所以要加 filter。
## tcpdump 常用 Filter 技巧
### 1. 指定主機
sudo tcpdump -i eth0 host 192.168.1.100
淨係睇同 192.168.1.100 有關嘅封包,雙向都包晒。
### 2. 指定 Port
sudo tcpdump -i eth0 port 443
淨係睇 HTTPS 流量。可以加 `src port` 或 `dst port` 指定方向:
sudo tcpdump -i eth0 dst port 3306
呢個淨係睇目的地係 MySQL port 嘅封包。
### 3. 組合 Filter
用 `and` / `or` 組合條件:
sudo tcpdump -i eth0 host 10.0.0.5 and port 80
淨係睇 10.0.0.5 嘅 HTTP 流量,精準到爆。
## tcpdump 進階實戰技巧
### 寫入檔案俾 Wireshark 分析
tcpdump 可以將封包 save 做 pcap 檔案,之後用 Wireshark 慢慢分析:
sudo tcpdump -i eth0 -w /tmp/capture.pcap host 192.168.1.0/24
`-w` 參數指定輸出檔案,`-C` 可以限制檔案大細(單位 MB):
sudo tcpdump -i eth0 -w /tmp/capture.pcap -C 100 -W 5
呢個指令會建立最多 5 個 100MB 嘅輪替檔案,唔怕塞爆硬碟。
### 讀取 pcap 檔案
tcpdump -r /tmp/capture.pcap
用 `-r` 讀返之前 save 低嘅封包,可以再加 filter:
tcpdump -r /tmp/capture.pcap 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'
呢個 filter 淨係顯示 TCP SYN 同 FIN 封包,幫你快速搵出連線建立同關閉嘅時間點。
### 顯示封包詳細內容
`-A` 參數可以顯示封包嘅 ASCII 內容,對 HTTP 除錯好有用:
sudo tcpdump -i eth0 -A port 80
`-X` 就同時顯示 HEX 同 ASCII:
sudo tcpdump -i eth0 -X port 443
### 唔做 DNS Reverse Lookup
預設 tcpdump 會嘗試將 IP reverse lookup 做 hostname,呢個過程會拖慢擷取速度。加 `-n` 跳過:
sudo tcpdump -i eth0 -n host 8.8.8.8
再加 `-nn` 就連 port number 都唔轉 service name,速度最快。
## tcpdump 實戰場景
### 場景一:排查 DNS 問題
sudo tcpdump -i eth0 -n port 53
即時睇到所有 DNS 查詢同回應,如果見到大量查詢冇回應,就知 DNS server 出事。
### 場景二:檢查 TLS Handshake
sudo tcpdump -i eth0 -n 'tcp port 443 and (tcp[tcpflags] & tcp-syn != 0)'
睇晒所有 HTTPS 連線建立請求,幫你判斷係 client 定 server 嗰邊 timeout。
### 場景三:監察異常流量
sudo tcpdump -i eth0 -n 'not port 22 and not port 443' -c 100
排除 SSH 同 HTTPS 之後,擷取頭 100 個封包。如果見到奇怪嘅 port 或者大量對外連線,就要提高警覺。
## tcpdump 效能貼士
1. **用 `-c` 限制封包數量**:`-c 1000` 擷夠 1000 個就停,避免無限擷取
2. **用 BPF filter 喺 kernel level 過濾**:tcpdump 嘅 filter 係用 BPF(Berkeley Packet Filter),喺 kernel space 已經過濾咗,唔會浪費 CPU
3. **避免喺 production 用 `-v` / `-vv`**:verbose mode 會增加處理開銷
## 總結
tcpdump 係每個 Linux 系統管理員必須掌握嘅工具。由基本嘅 host/port filter,到進階嘅 pcap 檔案分析同 BPF 語法,熟習咗之後排查網絡問題就事半功倍。下次有人話「個 network 慢」,你就可以好型咁話:「等我 tcpdump 睇睇先。」
記住:**捉到封包,就捉到真相。**



