Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux tcpdump 抓包實戰指南:從入門到進階過濾

編輯:Linux 教學

tcpdump 簡介

tcpdump 是 Linux 平台上最經典、最強大的命令列封包擷取工具,基於 libpcap 函式庫,支援豐富的 BPF(Berkeley Packet Filter)過濾語法,廣泛用於網路除錯、效能分析、安全審計。

常用參數速查表

參數說明
-i <介面>指定監聽網卡(如 eth0、any)
-nn直接顯示 IP/埠號,不做域名解析(加快輸出)
-A以 ASCII 顯示封包內容(適合 HTTP 文字協定)
-X同時以十六進位與 ASCII 顯示
-s 0擷取完整封包(預設 262144 bytes,舊版 68 bytes)
-w file.pcap寫入檔案,後續可用 Wireshark 分析
-r file.pcap讀取檔案離線分析
-c N擷取 N 個封包後自動停止

BPF 過濾語法核心

  • 主機:host 192.168.1.10、src host、dst host
  • 埠號:port 80、src port、dst port、portrange 8000-9000
  • 協定:tcp、udp、icmp、arp
  • 邏輯運算:and / &&、or / ||、not / !
  • 方向:inbound、outbound

實戰範例集

1. 基礎監聽(僅顯示封包摘要)

sudo tcpdump -i eth0 -nn

2. 只看 ICMP(ping)流量

sudo tcpdump -i eth0 -nn 'icmp'

3. 監聽特定主機所有流量

sudo tcpdump -i eth0 -nn 'host 192.168.1.231'

4. 只抓該主機發出的封包

sudo tcpdump -i eth0 -nn 'src host 192.168.1.231'

5. Web 開發必備:抓 HTTP 明文流量

sudo tcpdump -i eth0 -nnA 'port 80'

6. 綜合條件:特定主機的 HTTP 請求

sudo tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'

7. 排除 SSH 流量避免刷屏

sudo tcpdump -i eth0 -nnA '!port 22'

8. 存檔離線分析

sudo tcpdump -i eth0 -nn -s 0 -w capture.pcap 'port 80 or port 443'

常見坑與技巧

  • GZIP 壓縮導致亂碼:Apache/Nginx 啟用 gzip 時 HTTP 回應為二進位。暫時關閉壓縮或用 wireshark 自動解壓。
  • 權限不足:需 root 或 CAP_NET_RAW、CAP_NET_ADMIN 權限。
  • 介面選 any:-i any 可同時監聽所有介面(含 lo)。
  • 時間戳:加 -tttt 顯示完整日期時間(ISO 格式)。

進階:與 Wireshark 聯動

現場抓包 -w 存檔,再用 scp 拉回工作站,用 Wireshark 圖形化深度分析(流程圖、專家資訊、統計圖表),是最高效的工作流。

熟練 tcpdump 能在無圖形介面的伺服器上快速定位網路問題,是運維與安全人員的必殺技。

Copyright © Windows教程網 All Rights Reserved