IPtables-브리지 및 포워드 체인


14

내가 설정 이더넷 브리지가 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 규칙을 추가해야합니까?

답변:


12

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

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

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

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


기능을 수행 한 후에도 4.4.0-22-generic (우분투 16.04)에서 작동하지 않습니다 echo "1" > /sys/devices/virtual/net/br0/bridge/nf_call_arptables. 어떤 아이디어?
Arie Skliarouk 2018 년

자신을 응답 : BROUTING 체인 규칙 #로드 br_netfilter의이 modprobe br_netfilter 번호의 추가는 iptables에 ebtables -t broute -A BROUTING -p IPv4의 -i BR0 -j DROP 모든 IPv4의 패킷 전달
아리 Skliarouk


1

시스템의 브릿지에서 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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.