Warum stört meine Firewall (iptables) meine Bridge (brctl)?

Warum stört meine Firewall (iptables) meine Bridge (brctl)?

Ich habe eine Brücke eingerichtet, die br0an zwei Schnittstellen „angeschlossen“ ist:

  • eth0, meine physische Schnittstelle ist mit dem realen LAN verbunden,
  • vnet0, eine virtuelle KVM-Schnittstelle (verbunden mit einer Windows-VM).

Und ich habe diese einzelne Firewall-Regel in der Weiterleitungskette:

iptables -A FORWARD -j REJECT

Jetzt funktioniert nur noch der Ping von der VM zum Host.

Die br0Schnittstelle besitzt die IP-Adresse meines Host-Rechners. Aus Sicht des Hosts „besitzt“ sie keine IP. Die Windows-VM hat eine statische IP-Konfiguration eth0.vnet0

Wenn ich meine iptablesRegel ändere ACCEPT(oder sogar eine noch restriktivere verwende iptables -A FORWARD -o br0 -j ACCEPT), funktioniert alles einwandfrei! (d. h. ich kann von der VM aus jeden LAN-Computer anpingen und auch umgekehrt).

Alle Kerneloptionen zur IP-Weiterleitung sind deaktiviert (wie net.ipv4.ip_forward = 0).

Wie kann die Netfilter-Firewall etwas blockieren, das nicht einmal aktiviert ist?

Darüber hinaus sollte der VM-LAN-Verkehr nur eth0und implizieren vnet0. Dennoch sieht es so aus, als ob das Zulassen von FORWARD-Verkehr mit -o br0„funktioniert“ (ich habe das allerdings nicht sehr sorgfältig geprüft).

Antwort1

DerKommentarvon Stéphane Chazelas gibt den Hinweis auf die Antwort.

EntsprechendBridge-nf – Häufig gestellte Fragenbridge-nf ermöglicht es iptables, ip6tables oder arptables, überbrückten Datenverkehr anzuzeigen.

Ab Kernel-Version 2.6.1 gibt es fünfSysctl-Einträgefür die Bridge-NF-Verhaltenskontrolle:

  • bridge-nf-call-arptables- überbrückten ARP-Verkehr an die FORWARD-Kette der Arptables weiterleiten.
  • bridge-nf-call-iptables- überbrückten IPv4-Verkehr an die Ketten von iptables weiterleiten.
  • bridge-nf-call-ip6tables- überbrückten IPv6-Verkehr an die Ketten von ip6tables weiterleiten.
  • bridge-nf-filter-vlan-tagged- Überbrückten, mit VLAN markierten ARP/IP-Verkehr an Arptables/Iptables weiterleiten.
  • net.bridge.bridge-nf-filter-pppoe-tagged- überbrückten, mit PPPoE markierten IP/IPv6-Verkehr an {ip,ip6}-Tabellen weiterleiten

Sie können die Blockierung der Netfilter-Firewall wie folgt deaktivieren:

# sysctl -w net.bridge.bridge-nf-call-iptables=0
# sysctl -w net.bridge.bridge-nf-call-ip6tables=0

verwandte Informationen