首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux:桥上的端口隔离以正确使用OLSR

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

Stack Overflow用户
提问于 2015-09-16 22:37:29
回答 2查看 941关注 0票数 1

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

现在的问题是,这些设备不应该在layer2上看到对方,否则olsr路由改变的方式是错误的(因为桥)。这些设备只能在layer3上通过OLSR路由。好吧,所以有个选项可以使用退潮.

我已经读过this post了,但这并不是我想要的。因此,我试图弄清楚如何允许每个连接的设备与路由器进行OLSR对话,同时拒绝所有连接的设备在layer2上相互看到对方。

代码语言:javascript
复制
# deny talking to each other
ebtables -P FORWARD DROP
ebtables -F FORWARD

工作正常,但路由器本身没有看到任何连接的设备,所以我想我需要允许接口与路由器本身对话。

代码语言:javascript
复制
# allow port eth1
ebtables -F FORWARD -i eth1 -j ACCEPT
ebtables -F FORWARD -o eth1 -j ACCEPT

但是这允许太多了,其效果就像将策略设置回接受一样。

我应该如何设置退潮规则,使这一工作正确的方式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-21 21:34:53

简单到将所有端口放入桥br0,然后:

代码语言:javascript
复制
ebtables -P FORWARD DROP
ip link set br0 promisc on

( ubnt edgerouter的工作原理与预期一样,但以前也在linux机器上进行过测试,因此也应该在那里工作)

票数 0
EN

Stack Overflow用户

发布于 2015-09-17 00:01:32

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

  • 如果目标层-3地址与发送设备位于同一网络中,则设备将在ARP缓存中查找(发送一个ARP,如果它不在缓存中则为第2层广播),以确定目标设备的第2层(MAC)地址,以便将第3层数据包封装到第2层帧中。然后将第2层帧发送出接口.
  • 如果目标层-3地址位于不同的网络中,则发送设备将使用网关的层-2 (MAC)地址作为目标层-2地址。网关(路由器)从第三层分组中丢弃第二层帧,将其路由到不同的接口,并重复该过程以获得新的第二层地址,并在发送接口之前将第三层数据包封装在新的第二层帧中。

根据您对在接口之间阻塞第2层的要求,在同一网络中的一个接口上的设备将永远无法与另一个接口上的设备联系,因为它无法通过第2层与其联系。

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

你真的需要理解这一点;它是非常基本的网络。不要认为这是错误的方式,但似乎你应该雇用一个有适当技能的人一个小时或一天建立你的网络。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32619904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档