IPtables-브리지 및 포워드 체인 내가 설정

내가 설정 이더넷 브리지가 br0두 개의 인터페이스를 포함 eth0하고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

내 기본 FORWARD체인 정책은DROP

iptables -P FORWARD DROP

다음 규칙을 추가하지 않으면 트래픽이 브리지를 통과하지 않습니다.

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

내가 아는 iptables한 IP 계층에 대해서만 책임이 있습니다.

ebtables 이더넷 브리지에서 트래픽을 필터링해야합니다.

그렇다면 왜 iptable의 FORWARD 체인에 ACCEPT 규칙을 추가해야합니까?



답변

linux 2.4에 대한 패치로 사용 가능하고 Linux 2.6에서 사용되는 br-nf 코드로 인해 :

br-nf 코드는 브리지 된 IP 프레임 / 패킷이 iptables 체인을 통과하도록합니다. 이더넷 계층의 Ebtables 필터와 IP 패킷 만 필터링합니다.

작업중인 트래픽이 ip iptables이므로 br-nf 가 브리지 된 패킷을에 전달 하기 때문에 규칙이 계속 적용 됩니다 iptables.

상호 작용에 대해 읽을 수있는 훌륭한 자원이며, 이 하나 의 기능을 자세히 BR-NF 전부 또는 기능의 일부를 사용하지 않도록 설정하는 방법을 포함하여 코드 (즉, iptables에에 다리 트래픽을 전달하지 않음).


답변

다음을 입력하여이 동작을 비활성화 할 수 있습니다 (iptables가 브리지 된 패킷을 처리하도록 함).

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

( http://ebtables.sourceforge.net/documentation/bridge-nf.html 참조 )


답변

시스템의 브릿지에서 iptables를 사용할 필요가없는 경우 다음 중 하나를 사용하여 영구적으로 비활성화 할 수 있습니다.

  1. iptables 규칙 추가 :

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

  1. 또는 /etc/sysctl.conf를 편집하십시오.

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


답변

ebtables 체인은 전달되지 않는 브리지 포트에 프레임이 들어 가지 않습니다. 이것을 볼 수 있습니다 : http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html