温馨提示×

debian dumpcap过滤语法怎么写

小樊
46
2026-09-25 00:23:40
栏目: 智能运维

在 Debian(以及其他 Linux 发行版)里,dumpcap 本身不支持像 tcpdump 那样复杂的“过滤表达式”语法,它主要依赖 capture filter(捕获过滤),而这个过滤语法其实就是 BPF(Berkeley Packet Filter)语法,和 tcpdump / wireshark 的 capture filter 是一致的。

下面分几部分说明。


一、dumpcap 怎么用过滤条件

基本格式:

dumpcap -i eth0 -f "过滤条件" -w output.pcap

例如:

dumpcap -i eth0 -f "host 192.168.1.10" -w test.pcap

⚠️ 注意:

  • -f 后面是 capture filter
  • 不是 display filter(Wireshark 的 ip.addr == 1.1.1.1 那种)

二、常用 BPF 过滤语法(dumpcap 支持)

1️⃣ 按 IP 地址过滤

host 192.168.1.1
src host 192.168.1.1
dst host 192.168.1.1

2️⃣ 按网段过滤

net 192.168.1.0/24

3️⃣ 按端口过滤

port 80
tcp port 443
udp port 53
src port 22
dst port 443

4️⃣ 按协议过滤

tcp
udp
icmp
arp

5️⃣ 组合条件(and / or / not)

host 192.168.1.10 and tcp port 80
tcp and not port 22
udp port 53 or tcp port 80

三、dumpcap 不支持的“高级过滤”

❌ 不支持:

  • ip.addr == x
  • http.request
  • tcp.flags.syn == 1

这些属于 Wireshark display filter,只能:

  • 在 Wireshark 里用
  • 或抓包后再用 tshark 过滤

四、dumpcap + tshark 的常见组合(推荐)

如果你想“高级过滤”,正确姿势是:

先抓包(不过滤)

dumpcap -i eth0 -w raw.pcap

再用 tshark 过滤

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 看)
  • 想抓什么流量(HTTP / DNS / 某个 IP)

我可以直接帮你写一条 可直接用的 dumpcap 命令。

0 踩