I am currently trying to setup a router for my homenetwork using linux
(Archlinux to be more specific). The embedded board i am using has 3
lan interfaces, called wan0, lan0, lan1 and two wifi cards, called
wifi0 and wifi1. I want to have two separate networks, one for my guests
and for my family and me. My current setup looks like this :
+-------+
| wifi0 +----------------+
+-------+ +----+---+
| brg0 |
+-------+ +----+---+
| eth0 +----------------+
+-------+
+-------+
| wifi1 +----------------+
+-------+ +----+---+
| brg1 |
+-------+ +----+---+
| eth1 +----------------+
+-------+
I configured a bridge containing lan0 and wifi0, called brd0, with ip
address 192.168.10.1/24 and a bridge containing lan1 and wifi1, called
brd1, with ip address 192.168.20.1/24. On brd0 as well as brd1 dnsmasq
is running in dhcpd mode to propagate ip addresses to clients in the
range 192.168.10.50-125 for brd0 and range 192.168.20.50-125 for
brd1. The 192.168.20.1/24 network is my guest network, while
192.168.10.1/24 is my home network.
This setup works so far. However, one thing took me by surprise. I though, because guest and home network are in two different subnets the traffic between them is also separated. However, when i am connect to the guest network i can also reach services and computers on the home network, even though no static router or forwarding is set. ( the other way around is also true). I guess this has something to do how bridge devices work under linux.
My question is, how to configure the router so that both networks are separated form each other? Do I need to use traffic filter rules? Can this be implemented with etables? Or is my setup somehow broken and it should not be possible to reach service from one network to the other?