Postado originalmente por
PEdroArthurJEdi
Pelo que eu entendi você deve ter feito o seguinte:
# brctl addbr br0
# brctl addif br0 ath0
# brctl addif br0 ath1
# brctl addif br0 ath2
# brctl addif br0 ath3
Ai você bloqueou a comunicação entre os clientes associados ao mesmo BSSID. Porém, os clientes de diferentes BSSID continuam se comunicando. Sua interface cabeada (eth0) faz o roteamento dos pacotes.
A opção --physdev-is-bridge só irá bloquear pacotes que queiram atravessar a bridge (através do enlace). Pacotes que irão atravessar a rede (através do roteamento) não serão inspecionados pela regra.
Caso sua eth0 também faça parte da bridge, você pode fazer:
iptables -A FORWARD -m physdev --physdev-out eth0 -j ACCEPT
iptables -A FORWARD -m physdev --physdev-in eth0 -j ACCEPT
iptables -A FORWARD -m physdev --physdev-is-bridge -j DROP
O que está sendo dito: Se o pacote for sair pela porta eth0, aceite. Se o pacote estiver entrando pela eth0, aceite. Se o pacote for atravessar o enlace, derrube.
Portanto, o enlace só será transponível se a interface de fonte/destino for a eth0.
Qualquer coisa pode perguntar que eu tento esclarecer!