在 Debian 下使用 dumpcap(Wireshark 的抓包后端)时,过滤通常分两种:
dumpcap 本身只支持抓包前过滤(BPF),不支持 Wireshark 的显示过滤语法。
先确认已安装:
sudo apt update
sudo apt install dumpcap
查看网卡:
dumpcap -D
dumpcap -i <网卡> -f "<BPF过滤表达式>" -w <文件.pcap>
-f 后面就是 BPF 过滤规则(和 tcpdump 一样)。
sudo dumpcap -i eth0 -f "host 192.168.1.10" -w test.pcap
sudo dumpcap -i eth0 -f "tcp" -w tcp.pcap
sudo dumpcap -i eth0 -f "tcp port 80" -w http.pcap
sudo dumpcap -i eth0 -f "not host 192.168.1.1" -w no_gw.pcap
sudo dumpcap -i eth0 -f "net 192.168.1.0/24" -w lan.pcap
sudo dumpcap -i eth0 -f "arp" -w arp.pcap
sudo dumpcap -i eth0 -f "udp port 53" -w dns.pcap
❌ 以下不能在 dumpcap 中用:
http.request
tcp.flags.syn == 1
ip.addr == 192.168.1.1
这些是 Wireshark / tshark 的显示过滤器,不是 BPF。
sudo dumpcap -i eth0 -w raw.pcap
tshark -r raw.pcap -Y "http.request"
sudo tshark -i eth0 -Y "tcp.flags.syn == 1"
如果报权限错误:
sudo dumpcap -i eth0
或加入 wireshark 组:
sudo usermod -aG wireshark $USER
# 重新登录
dumpcap 只能用 BPF 抓包过滤(tcpdump 语法),不能用 Wireshark 显示过滤。
如果你愿意,可以告诉我:
我可以直接帮你写一条可用的 dumpcap 命令。