在 Debian 下用 dumpcap 抓包很慢,通常不是 dumpcap 本身的问题,而是 系统、网卡、BPF/内核参数或磁盘 导致。可以按下面顺序逐项排查和优化。
先搞清楚是哪一种慢:
| 现象 | 可能原因 |
|---|---|
抓包丢包 (dumpcap -S) |
网卡/内核/CPU 处理不过来 |
| 抓包速度慢(文件增长慢) | 磁盘 IO 或写文件方式 |
| 启动慢 | 权限 / 网卡初始化 |
| 抓包后分析慢 | 抓包量大未过滤 |
dumpcap 需要 CAP_NET_RAW / CAP_NET_ADMIN 权限,否则会 fallback 到慢模式。
getcap /usr/bin/dumpcap
如果没有,执行:
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
✅ 推荐方式(比 sudo 好)
sudo ethtool -K eth0 gro off gso off tso off
否则内核会聚合包,dumpcap 处理变慢。
Debian + dumpcap 默认会启用 mmap,但你可以确认:
dumpcap -D
如果看到:
1. eth0 (Linux cooked v1)
不如:
1. eth0 (Ethernet)
✅ 尽量用 Ethernet 模式
dumpcap -i eth0 -B 128 -w test.pcap
单位:MB
推荐值:
❌ 慢:
dumpcap -i eth0 -w test.pcap
✅ 快:
dumpcap -i eth0 -f "tcp port 80" -w test.pcap
dumpcap -i eth0 -s 96 -w test.pcap
-s 96:只抓包头测试用 tmpfs:
mkdir /tmp/pcap
mount -t tmpfs tmpfs /tmp/pcap
dumpcap -i eth0 -w /tmp/pcap/test.pcap
推荐:
避免:
dumpcap -i eth0 -w test.pcap
# Ctrl+C 后
dumpcap -r test.pcap -q
或直接看统计:
dumpcap -i eth0 -S
如果有:
Packets dropped: xxx
说明:
ethtool -l eth0
ethtool -L eth0 combined 8
irqbalance
或手动绑定中断到不同 CPU。
uname -r
推荐:
aa-status
如果 dumpcap 被限制,可临时测试:
sudo aa-complain /usr/bin/dumpcap
sudo dumpcap \
-i eth0 \
-f "tcp port 443" \
-s 96 \
-B 256 \
-w /tmp/test.pcap
请贴出:
ethtool -i eth0)我可以 针对你的环境给出精确调优方案。