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 抓包實戰速查:核心參數、過濾表達式與 Wireshark 分析工作流

編輯:Linux 教學

tcpdump 是 Linux 系統管理員、網絡工程師、安全分析師必備的命令行抓包神器。本文匯總高頻使用場景、核心參數詳解、BPF 過濾表達式實例、輸出文件分析流程,助您快速定位網絡故障、分析協議交互、排查性能瓶頸。

一、核心參數速查表

參數含義典型值/示例
-i <interface>指定監聽網卡eth0, any (所有接口), lo
-n不解析主機名/IP 端口服務名 (顯著加快輸出)必加,生產環境標配
-nn同時不解析協議名/端口號 (更快)極強推薦
-c <count>抓取指定數量數據包後退出-c 100
-w <file.pcap>寫入二進制 pcap 文件 (供 Wireshark 分析)-w capture.pcap
-r <file.pcap>讀取 pcap 文件離線分析-r capture.pcap
-s <snaplen>抓取長度 (字節),0 表抓完整包-s 0 (現代版默認 262144)
-v / -vv / -vvv遞增詳細輸出級別 (協議解析細節)-vv
-X / -XX十六進制+ASCII 顯示數據載荷 (含/不含鏈路層頭)調試應用層協議
-e顯示鏈路層頭部 (MAC 地址)排查 ARP/二層問題
-t / -tt / -ttt / -tttt時間戳格式控制-tttt 完整日期時間最易讀
-S顯示絕對 TCP 序列號 (而非相對)TCP 重傳/亂序分析
-Z <user>權限分離:以指定用戶寫文件 (安全)-Z nobody

二、高頻實戰命令模板

1. 基礎抓包存檔 (事後分析標準流)

# 抓取 eth0 上 500 個包,存檔供 Wireshark
tcpdump -i eth0 -nn -s 0 -c 500 -w eth0_500.pcap

# 長期抓包 (環形緩衝,每 100MB 切換文件,保留 10 個)
tcpdump -i eth0 -nn -s 0 -C 100 -W 10 -w /var/log/tcpdump/eth0_ring.pcap

2. 端口過濾 (Web/DB/SSH 流量隔離)

# 只抓 HTTP (80) 流量
tcpdump -i eth0 -nn -s 0 -c 200 -w http.pcap port 80

# 只抓 HTTPS (443) 流量
tcpdump -i eth0 -nn -s 0 -w https.pcap port 443

# 排除 SSH (22) 干擾 (運維操作產生大量包)
tcpdump -i eth0 -nn -s 0 -w no_ssh.pcap port not 22

# 多端口 OR (MySQL 3306 或 Redis 6379)
tcpdump -i eth0 -nn -s 0 -w db.pcap 'port 3306 or port 6379'

# 端口範圍 (被動模式 FTP 數據端口 20000-21000)
tcpdump -i eth0 -nn -s 0 -w ftp_data.pcap 'portrange 20000-21000'

3. 主機/IP 過濾 (單向/雙向隔離)

# 只抓與 192.168.1.100 通信的包 (源或目的)
tcpdump -i eth0 -nn -s 0 host 192.168.1.100

# 只抓源 IP 為 10.0.0.1 的包
tcpdump -i eth0 -nn -s 0 src host 10.0.0.1

# 只抓目的 IP 為 8.8.8.8 的包 (DNS 查詢)
tcpdump -i eth0 -nn -s 0 dst host 8.8.8.8

# 子網過濾 (內網 192.168.0.0/16)
tcpdump -i eth0 -nn -s 0 net 192.168.0.0/16

4. 協議與標誌位過濾 (深度排查)

# 只抓 TCP 協議
tcpdump -i eth0 -nn -s 0 tcp

# 只抓 UDP (DNS/流媒體)
tcpdump -i eth0 -nn -s 0 udp

# 只抓 ICMP (Ping/路由錯誤)
tcpdump -i eth0 -nn -s 0 icmp

# 只抓 TCP SYN 包 (連接建立嘗試)
tcpdump -i eth0 -nn -s 0 'tcp[tcpflags] & tcp-syn != 0'

# 只抓 TCP RST 包 (連接異常重置)
tcpdump -i eth0 -nn -s 0 'tcp[tcpflags] & tcp-rst != 0'

# 只抓 TCP FIN 包 (連接正常關閉)
tcpdump -i eth0 -nn -s 0 'tcp[tcpflags] & tcp-fin != 0'

5. 組合過濾 (精準定位)

# 目標:抓取 192.168.1.50 訪問 10.0.1.10:80 的完整 HTTP 會話
tcpdump -i eth0 -nn -s 0 -w session.pcap 'host 192.168.1.50 and host 10.0.1.10 and port 80'

# 目標:排除 SSH、抓取內網 Web 異常 (RST/重傳)
tcpdump -i eth0 -nn -s 0 -w web_issue.pcap 'port 80 and (tcp[tcpflags] & (tcp-rst|tcp-syn|tcp-fin) != 0) and not port 22'

三、Wireshark 離線分析工作流

  1. 傳輸文件:scp user@host:/path/to/capture.pcap . (二進制模式)。
  2. 打開文件:雙擊或 File → Open。
  3. 顯示過濾器 (Display Filter) 二次篩選:
    • http、dns、tcp.port == 3306
    • tcp.analysis.retransmission (重傳)、tcp.analysis.lost_segment (丟包)
    • tcp.stream eq 5 (跟蹤特定 TCP 流)
  4. 關鍵分析視圖:
    • Statistics → Flow Graph (時序圖)
    • Statistics → Conversations (會話統計)
    • Statistics → TCP Stream Graphs → Round Trip Time (RTT 走勢)
    • Analyze → Expert Information (專家信息:錯誤/警告/提示)
  5. 導出數據:File → Export Packet Dissections → As CSV/JSON 供腳本處理。

四、進階技巧與避坑

  • 抓包影響性能:高流量網卡 (-i any 或 10Gbps+) 使用 -c 限制數量、-s 96 只抓頭部、或使用內核旁路工具 (pf_ring, DPDK, XDP)。
  • 權限問題:需 root 或 CAP_NET_RAW, CAP_NET_ADMIN。生產環境建議專用賬號 + setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump。
  • VLAN 標籤:tcpdump -e 顯示 802.1Q 標籤,過濾 vlan 100。
  • IPv6:ip6, ip6 host ::1。
  • 環形緩衝長期抓包:-C 100 -W 10 (100MB*10=1GB 循環) 適合間歇性故障捕獲。

總結

tcpdump -i <if> -nn -s 0 -c <N> -w <file> <BPF filter> 是萬能模板。熟練掌握 BPF 語法 (host, port, net, proto, tcpflags, and/or/not) 能將海量流量精準縮小至問題領域,配合 Wireshark 圖形化深度分析,構成網絡故障定位的「雙劍合璧」。

Copyright © Windows教程網 All Rights Reserved