技術文章 · IT 指令工具箱

tcpdump 抓封包指令:介面、Host、Port、DNS 與 pcap 篩選

整理 tcpdump 列介面、抓指定 host/port/protocol、寫入 pcap、限制大小與輪替、讀取檔案及顯示 payload 的常用指令。

作者 Steve Chen · 發布  · 約 5 分鐘閱讀

IT 指令工具箱 — 廷皓技術專欄插圖

抓封包先縮小範圍:介面、來源、目的、port、時間和數量都能限制。正式網路不該無限制抓 all interfaces,也不應把含認證與個資的 pcap 隨意外傳。

22 組範例LinuxmacOSlibpcap filter查核日期:2026-08-11
動手前:封包可能含帳號、cookie、查詢內容與內網拓樸。先取得授權、限制檔案權限與保存期限;避免把 tcpdump 留在高流量介面長時間無上限執行。

介面與基本擷取

列出可抓介面tcpdump

tcpdump -D

只列清單,不開始擷取。

抓指定介面前 50 包tcpdump

sudo tcpdump -i eth0 -c 50

介面換成實際名稱;達到 50 包自動停止。

不解析 DNS 與服務名稱tcpdump

sudo tcpdump -nn -i eth0 -c 100

-nn 顯示原始 IP 與 port,排查較可預期。

抓所有介面Linux

sudo tcpdump -nn -i any -c 100

any 方便初查,但高流量主機要小心負載與重複。

顯示較詳細 Headertcpdump

sudo tcpdump -nn -vv -i eth0 -c 50

不代表一定要顯示 payload。

顯示 ASCII payloadtcpdump

sudo tcpdump -nn -A -s 0 -i eth0 'tcp port 80' -c 20

可能暴露未加密 HTTP 內容,僅限授權排查。

顯示 Hex 與 ASCIItcpdump

sudo tcpdump -nn -X -s 0 -i eth0 'host 192.0.2.10' -c 20

敏感度高,輸出不要直接貼公開工單。

常用 filter

抓單一 hosttcpdump

sudo tcpdump -nn -i eth0 'host 192.0.2.10' -c 100

同時包含來源或目的為該 IP。

只抓來源 IPtcpdump

sudo tcpdump -nn -i eth0 'src host 192.0.2.10' -c 100

縮小單一方向。

只抓目的 IPtcpdump

sudo tcpdump -nn -i eth0 'dst host 192.0.2.10' -c 100

縮小另一方向。

抓 TCP 443tcpdump

sudo tcpdump -nn -i eth0 'tcp port 443' -c 100

看到握手不代表能解密 TLS payload。

抓 DNS UDP/TCP 53tcpdump

sudo tcpdump -nn -i eth0 'port 53' -c 100

包含 UDP 與 TCP DNS。

抓 ICMPtcpdump

sudo tcpdump -nn -i eth0 'icmp' -c 50

IPv6 ICMP 使用 icmp6。

抓 IPv6 ICMPtcpdump

sudo tcpdump -nn -i eth0 'icmp6' -c 50

NDP 也依賴 ICMPv6。

抓網段且排除 SSHtcpdump

sudo tcpdump -nn -i eth0 'net 192.0.2.0/24 and not port 22' -c 200

遠端操作時排除自己的 SSH 可降低雜訊。

只抓 TCP SYNtcpdump

sudo tcpdump -nn -i eth0 'tcp[tcpflags] & tcp-syn != 0' -c 100

會包含 SYN 與 SYN-ACK,進一步條件可再限制 ACK。

保存與讀取 pcap

寫入 pcaptcpdump

sudo tcpdump -nn -i eth0 -w capture.pcap -c 1000 'host 192.0.2.10'

-w 時終端不顯示解碼;檔案權限要限制。

限制每檔 50 MiB 並輪替 5 檔tcpdump

sudo tcpdump -nn -i eth0 -C 50 -W 5 -w capture.pcap 'port 443'

總量仍可能約 250 MiB,先確認空間。

每 5 分鐘切一檔tcpdump

sudo tcpdump -nn -i eth0 -G 300 -w 'capture-%Y%m%d-%H%M%S.pcap' 'port 53'

不同 tcpdump 版本對 -G/-W 組合行為有差異。

讀取 pcaptcpdump

tcpdump -nn -r capture.pcap

離線解碼,不需再接觸網卡。

讀 pcap 時再套 filtertcpdump

tcpdump -nn -r capture.pcap 'tcp port 443'

原始 pcap 不變。

查看 capture 檔案資訊capinfos/Wireshark

capinfos capture.pcap

capinfos 通常隨 Wireshark 工具安裝。

怎麼確認有做對

  • 抓包前記錄介面、filter、開始與結束時間。
  • 用 tcpdump -r 或 Wireshark 確認 pcap 可讀且範圍正確。
  • 完成後限制權限、加密保存或按政策安全刪除。

常見錯誤

  • 沒有 -c、-C、-W 或時間限制。
  • 在高流量介面用 -s 0 抓全部 payload 太久。
  • filter 的 and/or 沒加括號。
  • 把 pcap 當一般文字附件外傳。

版本與官方文件

參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。

聯絡廷皓討論 看更多文章