Linux:桥上的端口隔离以正确使用OLSR

Linux:桥上的端口隔离以正确使用OLSR,linux,networking,ebtables,Linux,Networking,Ebtables,在运行OLSR的路由器上,有四个端口/接口,在这些端口/接口上,连接的设备相互通信OLSR。 现在,我不喜欢为每个接口使用IP地址,而是将它们全部桥接,并在桥接器上只设置一个IP地址 现在的问题是,这些设备不应该在第2层上看到对方,否则olsr路由会改变错误的方式(因为网桥)。这些设备只能由OLSR在第3层布线。好的,所以有一个使用ebtables的选项 我已经读过了,但这不是我想要的。 因此,我试图找出如何允许每个连接的设备与路由器通话,同时拒绝所有连接的设备在第2层上看到对方 # deny

在运行OLSR的路由器上,有四个端口/接口,在这些端口/接口上,连接的设备相互通信OLSR。 现在,我不喜欢为每个接口使用IP地址,而是将它们全部桥接,并在桥接器上只设置一个IP地址

现在的问题是,这些设备不应该在第2层上看到对方,否则olsr路由会改变错误的方式(因为网桥)。这些设备只能由OLSR在第3层布线。好的,所以有一个使用ebtables的选项

我已经读过了,但这不是我想要的。 因此,我试图找出如何允许每个连接的设备与路由器通话,同时拒绝所有连接的设备在第2层上看到对方

# deny talking to each other
ebtables -P FORWARD DROP
ebtables -F FORWARD
工作正常,但是路由器本身看不到任何连接的设备,所以我想我需要允许接口与路由器本身通信

# allow port eth1
ebtables -F FORWARD -i eth1 -j ACCEPT
ebtables -F FORWARD -o eth1 -j ACCEPT
但这允许太多,其效果与将策略设置回“接受”状态相同


我应该如何设置ebtables规则以使其正确工作?

当一个设备想要与另一个设备通话时,发送设备会查看第3层目标地址。然后:

  • 如果目标第3层地址与发送设备位于同一网络中,则 设备将查看ARP缓存(发送一个ARP,它是第2层) 广播(如果不在缓存中)以确定第二层(MAC) 目的地设备的地址,以便可以访问第3层数据包 封装到第二层框架中。然后,第2层帧被发送到接口
  • 如果目标第3层地址位于不同的网络中,则 发送设备将使用网关的第2层(MAC)地址作为 目的层2地址。网关(路由器)丢弃 第2层帧从第3层数据包,将其路由到不同的 接口,并重复该过程以获取新的第2层地址和 在发送之前,将第3层数据包封装在新的第2层帧中 它在界面上显示
根据您在接口之间阻塞第2层的要求,一个接口上的设备与另一个接口上的设备在同一网络中将永远无法与另一个设备联系,因为它无法通过第2层与另一个设备联系

如果需要使用给定的公共地址范围,可以将该范围分为4/31个子网。这为每个链路提供了两个IP地址,并且每个链路位于不同的网络中。第三层边界(路由器)将在其接口之间阻塞第二层。剩下的就交给我们了


你真的需要理解这一点;这是一个非常基本的网络。不要误会这一点,但你可能应该雇佣一个具备适当技能的人,用一小时或一天的时间来建立你的网络。

将所有端口放入网桥br0,然后:

ebtables -P FORWARD DROP
ip link set br0 promisc on

(在ubnt edgerouter上按预期工作,但之前也在linux机器上测试过,因此也应该在那里工作)

桥接是第2层。路由在第三层运行。桥接扩展了第二层域。路由扩展了第三层域,并划分和连接第二层域。你试图把两种不同的东西混合在一起,从每一种东西中挑选你想要的东西。我承认我并不完全理解电子表格的工作原理。最后,我希望连接的设备仅在第2层与路由器通话,而不是相互通话。因为在路由器上有网桥,我想这应该通过ebtables来实现,以允许从每个端口到路由器本身的流量,并拒绝到其他端口的流量?路由器的思想是,它被设计用于连接不同的网络,并在不同的网络之间路由流量。同一网络上的设备需要能够在第2层上相互联系,才能在第3层上进行通话。您应该为四个接口中的每一个分配不同的网络。您可以对流量做更多的处理,如允许/拒绝、基于策略的路由、不同的QoS标记和排队等。通过不同的网络和路由,您可以轻松地允许您希望允许的流量,同时拒绝您希望阻止的流量。是的,我可以为每个端口设置VLAN,但我需要每个接口一个ip,因此,我也可以在没有网桥的情况下继续使用端口/接口本身。。但在网状网络中,将olsr与公共IP一起使用,这是次优的,是对IP的浪费。(请不要开始讨论为什么使用公共IP-此网络是这样设计的:))如果您阻止第2层帧遍历接口,同时在每个接口上保持相同的网络,则相同网络上但不同接口上的设备将无法相互联系。同一网络上的设备在第2层帧中相互通信。这就是它的工作原理。