iptables não está filtrando o tráfego em ponte

2

Eu tenho um host Linux executando o kernel 3.10 com duas interfaces em ponte: eth0 & eth1 como brid00 sem IP.

Bridge funciona bem, mas agora eu quero filtrar parte do tráfego que passa pela ponte, mas as regras do iptables não estão sendo disparadas.

Eu habilitei net.bridge.bridge-nf-call-iptables (todo o tráfego é IPv4) e net.ipv4.ip_forward e estou usando o módulo physdev para correspondência.

Por exemplo, tentando bloquear todas as solicitações de ICMP com

iptables -A FORWARD -p icmp -m physdev --physdev-in eth0 --physdev-out eth1 -j DROP

não tem efeito. Alguma pista sobre o que está acontecendo? Eu acho que esse tipo de filtragem era possível sem usar ebtables (Meu plano futuro é usar nfqueue em alguma filtragem avançada, então eu preciso do iptables para disparar as regras com o tráfego de bridge).

    
por vktr 10.12.2017 / 22:35

1 resposta

1

Considerado um bug no kernel 3.10 (talvez apenas na minha arquitetura, arm64). Funciona bem em kernels 4.x, testados em poucos deles. De acordo com diagramas do kernel e roteamento de documentos, o mesmo é feito entre os kernels 3.x & 4.xe deve funcionar em ambos, mas isso não acontece.

br_netfilter é um módulo separado no kernel 4.x, você precisa modprobe br_netfilter para ativar a funcionalidade.

    
por 13.12.2017 / 14:43