Iptables - Bridge and Forward chain

13

Eu configurei a ponte ethernet br0 que contém duas interfaces eth0 e tap0

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 política% chain FORWARD padrão é DROP

iptables -P FORWARD DROP

Quando não adiciono a seguinte regra, o tráfego não está passando pela bridge.

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

Até onde eu sei, iptables é responsável apenas pela camada IP.

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

Então, por que eu tenho que adicionar a regra ACCEPT na cadeia FORWARD do iptable?

    
por Dariusz Bacinski 20.07.2010 / 22:25

3 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:

The br-nf code makes bridged IP frames/packets go through the iptables chains. Ebtables filters on the Ethernet layer, while iptables only filters IP packets.

Como o tráfego que você está trabalhando é ip, as regras iptables ainda se aplicam porque br-nf passa 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 desabilitar todas ou algumas das funcionalidades (ou seja, não passar tráfego de ponte para o iptables).

    
por 20.07.2010 / 23:10
9

Você pode desabilitar esse comportamento (permitindo que o iptables manipule pacotes em ponte) digitando:

echo "0" > /proc/sys/net/bridge/bridge-nf-call-iptables

(consulte link )

    
por 06.12.2012 / 11:45
0

As cadeias de ebtables não verão quadros entrando em uma porta de ponte de não encaminhamento. Pode dar uma olhada nisso: link

    
por 20.07.2010 / 23:25