在 Debian 上,dumpcap 的抓包规则主要通过接口选择、BPF 捕获过滤器和环形缓冲/文件分割等参数组合实现。下面给出可直接使用的配置方法与示例。
一 安装与权限准备
- 安装包含 dumpcap 的 Wireshark 包(会自动安装 dumpcap):
- sudo apt update
- sudo apt install wireshark
- 验证安装:
- 权限说明:抓包需要管理员权限,通常以 sudo 运行;也可将用户加入 wireshark 组以非 root 抓包(安装时会有提示)。
二 快速上手 命令行自定义抓包规则
- 基本捕获(指定接口与输出文件):
- sudo dumpcap -i eth0 -w capture.pcap
- 仅捕获前 N 个包:
- sudo dumpcap -i eth0 -c 100 -w capture.pcap
- 按 BPF 语法设置捕获过滤器(-f 参数):
- 仅 HTTP(80) 流量:sudo dumpcap -i eth0 -f “port 80” -w http.pcap
- 指定主机与端口:sudo dumpcap -i eth0 -f “tcp port 80 and host 192.168.1.100” -w host80.pcap
- 仅 ICMP:sudo dumpcap -i eth0 -f “icmp” -w icmp.pcap
- 环形缓冲与按时间/数量分割文件:
- 每 60 秒轮转一个新文件,最多保留 10 个文件:
- sudo dumpcap -i eth0 -G 60 -W bysec -w cap_%Y-%m-%d_%H-%M-%S.pcap -a files:10
- 查看可用接口:
- 说明:dumpcap 的捕获过滤器使用 BPF(Berkeley Packet Filter) 语法,语法与 tcpdump 一致。
三 进阶用法 文件化过滤器与离线分析
- 将过滤器保存到文件,便于复用:
- echo “tcp and host 192.168.1.100” > myfilters
- sudo dumpcap -i eth0 -w out.pcap -F myfilters
- 环形缓冲示例(避免单文件过大):
- sudo dumpcap -i eth0 -b filesize:100000 -b files:5 -w ring.pcap
- 离线分析(用 tshark 读取并二次过滤):
- 读取文件并筛选 HTTP 请求字段:
- tshark -r capture.pcap -Y “http” -T fields -e frame.number -e ip.src -e ip.dst -e http.host -e http.request.method -e http.request.uri
- 提示:环形缓冲与文件分割参数(-b/-G/-W/-a)可组合使用,以控制磁盘占用与滚动策略。
四 常用 BPF 捕获过滤器示例
- 仅某主机相关流量:
- 仅某主机的 TCP 80 端口:
- tcp port 80 and host 192.168.1.100
- 某网段到另一网段:
- src net 192.168.1.0/24 and dst net 10.0.0.0/8
- 排除某主机:
- 仅 DNS 流量(UDP/TCP 53):
- 仅 ARP:
- 组合示例(HTTP 或 HTTPS 且排除某内网网段):
- (tcp port 80 or tcp port 443) and not src net 192.168.2.0/24
- 说明:以上均为 BPF 语法,适用于 dumpcap 的 -f 捕获过滤器。
五 实用建议与排错
- 权限与组:如无必要,不建议长期以 root 运行;可将用户加入 wireshark 组后使用 sudo 或 setcap 授权(遵循最小权限原则)。
- 性能与存储:高流量环境请结合 环形缓冲(-b)、时间/数量分割(-G/-W/-a) 与合适的 BPF 过滤器,避免丢包与磁盘爆满。
- 接口选择:优先使用明确接口(如 eth0),避免 any 在高负载下带来的额外开销与内核开销。
- 语法校验:先用简单过滤器验证,再逐步增加复杂度;BPF 语法错误会导致启动失败或不符合预期的抓包结果。
- 离线分析:抓包阶段尽量“窄捕获”(只抓必要流量),详细分析交给 tshark/Wireshark,可显著提升效率。