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 是 Linux 系統內建的強大網路封包擷取與分析工具,能即時監聽網卡流量、過濾特定協定/主機/連接埠,是網管與開發者診斷網路問題的必備利器。

tcpdump 命令示意圖

常用參數速查

參數說明
-i <介面>指定監聽網卡(預設 eth0)
-n直接顯示 IP,不解析主機名
-X以十六進位與 ASCII 顯示封包內容
-w <檔案>寫入檔案供 Wireshark 分析
-r <檔案>讀取封包檔案
-c <數量>擷取指定數量封包後結束

實戰範例分類

1. 基礎監聽

# 監聽第一張網卡所有流量
tcpdump

# 指定監聽 eth1
tcpdump -i eth1

2. 主機與 IP 過濾

# 擷取 sundown 主機收發封包
tcpdump host sundown

# 指定 IP 210.27.48.1
tcpdump host 210.27.48.1

# helios 與 hot 或 ace 之間的通訊
tcpdump host helios and \( hot or ace \)

# 210.27.48.1 與 210.27.48.2 或 .3 的通訊
tcpdump host 210.27.48.1 and \( 210.27.48.2 or 210.27.48.3 \)

# ace 與所有主機通訊,排除 helios
tcpdump ip host ace and not helios

3. 方向與連接埠過濾

# 來源主機 hostname 發送的封包
tcpdump -i eth0 src host hostname

# 目的地為 hostname 的封包
tcpdump -i eth0 dst host hostname

# 特定主機的 Telnet (port 23) 流量
tcpdump tcp port 23 host 210.27.48.1

# 監聽本機 UDP 123 (NTP)
tcpdump udp port 123

4. 網路與閘道過濾

# 本機與 Berkeley 網路通訊
tcpdump net ucb-ether

# 經由 snup 閘道的 FTP 流量
tcpdump 'gateway snup and (port ftp or ftp-data)'

# 非本地網路的 IP 封包
tcpdump ip and not net localnet

5. 進階協定與封包特徵

# TCP 連線建立/斷開封包 (SYN/FIN),非本地網路
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

# HTTP (port 80) 含資料載荷的封包
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

# 封包長度 > 576 且經閘道 snup
tcpdump 'gateway snup and ip[2:2] > 576'

# IP 廣播/多播但非乙太網層廣播
tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

# 非 ping 的 ICMP 封包
tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'

進階技巧

  • 搭配 -w capture.pcap 儲存離線分析,再用 Wireshark 開啟視覺化檢視。
  • 使用 -s 0 擷取完整封包(預設 262144 bytes)。
  • 長時間抓包建議加上 -C 100 -W 10 切割檔案,避免單一檔案過大。

熟練掌握 tcpdump 過濾語法,能大幅提升網路疑難排解效率。建議平時多實測不同場景,累積常用指令備忘錄。

Copyright © Windows教程網 All Rights Reserved