在 Debian(以及所有 Linux 平台)上使用 dumpcap 时,它的过滤语法和 Wireshark / tcpdump 是一致的,都使用 BPF(Berkeley Packet Filter)语法。
下面按常见场景给你说明。
sudo dumpcap -i eth0 -w capture.pcap
常用参数:
-i:网卡-w:保存文件-f:过滤表达式(重点)-s:抓包长度(snaplen)-c:抓包数量sudo dumpcap -i eth0 -f "tcp" -w tcp.pcap
sudo dumpcap -i eth0 -f "udp" -w udp.pcap
sudo dumpcap -i eth0 -f "icmp" -w icmp.pcap
# 源或目的 IP
sudo dumpcap -i eth0 -f "host 192.168.1.10" -w host.pcap
# 源 IP
sudo dumpcap -i eth0 -f "src host 192.168.1.10" -w src.pcap
# 目的 IP
sudo dumpcap -i eth0 -f "dst host 192.168.1.10" -w dst.pcap
# 端口(源或目的)
sudo dumpcap -i eth0 -f "port 80" -w http.pcap
# 源端口
sudo dumpcap -i eth0 -f "src port 443" -w src443.pcap
# 目的端口
sudo dumpcap -i eth0 -f "dst port 22" -w ssh.pcap
sudo dumpcap -i eth0 -f "tcp and port 80" -w web.pcap
sudo dumpcap -i eth0 -f "host 192.168.1.10 and tcp" -w mix.pcap
sudo dumpcap -i eth0 -f "tcp port 80 or tcp port 443" -w web.pcap
sudo dumpcap -i eth0 -f "not arp" -w no_arp.pcap
sudo dumpcap -i eth0 -f "net 192.168.1.0/24" -w lan.pcap
sudo dumpcap -i eth0 -f "ether host 00:11:22:33:44:55" -w mac.pcap
# 抓取 HTTP 请求(非 HTTPS)
sudo dumpcap -i eth0 -f "tcp port 80 and (((ip[2:2] - ((ip[0]&0x0f)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)" -w http.pcap
过滤语法 完全一样
✅ 必须用引号包住过滤条件
✅ 需要 root 权限
✅ Debian 安装:
sudo apt install wireshark-common
如果你有具体抓包需求(比如“只抓某个服务的包”),可以直接说,我可以帮你写精确过滤表达式。