温馨提示×

dumpcap在Debian如何设置缓冲区

小樊
49
2026-08-31 19:33:57
栏目: 智能运维

在 Debian 下使用 dumpcap(Wireshark 的抓包后端)时,“缓冲区”通常有两层含义,需要分别说明:


一、内核 socket 接收缓冲区(抓包不掉包关键)

dumpcap 通过 AF_PACKET(或 PF_RING)从内核收包,内核有 socket 接收缓冲区,如果太小,高流量时会丢包。

1️⃣ 通过 dumpcap 参数设置

dumpcap 本身提供参数:

dumpcap -i eth0 -B 256 -w capture.pcap
  • -B <MB>内核缓冲区大小(MB)
  • 默认通常很小(如 2MB)
  • 建议:
    • 普通服务器:128–256
    • 高吞吐:512–1024

查看帮助:

dumpcap -h

2️⃣ 系统级内核参数(可选但推荐)

编辑 /etc/sysctl.conf

net.core.rmem_max = 67108864
net.core.rmem_default = 33554432

生效:

sysctl -p

二、dumpcap 写文件缓冲区(减少磁盘 IO)

dumpcap 写 pcap 文件时也有缓冲控制:

使用 -b 自动切文件 + 缓冲

dumpcap -i eth0 -B 256 -b filesize:100 -b files:10 -w /data/cap.pcap
  • -b filesize:N:每个文件 N KB
  • -b files:N:最多保留 N 个文件

使用 -w + 系统 IO 缓冲

dumpcap 默认使用 libc 缓冲,一般无需额外设置。


三、使用 ring buffer(推荐高负载场景)

dumpcap -i eth0 -B 512 -b duration:3600 -b files:24 -w /data/cap.pcap

含义:

  • 每 1 小时一个文件
  • 保留最近 24 个

四、检查是否丢包

抓包时观察:

dumpcap -i eth0 -w test.pcap

结束后会显示:

Packets received/dropped on interface eth0: ...

或:

capinfos test.pcap

五、Debian 安装 dumpcap

sudo apt update
sudo apt install wireshark-common

给权限(避免 root):

sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap

✅ 总结推荐配置

dumpcap -i eth0 \
  -B 512 \
  -b filesize:200000 \
  -b files:20 \
  -w /data/capture.pcap

如果你有 具体网卡速率 / 丢包现象 / 云环境(KVM、Docker),我可以给更精确的参数。

0