在 Debian 上 dumpcap 卡顿/不流畅,通常不是“dumpcap 本身的问题”,而是 捕获方式、权限或系统配置 导致的。下面按最常见 → 较少见给你系统分析。
dumpcap 需要 raw socket / cap_net_admin / cap_net_raw 权限。
现象
检查
which dumpcap
dumpcap -D
解决
sudo apt install wireshark
sudo dpkg-reconfigure wireshark-common
sudo usermod -aG wireshark $USER
reboot
或临时:
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
在 Debian(尤其是服务器)上常见:
解决
ip link
dumpcap -D
确认你抓的是 物理网卡(如 eth0 / ens18)
dumpcap 默认使用 AF_PACKET,但:
解决方法
dumpcap -i eth0 -w test.pcap
避免:
dumpcap -i any
any 接口在 Debian 上 性能差、容易卡顿
dumpcap 抓包后 实时写磁盘。
现象
检查
iostat -x 1
解决
/tmp(tmpfs)dumpcap -i eth0 -w /tmp/test.pcap
dumpcap -i eth0 -B 16 -w test.pcap
Debian 默认 systemd 日志量大,dumpcap 可能被限速。
检查
systemctl status systemd-journald
临时缓解
sudo systemctl stop systemd-journald
cat /proc/net/softnet_stat
如果某一列持续增长 → 内核收包瓶颈
解决
ethtool -G eth0 rx 4096 tx 4096
ethtool -L eth0 combined 4
Debian 通常 AppArmor 不限制 dumpcap,但如果你启用了:
aa-status
可临时测试:
sudo systemctl stop apparmor
例如:
dumpcap -f "tcp port 80 and host 1.2.3.4 and ..."
BPF 编译慢 → 卡顿
建议
-f❌ 不好的方式(容易卡):
dumpcap -i eth0 | wireshark -k -i -
✅ 推荐:
dumpcap -i eth0 -w test.pcap
一步一步来:
# 1. 权限
dumpcap -D
# 2. 明确接口
ip a
# 3. 使用物理接口
dumpcap -i eth0 -w /tmp/test.pcap
# 4. 查看丢包
dumpcap -i eth0 -w test.pcap -P
你可以直接告诉我:
cat /etc/os-release)我可以直接给你一套 最优参数组合,通常可以把卡顿降到接近 0。