混杂模式告警是指检测网卡意外启用混杂模式并通知管理员,因可能预示嗅探或攻击;可通过ip link/ifconfig检查promiscuity 1或PROMISC标志,结合脚本定时监控与日志告警实现。

混杂模式本身不是告警机制,它只是网卡的一种接收状态。所谓“配置混杂模式告警”,实际是指:在系统中检测到网卡意外进入混杂模式时,主动通知管理员——因为这可能是网络嗅探、恶意抓包或配置失误的信号。
快速识别混杂模式是否被启用
混杂模式会在网卡状态中留下明确标记,关键是定期检查并自动化比对:
- 运行 ip link show,查找含 promiscuity 1 的行(如:
link/ether xx:xx:xx:xx:xx:xx promiscuity 1) - 或用 ifconfig 查看接口标志,输出中出现 PROMISC 即表示已启用(例如:
flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>) - 注意:bridge 接口、veth 对、VMware 虚拟网卡(如 vmnet8)可能默认或自动进入混杂模式,这类属于正常行为,需提前列入白名单
手动巡检 + 简单脚本实现基础告警
无需复杂工具,一个 5 行 shell 脚本就能完成日常监测:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 新建脚本
/usr/local/bin/check-promisc.sh,内容如下:
IFS=$'\n'
for iface in $(ip -o link show | awk -F': ' '{print $2}' | grep -v '^lo$'); do
if ip link show "$iface" 2>/dev/null | grep -q "promiscuity [1-9]"; then
echo "[ALERT] $iface is in promiscuous mode at $(date)" | logger -t promisc-check
fi
done
- 赋予执行权限:
sudo chmod +x /usr/local/bin/check-promisc.sh - 加入定时任务(每10分钟检查一次):
sudo crontab -e,添加一行:*/10 * * * * /usr/local/bin/check-promisc.sh - 日志会写入
/var/log/syslog或journald,可用journalctl -t promisc-check实时查看
区分合法与异常混杂模式
不是所有混杂模式都危险,关键看“谁启的、为什么启、是否持久”:
-
合法场景:运行
tcpdump、Wireshark、IDS(如 Snort)、容器网络(CNI 插件)、虚拟化桥接(vmnet、docker0) -
高风险信号:
- 非 root 用户进程启用了混杂模式(如普通用户执行了
tcpdump) - 网卡在无人工操作情况下长期处于混杂状态(超过 30 分钟未退出)
- 生产服务器上物理网卡(如 eno1、ens33)突然启用混杂,且无对应抓包进程在运行
- 非 root 用户进程启用了混杂模式(如普通用户执行了
- 验证是否有活跃抓包进程:
sudo lsof -i -n -P | grep -i "pcap\|dump"或ps aux | grep -E "(tcpdump|tshark|dumpcap)"
进阶建议:集成到监控体系
若已有 Zabbix、Prometheus 或企业 SIEM(如 Splunk、ELK),可进一步提升响应能力:
- 用
node_exporter自定义指标:通过textfile_collector暴露每个接口的 promisc 状态(0/1) - Zabbix 中添加触发器:当
net.if.promisc[eth0] == 1且持续 >600 秒,触发告警并推送企业微信/邮件 - 在 SIEM 中设置规则:匹配
syslog中含promisc-check.*ALERT的日志,并关联登录日志、sudo 日志做上下文分析

















