Dlaczego moja zapora ogniowa (iptables) ingeruje w mój mostek (brctl)?

11

Założyłem most br0„podłączony” do dwóch interfejsów:

  • eth0, mój fizyczny interfejs podłączony do prawdziwej sieci LAN,
  • vnet0, wirtualny interfejs KVM (podłączony do maszyny wirtualnej z systemem Windows).

I mam jedną regułę zapory ogniowej w łańcuchu przesyłania dalej:

iptables -A FORWARD -j REJECT

Teraz jedynym działającym pingiem jest maszyna wirtualna do hosta.

br0Interfejs posiada adres IP mojego komputera hosta. eth0i vnet0nie „posiadają” żadnych adresów IP z punktu widzenia hosta. Maszyna wirtualna z systemem Windows ma konfigurację statycznego adresu IP.

Jeśli zmienisz moją iptablesregułę na ACCEPT(lub nawet zastosujesz bardziej restrykcyjne iptables -A FORWARD -o br0 -j ACCEPT), wszystko działa dobrze! (tzn. mogę pingować dowolną maszynę LAN z maszyny wirtualnej i odwrotnie).

Wszystkie opcje jądra przekierowującego IP są wyłączone (jak net.ipv4.ip_forward = 0).

Jak więc zapora sieciowa filtru sieciowego może blokować coś, co nawet nie jest włączone?

Ponadto ruch VM - LAN powinien jedynie sugerować eth0i vnet0. Wygląda jednak na to, że zezwala się na ruch DO PRZODU z -o br0„działaniami” (nie sprawdziłem jednak bardzo dokładnie).

Totor
źródło
Spójrz na moje A do tego U&L P: Ustawienia podczas korzystania z mostu
slm
1
Jaki jest wyniksysctl -a | grep bridge-nf
Stéphane Chazelas,
@ StéphaneChazelas net.bridge.bridge-nf-call-arptables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-filter-vlan-tagged = 0 net.bridge.bridge-nf-filter-pppoe-tagged = 0
Totor

Odpowiedzi:

10

Komentarz od Stéphane Chazelas stanowi wskazówkę do odpowiedzi.

Według często zadawanych pytań Bridge-nf Bridge-nf umożliwia iptables, ip6tables lub arptables, aby zobaczyć zmostkowany ruch.

Od wersji jądra 2.6.1 dostępnych jest pięć wpisów sysctl do kontroli behawioralnej most-nf:

  • bridge-nf-call-arptables - przekazywać zmostkowany ruch ARP do łańcucha FORWARD firmy arptables.
  • bridge-nf-call-iptables - przekazywać zmostkowany ruch IPv4 do łańcuchów iptables.
  • bridge-nf-call-ip6tables - przekazywać zmostkowany ruch IPv6 do łańcuchów ip6tables.
  • bridge-nf-filter-vlan-tagged - przekazywać zmostkowany ruch ARP / IP ze znacznikiem vlan do arptables / iptables.
  • net.bridge.bridge-nf-filter-pppoe-tagged - przekazywać zmostkowany ruch IP / IPv6 ze znacznikiem pppoe do tabel {ip, ip6}

Możesz wyłączyć blokowanie zapory sieciowej filtru sieciowego za pomocą:

# sysctl -w net.bridge.bridge-nf-call-iptables=0
# sysctl -w net.bridge.bridge-nf-call-ip6tables=0
Mathias Weidner
źródło
4
Od Linuksa 3.18 funkcjonalność, w której iptables obsługuje pakiety z mostu, można wyłączyć, nie ładując br_netfiltermodułu. Brak załadowanego modułu oznacza również, że nie ma /proc/sys/net/bridge/wpisu.
Lekensteyn,
A od jądra Linuksa 5.3 ta funkcja staje się przestrzenią nazw zamiast globalną.
AB