brctl 桥接转发数据包到混合接口

brctl 桥接转发数据包到混合接口

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

使用 eth0 我可以嗅探我的“外部网络”上的所有流量 使用 eth1 我可以嗅探我的“内部网络”上的所有流量

然后我用 brctl (br0) 创建了一个网桥,并将两个接口添加到这个网桥。
现在我可以直接从 br0 嗅探 eth1 和 eth2 上出现的所有数据包,这样我就不必启动两个 snort 实例了。

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

有什么方法可以让这两个接口将所有数据包复制到 br0,但永远不允许 br0 转发任何数据包,也不允许 eth0 或 eth1 对它们做出响应?

答案1

根据其设计,Linux 桥接器的作用与普通的 NWay 以太网交换机完全相同。它保留自己的 ARP/MAC 地址表,并根据此表转发数据包。因此,与普通网络交换机一样,多播和 ARP 会发送到每个端口,无论其来源是什么。

为了防止这种行为,您应该设置一个防火墙,不要使用iptables,它负责 OSI 模型中的第 3 层以上,而是ebtables负责第 2 层流量。

假设您使用的是基于 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

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

相关内容