在 CentOS 上“优化 Sniffer”通常指提升抓包性能、降低丢包率、减少系统开销。下面按场景 + 可操作优化点给你一个实用清单,适用于 tcpdump、libpcap、Wireshark(tshark)、Suricata、自定义 libpcap/PF_RING 程序等。
不同工具优化方式略有差异:
| 场景 | 常见工具 |
|---|---|
| 命令行抓包 | tcpdump、tshark |
| 安全/IDS | Suricata、Snort |
| 自定义程序 | libpcap / PF_RING / AF_PACKET |
| 高性能抓包 | DPDK、PF_RING DNA |
# 增加接收缓冲区
echo "net.core.rmem_max = 134217728" >> /etc/sysctl.conf
echo "net.core.rmem_default = 134217728" >> /etc/sysctl.conf
echo "net.core.netdev_max_backlog = 500000" >> /etc/sysctl.conf
# 禁用反向路径过滤
echo "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter = 0" >> /etc/sysctl.conf
sysctl -p
# 查看队列
ethtool -l eth0
# 开启多队列(如果支持)
ethtool -L eth0 combined 8
绑定中断到不同 CPU:
irqbalance stop
# 手动绑定 IRQ 到 CPU(高级)
# 关闭 iptables/nftables(抓包机)
systemctl stop iptables
systemctl stop firewalld
# 关闭 SELinux(测试环境)
setenforce 0
# 增大 buffer
tcpdump -i eth0 -B 4096 -w capture.pcap
# 抓包过滤(减少负载)
tcpdump -i eth0 tcp port 80
# 不要实时解析
tcpdump -n -nn -q
tshark -i eth0 -B 4096 -f "tcp" -w out.pcap
# 安装 PF_RING
yum install pfring
modprobe pf_ring
启用:
# 使用 PF_RING 抓包
tcpdump -i eth0 --ring-buffer 1024
libpcap 自动使用,但需:
echo 1 > /proc/sys/net/core/flow_limit_cpu_affinity
✅ 原则
✅ 推荐过滤
host 1.1.1.1
tcp port 443
not arp and not icmp
# 查看丢包
ethtool -S eth0 | grep drop
# CPU 软中断
mpstat -P ALL 1
# 网络队列
cat /proc/net/softnet_stat
| 流量规模 | 推荐方案 |
|---|---|
| < 1Gbps | tcpdump + buffer |
| 1–10Gbps | PF_RING + Suricata |
| 10Gbps+ | DPDK |
你可以直接回答我:
CentOS 几?网卡型号?抓包用途?流量大概多大?