我有一个带有三个接口的 Linux 桥接器,例如 tap0、tap1 和 tap2。我想要做的是以下列方式修改标准桥接器行为:
如果 L2 广播源自 tap0,则应仅将其转发到 tap2(tap1 应该丢弃它)。
如果 L2 广播源自 tap1,那么它应该只转发到 tap2(tap0 应该丢弃它)。
如果 L2 广播源自 tap2,那么应该像普通网桥一样将其转发到 tap0 和 tap1。
在 Linux 中可以通过这种方式控制桥接行为吗?
干杯
丹尼尔
答案1
看着ebtables控制 Linux 桥接器的转发:
# forward tap0 broadcasts to tap2, do not forward to tap1
ebtables -A FORWARD -i tap0 -o tap2 -d ff:ff:ff:ff:ff:ff -j ACCEPT
ebtables -A FORWARD -i tap0 -o tap1 -d ff:ff:ff:ff:ff:ff -j DROP
# forward tap1 broadcasts to tap2, do not forward to tap0
ebtables -A FORWARD -i tap1 -o tap2 -d ff:ff:ff:ff:ff:ff -j ACCEPT
ebtables -A FORWARD -i tap1 -o tap0 -d ff:ff:ff:ff:ff:ff -j DROP
# forward tap2 broadcasts to tap0 and tap1
ebtables -A FORWARD -i tap2 -o tap0 -d ff:ff:ff:ff:ff:ff -j ACCEPT
ebtables -A FORWARD -i tap2 -o tap1 -d ff:ff:ff:ff:ff:ff -j ACCEPT