brctl网桥将数据包转发到混杂接口

我的Linux机器上有两个混杂的嗅探接口:
eth0连接到外部vlan
eth1连接到内部vlan桥

与eth0我可以嗅探我的“外部networking”与eth1上的所有stream量我可以嗅探我的“内部networking”上的所有stream量

然后,我用brctl(br0)创build了一个桥,并将这两个接口添加到这个桥。
现在,我可以直接从br0中嗅出所有显示在eth1和eth2上的数据包,从而使我不得不启动两个snort实例。

我的问题是,现在在eth0上显示的arp和多播数据包被复制到br0并转发到eth1。

有没有办法使这两个接口都将所有数据包复制到br0上,但是决不允许br0转发任何数据包,eth0或eth1也不能响应它们?

根据它的devise,Linux网桥就像一个普通的NWay以太网交换机。 它保留自己的ARP / MAC地址表,并根据此表转发数据包。 因此,组播和ARP,就像普通的networking交换机一样,不pipe它们是什么来源,都可以到达每个端口。

为了防止这种行为,你应该build立一个防火墙,而不是使用iptables ,它负责OSI模型中的Layer 3+,而是负责处理Layer 2stream量的ebtables

假设你在一个基于Debian / Debian的发行版上,你可以执行:

apt-get install ebtables

apt-get install arptables

对于附加文档执行:

man 8 ebtables

下面是使用ebtables进行多播的一个简单例子:

 ebtables -A FORWARD -o eth0 --pkttype-type multicast -j DROP ebtables -A OUTPUT -o eth0 --pkttype-type multicast -j DROP ebtables -A FORWARD -o eth1 --pkttype-type multicast -j DROP ebtables -A OUTPUT -o eth1 --pkttype-type multicast -j DROP 

作为learnig ebtables一个很好的起点,它实际上复制了iptables语法,这里是官方文档: http ://ebtables.sourceforge.net/documentation/docs.html