# Linux tcpdump 網絡排查實戰:由入門到進階嘅封包分析技巧
做 IT 嘅你一定試過——個 server 明明 ping 到,但係 application 就係連唔到,又或者成日 timeout。呢個時候,你需要嘅唔係求神拜佛,而係 **tcpdump**。
tcpdump 係 Linux 世界最強大嘅封包擷取工具,幾乎所有 Unix-like 系統都內置。今日就同大家由淺入深,學識點樣用 tcpdump 快速排查網絡問題。
## 乜嘢係 tcpdump 封包分析?
tcpdump 係一個 command-line 嘅封包分析器(packet analyzer),佢可以即時擷取同顯示經過網絡介面嘅 TCP/IP 封包。簡單嚟講,佢就係你喺網絡層嘅「竊聽器」——你可以睇到每一粒經過你 server 嘅 data packet,包括來源 IP、目的地 IP、port number、payload 內容等等。
對於系統管理員同網絡工程師嚟講,tcpdump 封包分析係排查連線問題、偵測異常流量、甚至係安全審計嘅必備技能。
## tcpdump 基本用法:擷取你嘅第一個封包
首先,確保你有 root 權限(tcpdump 需要 raw socket access):
# 最基本:擷取所有經過 eth0 嘅封包
sudo tcpdump -i eth0
就咁一行,你已經可以睇到所有經過 eth0 嘅 traffic。但係現實中咁樣會爆到七彩,所以我哋需要加 filter。
# 只睇 TCP port 443 (HTTPS) 嘅 traffic
sudo tcpdump -i eth0 tcp port 443
# 只睇來自特定 host 嘅封包
sudo tcpdump -i eth0 host 192.168.1.100
# 組合 filter:睇特定 host + port
sudo tcpdump -i eth0 host 192.168.1.100 and tcp port 3306
## 進階 tcpdump 封包分析技巧
### 1. 寫入 pcap 檔案俾 Wireshark 分析
tcpdump 最勁嘅地方係可以將擷取到嘅封包儲存做 `.pcap` 檔案,之後用 Wireshark 慢慢分析:
# 擷取 1000 個封包並儲存
sudo tcpdump -i eth0 -w /tmp/capture.pcap -c 1000
# 之後可以用 tcpdump 讀返出嚟
tcpdump -r /tmp/capture.pcap
# 或者直接 SCP 去你部電腦用 Wireshark 開
### 2. 顯示封包詳細內容(verbose mode)
# -v 基本 verbose,-vv 更詳細,-vvv 最詳細
sudo tcpdump -i eth0 -vvv tcp port 443
# -A 以 ASCII 顯示 payload(可以睇到 HTTP header!)
sudo tcpdump -i eth0 -A tcp port 80
# -X 同時顯示 hex + ASCII
sudo tcpdump -i eth0 -X tcp port 443
### 3. 實用 troubleshooting scenarios
**場景一:排查 MySQL 連線問題**
# 睇下有冇 MySQL handshake
sudo tcpdump -i any tcp port 3306 -vvv
**場景二:檢查 DNS 查詢**
sudo tcpdump -i any udp port 53 -vvv
**場景三:監察 HTTP request/response**
sudo tcpdump -i any -A 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
## tcpdump Filter 語法進階
tcpdump 使用 BPF(Berkeley Packet Filter)語法,支援非常精細嘅 filtering:
# 只睇 SYN 封包(偵測 port scan)
sudo tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0'
# 只睇特定 subnet
sudo tcpdump -i eth0 net 10.0.0.0/8
# 排除 SSH traffic(避免睇到自己嘅 session)
sudo tcpdump -i eth0 not port 22
# 擷取大封包(MTU 問題排查)
sudo tcpdump -i eth0 'greater 1500'
## 常見陷阱同注意事項
1. **權限問題**:tcpdump 必須 root 或者有 `CAP_NET_RAW` capability 先可以執行
2. **Performance impact**:喺 high-traffic server 上面不加 filter 咁行 tcpdump 會食好多 CPU,記得加 filter
3. **加密 traffic**:HTTPS/TLS traffic 嘅 payload 係加密嘅,tcpdump 睇唔到內容,但係你仍然可以分析 handshake 過程同連線狀態
4. **Disk space**:`-w` 寫 pcap 檔案時要留意 disk space,特別係長時間擷取
## 總結
tcpdump 封包分析係每個 Linux 系統管理員必學嘅技能。由基本嘅 traffic monitoring 到進階嘅 security auditing,tcpdump 都係你最可靠嘅工具。記住:下次遇到網絡問題,唔好靠估——擷取封包,用數據説話!
🔗 參考資料:NVD NIST 漏洞資料庫
希望呢篇教學幫到你。如果你有咩 tcpdump 使用心得或者遇到過咩有趣嘅 troubleshooting case,歡迎留言分享!
#server #Linux #TLS #安全 #monitoring




