在 Debian 里,dumpcap 是 Wireshark 抓包工具集中的底层抓包程序。它本身只负责抓包和写文件,过滤主要分两类:捕获过滤(capture filter) 和 显示/读取过滤(read filter)。
使用 -f 参数,语法和 tcpdump 一样(BPF 语法)。
# 只抓 192.168.1.10 的流量
dumpcap -i eth0 -f "host 192.168.1.10" -w out.pcap
# 只抓 TCP 80 端口
dumpcap -i eth0 -f "tcp port 80" -w out.pcap
# 不抓广播和组播
dumpcap -i eth0 -f "not broadcast and not multicast" -w out.pcap
# 抓某个网段
dumpcap -i eth0 -f "net 10.0.0.0/24" -w out.pcap
⚠️ 捕获过滤在抓包前就生效,抓不到的包不会写入文件。
使用 -R 参数,语法是 Wireshark 显示过滤语法。
# 从已有文件中读取 http 包
dumpcap -r in.pcap -R "http" -w http.pcap
# 读取某个 IP 的 TCP 包
dumpcap -r in.pcap -R "ip.addr == 192.168.1.10 && tcp" -w filtered.pcap
⚠️ -R 必须配合 -r 使用(读文件时过滤)。
dumpcap -D
权限问题(Debian)
sudo dumpcap ...
或把用户加入 wireshark 组:
sudo usermod -aG wireshark $USER
-f 是抓包过滤,-R 是读文件过滤,不要混用。
如果只是临时抓包,也可以直接用:
tcpdump -i eth0 -w out.pcap
如果你有具体场景(比如“只抓某 IP 的 DNS”或“排除某个端口”),可以告诉我,我给你写 exact 命令。