Você confundiu suas camadas de rede. Handwavingly, o iptables funciona para pacotes IP encaminhados pela camada de rede e não para quadros Ethernet encaminhados da camada de enlace, que é o tipo de encaminhamento feito por uma ponte.
Uma ponte funciona mantendo uma lista de quais endereços MAC são vistos em quais portas. Assim, o tráfego pode fluir de p1p para p1p2 sem fazer nenhum roteamento IP.
A interface br0 é uma interface fingida na bridge. É tratado como qualquer outra interface. Assim, o tráfego sem difusão de um MAC via p1 para um MAC via p1p2 não transita na interface br0 (embora esteja obviamente na bridge br0, e é uma vergonha que o Linux use o mesmo nome tanto para a pseudo-interface quanto para a ponte ).
Há um bom resumo do que você está tentando fazer no início das páginas da Shorewall. . Basicamente, você configura a ponte e faz com que ela funcione. Em seguida, defina o sysctl de encaminhamento de IP (ou o iptables não funcionará). Em suas regras do iptables você precisa expressar suas regras usando o módulo physdev iptables (e é claro que você pode listar outros módulos depois disso).