在Debian系统上,Dumpcap通常作为Wireshark套件的一部分提供。推荐通过APT包管理器安装,以确保版本兼容性和系统安全性:
sudo apt update && sudo apt install wireshark dumpcap -y
安装完成后,可通过dumpcap --version验证安装是否成功,输出应包含版本号及编译信息。
使用-i参数指定要捕获的接口,如eth0(有线)、wlan0(无线)或any(所有接口):
sudo dumpcap -i eth0 -w output.pcap
若未指定接口,Dumpcap会自动选择第一个非环回接口。
使用-w参数指定输出文件名(支持.pcap或.pcapng格式,默认为.pcapng):
sudo dumpcap -i eth0 -w /tmp/capture.pcap
若省略-w,Dumpcap会将数据写入临时文件(路径可通过-w -输出到标准输出)。
使用-f参数在捕获时过滤数据包,仅保存符合条件的流量(语法遵循Berkeley Packet Filter):
# 捕获TCP端口80的流量(HTTP)
sudo dumpcap -i eth0 -f "tcp port 80" -w http_capture.pcap
# 捕获来自192.168.1.100的流量
sudo dumpcap -i eth0 -f "src host 192.168.1.100" -w src_capture.pcap
# 捕获目标IP为10.0.0.5且UDP端口53的流量(DNS)
sudo dumpcap -i eth0 -f "dst host 10.0.0.5 and udp port 53" -w dns_capture.pcap
注意:捕获过滤器需在数据包到达时应用,语法较严格,无法使用Wireshark的高级过滤语法(如http.request.method==GET)。
若需实时查看过滤后的流量,可将数据输出到管道并通过tcpdump显示(Dumpcap本身不支持实时显示过滤,但可通过管道实现):
sudo dumpcap -i eth0 -w - | tcpdump -r - -Y "tcp.port == 443"
此命令将Dumpcap捕获的流量实时传输给tcpdump,并仅显示HTTPS(端口443)的流量。
按大小轮转:使用-C参数设置单个文件的最大大小(单位:MB),配合-W设置保留的最大文件数:
sudo dumpcap -i eth0 -w /tmp/trace.pcap -C 100 -W 5
当trace.pcap达到100MB时,Dumpcap会自动创建trace_00001_00000.pcap,并继续写入新文件,最多保留5个文件。
按时间轮转:使用-G参数设置轮转时间间隔(单位:秒),配合-w的格式化文件名(如%Y-%m-%d_%H-%M-%S):
sudo dumpcap -i eth0 -w "/tmp/trace_%Y-%m-%d_%H-%M-%S.pcap" -G 3600
每小时生成一个新文件,文件名包含时间戳(如trace_2025-10-26_14-30-00.pcap)。
调整缓冲区大小:使用-B参数增加捕获缓冲区(单位:KB),减少丢包率(适用于高流量场景):
sudo dumpcap -i eth0 -w capture.pcap -B 2048
默认缓冲区大小为2MB(2048KB),可根据网卡速度调整(如1GB网络建议设置为4096KB以上)。
禁用名称解析:使用-n参数跳过IP地址与主机名、端口与服务的转换,提升捕获速度:
sudo dumpcap -i eth0 -w capture.pcap -n
禁用后,输出文件中的IP地址将显示为数字形式(如192.168.1.1而非router.local)。
使用-D参数查看系统支持的网络接口,输出包含接口名称、描述及索引:
sudo dumpcap -D
示例输出:
1. eth0 (Ethernet interface)
2. wlan0 (Wireless interface)
3. lo (Loopback interface)
可通过接口编号(如-i 1)或名称(如-i eth0)指定接口。
使用-L参数列出指定接口支持的数据链路类型(如以太网、无线802.11等),输出可用于-y参数(指定链路层类型):
sudo dumpcap -i eth0 -L
示例输出:
EN10MB (Ethernet)
若需强制指定链路层类型(如捕获无线流量时),可使用-y参数:
sudo dumpcap -i wlan0 -y EN10MB -w wifi_capture.pcap
但通常无需手动指定,Dumpcap会自动选择合适的类型。
权限问题:Dumpcap需要访问网络接口的权限,普通用户需通过sudo运行命令。若需避免频繁使用sudo,可通过setcap命令赋予权限:
sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
执行后,普通用户即可直接运行Dumpcap(无需sudo)。
文件管理:长时间捕获会产生大量数据,建议定期清理或压缩.pcap文件(可使用gzip或bzip2压缩)。
过滤优化:尽量使用精确的BPF过滤器(如tcp port 80 and host 192.168.1.100),减少不必要的数据捕获,提升性能。