I have tried to add these rules for these 2 hosts to be able to talk to each other. So far no success.
192.168.102.57 is my host on 5Ghz guest net which has wl1.1 interface and should also be using br2 interface for bridging
192.168.2.194 is another host on LAN (and br0)
iptables -I FORWARD -i wl1.1 -o br0 -s 192.168.102.57 -d 192.168.2.194 -j ACCEPT
iptables -I FORWARD -i br0 -o wl1.1 -s 192.168.2.194 -d 192.168.102.57 -j ACCEPT
ebtables -t broute -I BROUTING -p IPV4 -i wl1.1 --ip-dst 192.168.102.57 --ip-proto icmp -j ACCEPT
ebtables -t broute -I BROUTING -p IPV4 -i wl1.1 --ip-dst 192.168.102.57 --ip-proto tcp -j ACCEPT
But something else must be missing.... Any thoughts?
Few things wrong. See below. Note that you always want to -D a rule before -I or -A if putting it in a script since the firewall-start script (and others) can get called more than once and you'll end up with duplicate rules. IPTABLES and EBTABLES will just keep creating duplicates.
You're also being a lot more specific than you really need to be. If you're specifying an exact source IP, there isn't really any need to specify an interface. It can't hurt, however in your case you're specifying the wrong interface on IPTABLES (wl instead of br) so that is hurting you. IPTABLES is layer3 so you need to specify the layer 3 interface (BRx). EBTABLES is Layer2 so you need to specify the L2 interface (wl, eth, etc).
Specifying the exact source IP is a bad idea here since you can't set a DHCP reservation on Guest Wireless, unless you also do a dnsmasq.postconf script. So if you want to specify the source IP, you need to do that, otherwise just specify the interface or the whole subnet. Or hope your lease never runs out on that IP.
Your ebtables also is backwards, it needs the 192.168.2.x destination not the 192.168.102. ebtables is only applied inbound from the guest wireless, opposite direction is wide open.
Basically this should work for you:
Code:
iptables -D FORWARD -i br2 -o br0 -s 192.168.102.57 -d 192.168.2.194 -j ACCEPT
iptables -I FORWARD -i br2 -o br0 -s 192.168.102.57 -d 192.168.2.194 -j ACCEPT
you can leave off either the interfaces or the IPs, not necessary to have both (or mix and match, I do source interface and destination specific IP)
Note that traffic from main LAN to guest is already allowed (along with replies) in IPTABLES so no need to add a rule for that. Only EBTABLES is blocking the responses which you'll fix below
As I mentioned, if you keep the IP(s) make sure you create a static DHCP reservation for the IPs you use.
Code:
ebtables -t broute -D BROUTING -p IPv4 -i wl1.1 --ip-dst 192.168.2.194 -j ACCEPT
ebtables -t broute -I BROUTING -p IPv4 -i wl1.1 --ip-dst 192.168.2.194 -j ACCEPT
no need to specify the protocol since it appears you want to allow everything anway. Also you can replace the source interface with an IP if you want to be specific to match your IPTABLES rules