Iptables - Corrente Bridge e Forward


14

Eu tenho ponte Ethernet de configuração br0que contém duas interfaces eth0etap0

brctl addbr br0
brctl addif eth0
brctl addif tap0
ifconfig eth0 0.0.0.0 promisc up
ifconfig tap0 0.0.0.0 promisc up
ifconfig br0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255 

Minha FORWARDpolítica de cadeia padrão éDROP

iptables -P FORWARD DROP

Quando eu não adiciono a regra a seguir, o tráfego não está passando pela ponte.

iptables -A FORWARD -p all -i br0 -j ACCEPT

Tanto quanto eu entendo iptablesé apenas responsável pela camada IP.

ebtables deve ser responsável por filtrar o tráfego na ponte ethernet.

Então, por que preciso adicionar a regra ACEITAR na cadeia FORWARD do iptable?

Respostas:


12

Por causa do código br-nf que está disponível como um patch para o linux 2.4 e usado no linux 2.6:

O código br-nf faz pacotes / quadros IP em ponte passarem pelas cadeias de iptables. O Ebtables filtra na camada Ethernet, enquanto o iptables filtra apenas pacotes IP.

Como o tráfego no qual você está trabalhando é IP, as iptablesregras ainda se aplicam por causa do br-nf passando os pacotes em ponte para iptables.

Este é um ótimo recurso para ler sobre a interação e este detalha a funcionalidade do código br-nf , incluindo como desativar todas ou algumas das funcionalidades (por exemplo, não passar o tráfego de ponte para o iptables).


A funcionalidade não está funcionando no 4.4.0-22-generic (ubuntu 16.04), mesmo depois que eu fiz echo "1" > /sys/devices/virtual/net/br0/bridge/nf_call_arptables. Alguma ideia?
Arie Skliarouk

Respondendo a mim mesmo: # carga br_netfilter modprobe br_netfilter # Add a regra da cadeia BROUTING de transmitir todos os pacotes IPv4 para iptables -t ebtables Brouté -A BROUTING -p ipv4 -i br0 -j DROP
Arie Skliarouk



0

Se você não precisar usar o iptables com a ponte em seu sistema, poderá desativá-lo permanentemente usando um dos seguintes procedimentos:

  1. Adicionando uma regra iptables:

iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT

  1. Ou editando /etc/sysctl.conf:

net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.