温馨提示×

Debian下dumpcap如何过滤数据包

小樊
44
2026-08-31 19:33:01
栏目: 智能运维

在 Debian 下,dumpcap 是 Wireshark 套件中用于捕获数据包的命令行工具。它支持使用过滤表达式,但和 tcpdump 一样,主要支持 捕获过滤器(Capture Filter,BPF 语法),而不是 Wireshark 的显示过滤器。

下面从安装、基本用法、过滤语法、示例和注意事项几个方面说明。


一、安装 dumpcap

sudo apt update
sudo apt install wireshark-common

安装后通常会有:

which dumpcap
# /usr/bin/dumpcap

普通用户抓包可能需要权限:

sudo dumpcap ...
# 或
sudo usermod -aG wireshark $USER

二、dumpcap 过滤的基本形式

dumpcap -i <接口> -f "<捕获过滤器>"

常用参数:

  • -i:指定网卡(如 eth0、ens33)
  • -f:捕获过滤器(BPF 语法)
  • -w:保存到文件
  • -c:抓包数量
  • -s:快照长度(snaplen)

三、BPF 捕获过滤器语法(重点)

dumpcap 使用的是 libpcap 过滤器语法,和 tcpdump 完全一致。

1️⃣ 按协议过滤

dumpcap -i eth0 -f "tcp"
dumpcap -i eth0 -f "udp"
dumpcap -i eth0 -f "icmp"
dumpcap -i eth0 -f "arp"

2️⃣ 按 IP / 主机过滤

dumpcap -i eth0 -f "host 192.168.1.10"
dumpcap -i eth0 -f "host 192.168.1.10 and host 192.168.1.20"

源或目的:

dumpcap -i eth0 -f "src host 192.168.1.10"
dumpcap -i eth0 -f "dst host 192.168.1.10"

3️⃣ 按端口过滤

dumpcap -i eth0 -f "tcp port 80"
dumpcap -i eth0 -f "udp port 53"
dumpcap -i eth0 -f "tcp src port 443"

端口范围:

dumpcap -i eth0 -f "tcp portrange 8000-9000"

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

dumpcap -i eth0 -f "tcp and port 80"
dumpcap -i eth0 -f "host 10.0.0.1 and not port 22"
dumpcap -i eth0 -f "icmp or arp"

5️⃣ 按网段过滤

dumpcap -i eth0 -f "net 192.168.0.0/24"

6️⃣ 按 MAC 地址过滤

dumpcap -i eth0 -f "ether host 00:11:22:33:44:55"
dumpcap -i eth0 -f "ether src 00:11:22:33:44:55"

四、保存过滤后的数据包

sudo dumpcap -i eth0 -f "tcp port 80" -w http.pcap

限制抓包数量:

sudo dumpcap -i eth0 -f "udp port 53" -c 100 -w dns.pcap

五、查看可用网卡

dumpcap -D

或:

ip link

六、常见误区说明

dumpcap 不支持 Wireshark 显示过滤器

错误示例:

dumpcap -f "http.request"   # ❌ 不支持

✅ 正确方式:

  • dumpcap + BPF 捕获
  • tshark 或 Wireshark 做显示过滤

例如:

tshark -r http.pcap -Y "http.request"

七、与 tcpdump 对比

工具 过滤器类型 用途
dumpcap BPF 抓包(Wireshark 后端)
tcpdump BPF 抓包
tshark BPF + 显示过滤 抓包 + 分析

如果你有具体场景(比如只抓某个服务的包、只抓异常流量、容器/桥接网卡等),可以告诉我,我可以给你更精确的过滤规则。

0