在 Debian 下使用 dumpcap(Wireshark 的抓包后端工具)时,“过滤”主要有两种情况:
下面重点讲 dumpcap 的抓包过滤。
dumpcap 使用 BPF(Berkeley Packet Filter)语法(和 tcpdump 一样)。
sudo dumpcap -i eth0 -f "过滤表达式" -w output.pcap
# 只抓和 192.168.1.10 通信的包
sudo dumpcap -i eth0 -f "host 192.168.1.10" -w test.pcap
# 排除某个主机
sudo dumpcap -i eth0 -f "not host 192.168.1.10" -w test.pcap
sudo dumpcap -i eth0 -f "net 192.168.1.0/24" -w test.pcap
# 只抓 80 端口
sudo dumpcap -i eth0 -f "tcp port 80" -w test.pcap
# 抓 80 或 443
sudo dumpcap -i eth0 -f "tcp port 80 or tcp port 443" -w test.pcap
# 非 22 端口
sudo dumpcap -i eth0 -f "not port 22" -w test.pcap
sudo dumpcap -i eth0 -f "icmp" -w test.pcap
sudo dumpcap -i eth0 -f "arp" -w test.pcap
sudo dumpcap -i eth0 -f "udp" -w test.pcap
# 主机 192.168.1.10 且 tcp 端口 443
sudo dumpcap -i eth0 -f "host 192.168.1.10 and tcp port 443" -w test.pcap
# 来自 10.0.0.0/8 且不是 ssh
sudo dumpcap -i eth0 -f "src net 10.0.0.0/8 and not port 22" -w test.pcap
-i 指定网卡(如 eth0、ens33)
-f 抓包过滤表达式
-w 保存文件
-c 抓多少个包后停止
-s 抓包长度(0 表示完整)
示例:
sudo dumpcap -i eth0 -f "tcp port 80" -w http.pcap -c 1000
dumpcap -D
或
ip addr
http.request.method == "GET")tshark -r test.pcap -Y "http.request"
如果你有 具体场景(比如只抓某个 IP 的 DNS、只抓 HTTPS、排除广播包),可以直接告诉我,我帮你写精确过滤规则。