在 Debian 上使用 dumpcap 抓包出现“卡顿”,通常不是 dumpcap 本身慢,而是捕获/写入/系统资源/权限某一环出了问题。下面按最常见原因给你梳理,并给出对应排查与解决办法。
dumpcap 需要直接访问网卡,如果权限不足:
检查:
getcap /usr/bin/dumpcap
正常应看到:
/usr/bin/dumpcap = cap_net_raw,cap_net_admin+eip
修复:
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
dumpcap 默认写 .pcap,如果你在:
会严重卡顿。
建议:
-B(buffer size)增大缓存dumpcap -i eth0 -w /tmp/test.pcap -B 16
默认内核 socket buffer 很小,高流量直接丢包 + 卡顿。
查看是否丢包:
dumpcap -i eth0
或
cat /proc/net/dev
解决:
sudo sysctl -w net.core.rmem_max=26214400
sudo sysctl -w net.core.rmem_default=26214400
dumpcap 也可指定:
dumpcap -i eth0 -w out.pcap -B 32
在:
virtio 网卡抓包会:
现象:
解决:
tshark 而非 GUIdumpcap 不支持 display filter(-Y 是 tshark 的)
错误示例:
dumpcap -i eth0 -Y "tcp.port==80" # ❌
✅ 正确:
dumpcap -i eth0 -f "tcp port 80" -w out.pcap
top
如果 si(softirq)很高:
优化:
sudo ethtool -L eth0 combined 4
或多队列网卡 + RSS
sudo dumpcap \
-i eth0 \
-f "tcp port 80" \
-w /tmp/cap.pcap \
-B 32 \
-s 96
说明:
-s 96:只抓包头,极大降负载-B 32:增大缓冲如果你愿意,可以贴:
top / ethtool -i eth0我可以帮你精确定位是哪一类卡顿。