当 MAC 不在列表中时,强制 Linux 桥将数据包转发到特定接口

当 MAC 不在列表中时,强制 Linux 桥将数据包转发到特定接口

我有 5 个以太网接口,比如 eth0 到 eth4。它们通过 Linux 桥接器连接。

当数据包中的目标 MAC 不是 eth1、eth2、eth3、eth4 MAC 之一(我有这些 MAC 的列表)时,我尝试强制网桥将所有流量转发到 eth0。

简而言之:

  • 如果 MAC 在列表中 -> 像往常一样转发(因此在 eth1-4 之间)。
  • 如果 MAC不是在列表中->仅转发到eth0。

我已经阅读了 bridge-utils 和 ebtables 的手册,甚至搜索了 Google 的第二页也找不到解决方案。

我找到了选项--among-dst我认为我需要一些基本上相反的东西。

但我仍然没有发现任何强制网桥将流量转发到特定接口的可能性。

我不太清楚网桥内部是如何工作的,但我注意到,当数据包的目标 MAC 不在网桥表(brctl showmacs)中时,它会在所有接口上广播该数据包,希望它能以单向方式到达目的地。

我所尝试做的事情有可能实现吗?

答案1

我注意到,当数据包的目标 MAC 不在桥接表 (brctl showmacs) 中时,它会在所有接口上广播该数据包,希望它能以单向方式到达目的地。

是的,所有“学习”网桥(包括物理以太网交换机)都是这样工作的。

flood您可以通过禁用该选项(“控制给定端口是否会泛洪没有 FDB 条目的单播流量”)来选择退出单个端口的此行为,方法是使用以下任一方式桥梁(8)或者ip-link(8)

桥接链路设置 dev eth1 洪水关闭
ip link 设置 eth3 类型 bridge_slave flood off

这些选项无法通过过时的工具来控制brctl

相关内容