在 Debian 上 dumpcap 抓包慢,通常不是 dumpcap 本身的问题,而是 系统/网卡/权限/配置 导致的。下面按 最常见 → 较少见 的顺序给你排查和优化建议。
dumpcap 抓包需要 raw socket / PF_PACKET 权限。
getcap /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
然后 不要用 sudo dumpcap,直接用普通用户运行:
dumpcap -i eth0
✅ 这是 最常见导致“慢”的原因
ip link show eth0
如果没有 PROMISC,手动开启:
sudo ip link set eth0 promisc on
常见错误:
anylo✅ 推荐:
dumpcap -D
然后明确指定:
dumpcap -i eth0
dumpcap 会自动使用 TPACKET_V3,但需要:
sudo ethtool -k eth0 | grep receive
确保:
rx-checksumming: ongro: off(见下)GSO/GRO 会把多个包合并,dumpcap 需要拆包,非常慢。
sudo ethtool -K eth0 gro off
sudo ethtool -K eth0 lro off
✅ 这是 高速抓包必做
sudo ethtool -G eth0 rx 4096
查看:
ethtool -g eth0
dumpcap -i eth0 -s 96 -w test.pcap
-s 96:抓前 96 字节(HTTP/DNS 完全够)dumpcap -n -i eth0
dumpcap -i eth0 -w /tmp/cap-%n.pcap -b filesize:100000
sudo sysctl -w net.core.rmem_max=134217728
sudo sysctl -w net.core.rmem_default=134217728
sudo sysctl -w net.core.netdev_max_backlog=30000
cat /proc/interrupts | grep eth
然后用 irqbalance 或手动绑定 CPU。
dumpcap -i eth0 -w test.pcap
抓完后:
capinfos test.pcap
如果看到:
Packets dropped: xxx
说明是 内核来不及收包,不是 dumpcap 慢。
| 场景 | 推荐 |
|---|---|
| 1Gbps | dumpcap + 上述优化 |
| 10Gbps | DPDK / AF_XDP |
| 长期抓包 | dumpcap + ring buffer |
| 实时分析 | dumpcap → pipe → tshark |
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
sudo ethtool -K eth0 gro off
sudo ethtool -G eth0 rx 4096
dumpcap -n -i eth0 -s 96 -w test.pcap
如果你愿意,可以把下面信息发我,我可以 精确判断瓶颈:
Packets dropped我可以直接给你一套 针对你机器的参数。