用 tcpdump 捉包:IT 人必學嘅網絡排錯神技

# 用 tcpdump 捉包:IT 人必學嘅網絡排錯神技 做 IT 嘅你,有冇試過啲奇怪嘅網絡問題,搞到你頭都大埋?無論係 server 無啦啦 timeout、定係懷疑有木馬偷偷連出去,識用 **tcpdump** 捉包,真係可以幫你慳返幾十個鐘頭嘅排查時間。今次就同大家由零開始,step-by-step 教你點樣用呢個神級工具。 ## tcpdump 係乜嘢? tcpdump 係一個命令行嘅網...

用 tcpdump 捉包:IT 人必學嘅網絡排錯神技 - 文章重點速覽 infographic

# 用 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 人都應該掌握嘅基本功。由最基本嘅捉包,到進階過濾、存檔分析,掌握咗佢,網絡排錯真係事半功倍。下次遇到網絡問題,唔使再盲頭烏蠅咁亂估,直接捉包睇真章啦!