温馨提示×

debian dumpcap如何提速

小樊
36
2026-09-27 22:06:33
栏目: 智能运维

在 Debian 上提升 dumpcap(Wireshark 抓包核心)的抓包/写入速度,通常从 内核、网卡、文件 I/O、dumpcap 参数 四个层面入手。下面按「最有效 → 进阶」顺序说明。


一、最关键的提速手段(强烈推荐)

1. 使用 dumpcap -B 增大缓冲区

默认缓冲区很小,高流量会丢包。

dumpcap -i eth0 -B 64 -w /data/cap.pcap
  • -B 单位:MB
  • 建议:
    • 普通服务器:64–256 MB
    • 高吞吐(10G+):512 MB 以上

查看丢包:

dumpcap -i eth0 -w /dev/null

结束后看 packets dropped


2. 使用 ring buffer(避免单文件过大)

dumpcap -i eth0 -B 128 -w cap.pcap -b filesize:100000 -b files:50
  • 减少文件系统锁竞争
  • 适合长期抓包

3. 写到 最快的存储

  • ✅ NVMe / tmpfs
  • ❌ NFS、慢 HDD

示例(内存抓包,超快):

mkdir /tmp/cap
dumpcap -i eth0 -B 256 -w /tmp/cap/cap.pcap

⚠️ 注意内存大小


二、网卡与内核层提速(很重要)

4. 关闭网卡卸载(部分场景反而更快)

某些网卡 offload 会导致 dumpcap 处理变慢:

ethtool -K eth0 gro off
ethtool -K eth0 lro off
ethtool -K eth0 tso off

抓包质量优先时可关。


5. 提高网卡队列 & RSS

多队列网卡:

ethtool -L eth0 combined 8

配合多 CPU 可显著提速。


6. 提升内核 socket 缓冲区

sysctl -w net.core.rmem_max=67108864
sysctl -w net.core.rmem_default=67108864
sysctl -w net.core.netdev_max_backlog=100000

三、dumpcap 参数级优化

7. 只抓需要的包(极大提速)

dumpcap -i eth0 -f "tcp port 443" -w cap.pcap

BPF 在内核态过滤,CPU 占用低。


8. 使用 -s 限制包大小

dumpcap -i eth0 -s 96 -w cap.pcap

只抓前 96 字节(用于分析端口/协议足够)


9. 不实时分析(纯抓包)

  • dumpcap 比 tshark/wireshark 快很多
  • 不要在抓包时跑显示过滤器

四、极端性能方案(10G/40G)

10. 使用 AF_PACKET + mmap

dumpcap 默认已用,但可确认:

dumpcap -i eth0 --list-interfaces

支持 captype: linux cooked / AF_PACKET


11. 使用 DPDK(高级)

  • 需要重新编译 dumpcap / 使用 dpdk-dump
  • 适合线速抓包

五、常见丢包排查顺序

  1. packets dropped 是否增长
  2. dmesg | grep eth0
  3. ethtool -S eth0 | grep drop
  4. 磁盘写入速度(iostat)

推荐“通用高速命令”

dumpcap \
  -i eth0 \
  -B 256 \
  -s 128 \
  -w /nvme/cap.pcap \
  -b filesize:500000 \
  -b files:20

如果你能告诉我:

  • 网卡速率(1G / 10G / 25G)
  • 是否长期抓包
  • 是否有丢包

我可以给你一套专用参数。

0 踩