我有 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
。