dumpcap 作为 Wireshark 生态中一款轻量高效的命令行抓包利器,在自动化捕获和远程抓包场景中极为实用。许多初学者常问:如何利用 dumpcap 精准抓取特定协议的数据包?答案关键在于过滤器表达式——即 BPF(Berkeley Packet Filter)语法。下面直接奉上实战案例,覆盖最常见的需求。

先从基础操作说起:想捕获 HTTP 流量?非常简单,端口 80 是 HTTP 的默认入口:
dumpcap -i eth0 -Y "tcp port 80" -w http_traffic.pcap
其中 -i eth0 指定要监听的网络接口,-Y "tcp port 80" 是 BPF 过滤规则——仅关注 TCP 端口 80 上的数据包,-w http_traffic.pcap 则将结果保存至文件。
那 HTTPS 流量呢?原理相同,只需将端口改为 443:
dumpcap -i eth0 -Y "tcp port 443" -w https_traffic.pcap
DNS 查询通常走 UDP 端口 53,但大响应场景也可能使用 TCP。稳妥做法是同时捕获两种协议:
dumpcap -i eth0 -Y "udp port 53 or tcp port 53" -w dns_traffic.pcap
若想监控某个特定 IP 的全部流量(不论来源或目标),可这样编写:
dumpcap -i eth0 -Y "ip.addr == 192.168.1.100" -w traffic_from_ip.pcap
此处的 ip.addr == 192.168.1.100 会自动匹配源地址和目的地址,非常便捷。
需要特别提醒:使用 BPF 过滤器通常需要管理员权限(例如 Linux 系统下需搭配 sudo),否则 dumpcap 可能无法正常打开网卡。另外,为确保网卡能捕获所有经过的数据包(而非仅自身通信),建议开启混杂模式。如果权限不足或混杂模式未启用,捕获结果可能不完整——此时可联系网络管理员协助,或改用 tcpdump 配合 sudo 完成抓包任务。
