Snort IPS无法丢包:Ubuntu下Netplan网络配置需求
解决Ubuntu Netplan下Snort Inline模式丢包失效问题
核心问题在于默认网桥会直接转发数据包,完全绕开了Snort的处理流程。要实现丢包,必须让所有流量强制流经Snort,而非通过系统网桥直接转发。以下是将传统接口配置转换为Netplan配置的实操步骤:
1. 修改Netplan网络配置
首先移除原有的网桥配置,将连接Host1和Host2的物理接口设置为无IP的透明模式,确保数据包不会被系统直接转发。
编辑Netplan配置文件(通常路径为/etc/netplan/00-installer-config.yaml,文件名可能不同):
network: version: 2 ethernets: enp0s3: # 替换为你连接Host1的物理接口名 dhcp4: false addresses: [] enp0s8: # 替换为你连接Host2的物理接口名 dhcp4: false addresses: [] # 注释或删除原有的网桥配置块(如bridges: br0: ...)
应用配置:
sudo netplan generate && sudo netplan apply
验证接口状态:执行ip link show,确认两个物理接口已脱离网桥,且无IP地址配置。
2. 调整系统转发设置
关闭系统IP转发,强制流量只能通过Snort处理:
sudo sysctl -w net.ipv4.ip_forward=0
持久化设置,编辑/etc/sysctl.conf,确保以下行生效:
net.ipv4.ip_forward=0
3. 启动Snort Inline模式
使用afpacket DAQ绑定两个物理接口,启动Snort的inline模式:
sudo snort -Q -i enp0s3:enp0s8 -c /etc/snort/snort.conf -A console
参数说明:
-Q:启用inline模式-i enp0s3:enp0s8:指定入站接口(Host1侧)和出站接口(Host2侧)-c:指定Snort配置文件路径-A console:控制台输出告警信息
4. 验证丢包功能
在Snort规则中添加一条明确的drop规则(例如在/etc/snort/rules/local.rules中):
drop icmp any any -> any any (msg:"Drop all ICMP packets"; sid:1000001; rev:1;)
重启Snort后,在Host1执行ping Host2,同时在Host2用tcpdump icmp抓包。若触发规则时ping请求无响应,且Snort控制台输出告警,说明丢包功能生效。
排查要点
若仍无法丢包,检查以下项:
- 确认Snort规则中的动作为
drop而非alert - 检查物理接口名是否正确,执行
ip link show核对 - 清空系统iptables规则,避免干扰:
sudo iptables -F && sudo iptables -X - 确认Snort以root权限启动(必须加
sudo) - 检查afpacket DAQ是否加载:
snort --daq-list,确保输出包含afpacket
内容的提问来源于stack exchange,提问作者nilowz
相关产品推荐
相关产品推荐

