在 Debian(以及其他 Linux 发行版)里,dumpcap 本身不支持像 tcpdump 那样复杂的“过滤表达式”语法,它主要依赖 capture filter(捕获过滤),而这个过滤语法其实就是 BPF(Berkeley Packet Filter)语法,和 tcpdump / wireshark 的 capture filter 是一致的。
下面分几部分说明。
基本格式:
dumpcap -i eth0 -f "过滤条件" -w output.pcap
例如:
dumpcap -i eth0 -f "host 192.168.1.10" -w test.pcap
⚠️ 注意:
-f 后面是 capture filterip.addr == 1.1.1.1 那种)host 192.168.1.1
src host 192.168.1.1
dst host 192.168.1.1
net 192.168.1.0/24
port 80
tcp port 443
udp port 53
src port 22
dst port 443
tcp
udp
icmp
arp
host 192.168.1.10 and tcp port 80
tcp and not port 22
udp port 53 or tcp port 80
❌ 不支持:
ip.addr == xhttp.requesttcp.flags.syn == 1这些属于 Wireshark display filter,只能:
tshark 过滤如果你想“高级过滤”,正确姿势是:
dumpcap -i eth0 -w raw.pcap
tshark -r raw.pcap -Y "http.request"
只抓 80 端口:
dumpcap -i eth0 -f "tcp port 80" -w http.pcap
只抓某个 IP 的流量:
dumpcap -i eth0 -f "host 10.0.0.5" -w ip.pcap
排除 SSH:
dumpcap -i eth0 -f "not port 22" -w no_ssh.pcap
如果你愿意,可以告诉我:
ip addr 看)我可以直接帮你写一条 可直接用的 dumpcap 命令。