在 Debian 下使用 dumpcap(Wireshark 的抓包后端)时,“缓冲区”通常有两层含义,需要分别说明:
dumpcap 通过 AF_PACKET(或 PF_RING)从内核收包,内核有 socket 接收缓冲区,如果太小,高流量时会丢包。
dumpcap 本身提供参数:
dumpcap -i eth0 -B 256 -w capture.pcap
-B <MB>:内核缓冲区大小(MB)128–256512–1024查看帮助:
dumpcap -h
编辑 /etc/sysctl.conf:
net.core.rmem_max = 67108864
net.core.rmem_default = 33554432
生效:
sysctl -p
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 缓冲,一般无需额外设置。
dumpcap -i eth0 -B 512 -b duration:3600 -b files:24 -w /data/cap.pcap
含义:
抓包时观察:
dumpcap -i eth0 -w test.pcap
结束后会显示:
Packets received/dropped on interface eth0: ...
或:
capinfos test.pcap
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),我可以给更精确的参数。