Not sure if it is a bug or a feature, but seems mostly like a bug, since there is a port isolation feature (aka Private VLAN) available and it is disabled by default. My config is mostly simple:
interfaces {
bridge br0 {
address 172.xx.xx.xx/24
member {
interface eth0 {
}
...
interface eth11 {
}
}
mtu 9000
stp
}
ethernet eth0 {
hw-id 0c:c4:7a:xx:xx:xx
mtu 9000
offload {
gro
gso
rps
sg
tso
}
}
...
ethernet eth11 {
hw-id 00:e0:ed:xx:xx:xx
mtu 9000
offload {
gro
gso
sg
tso
}
}
}
(I need an offload and mtu since most of the ports are 10G and this helps a lot to reduce the cpu load)
The problem is that every device connected to one of these ports can ping and access the router, router can ping and access every device, but devices are isolated from each other, they cannot ping or access anything except the router. I started thinking that port isolation somehow turned on by itself, but bridge -d link shows isolated off on every bridge port, promiscuous mode is also enabled on every bridge port according to ip -d link | grep promisc. I also tried different 1.3 versions - official 1.3.0rc6, latest developer 1.3 build, latest release 1.3.1 build, they behave the same. The only thing that helped to get that flat bridge to work was sysctl net.bridge.bridge-nf-call-iptables=0. So I’m wondering why netfilter was turned on.