Iptables - Mostek i łańcuch do przodu


14

Mam skonfigurowany most Ethernet, br0który zawiera dwa interfejsy eth0itap0

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 

Moja domyślna FORWARDpolityka łańcucha toDROP

iptables -P FORWARD DROP

Kiedy nie dodam następującej reguły, ruch nie przechodzi przez most.

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

O ile rozumiem, iptablesodpowiada tylko za warstwę IP.

ebtables powinien być odpowiedzialny za filtrowanie ruchu na moście Ethernet.

Dlaczego więc muszę dodać regułę ACCEPT do łańcucha FORTARD firmy iptable?

Odpowiedzi:


12

Z powodu kodu br-nf, który jest dostępny jako łatka do systemu Linux 2.4 i używany w systemie Linux 2.6:

Kod br-nf sprawia, że ​​zmostkowane ramki / pakiety IP przechodzą przez łańcuchy iptables. Ebtables filtruje na warstwie Ethernet, podczas gdy iptables filtruje tylko pakiety IP.

Ponieważ ruch, na który pracujesz, to ip, iptablesnadal obowiązują reguły, ponieważ br-nf przekazuje zmostkowane pakiety iptables.

Jest to świetny zasób do przeczytania o interakcji, a ten szczegółowo opisuje funkcjonalność kodu br-nf , w tym sposób wyłączania wszystkich lub niektórych funkcjonalności (tj. Nieprzekazywania ruchu mostkowego do iptables).


Ta funkcjonalność nie działa na 4.4.0-22-generic (ubuntu 16.04), nawet po tym jak to zrobiłem echo "1" > /sys/devices/virtual/net/br0/bridge/nf_call_arptables. Jakieś pomysły?
Arie Skliarouk

Odpowiadając sobie: # Załaduj br_netfilter modprobe br_netfilter # Dodaj do BROUTING reguły łańcuchowej, aby przekazać wszystkie pakiety ipv4 do iptables ebtables -t broute -A BROUTING -p ipv4 -i br0 -j DROP
Arie Skliarouk


1

Jeśli nie musisz używać iptables z mostem w swoim systemie, możesz go trwale wyłączyć, korzystając z jednego z poniższych:

  1. Dodanie reguły iptables:

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

  1. Lub edytuj /etc/sysctl.conf:

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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.