Mirror Port über iptables

11

Ich habe einen dedizierten Linux-Root-Server (Debian 7.5), auf dem eine Reihe von Gästen eingerichtet ist. Die Gäste sind KVM-Instanzen und erhalten Netzwerkzugriff über Bridge-Utils (NAT, interne IPs, verwenden den Host als Gateway).

Ein KVM ist beispielsweise mein WebServer-Gast und wird über die Host-IP folgendermaßen erreichbar:

    iptables -t nat -I PREROUTING -p tcp -d 148.251.Y.Z 
--dport 80 -j DNAT --to-destination  192.168.100.X:80 

Ich mache dasselbe mit anderen Diensten, indem ich sie in sich geschlossen, auf dem neuesten Stand und isoliert halte.

Ein Gast soll jedoch ein Netzwerkmonitor sein und eine Überprüfung des Netzwerkverkehrs durchführen (wie ein IDS). Normalerweise würde ich in einer nicht virtuellen Konfiguration VACLs oder SPAN-Ports verwenden, um den Verkehr zu spiegeln. Natürlich kann ich das in diesem einen Host nicht tun ( einfach , weil ich keine komplexen virtuellen Switching-Ansätze verwenden möchte).

  1. Kann ich mithilfe von iptables einen Portspiegel erhalten und den gesamten Ingress- und Egress-Verkehr auf einen KVM-Gast umleiten? Alle Gäste haben eine dedizierte Schnittstelle, wie vnet1.
  2. Ist es möglich, Datenverkehr basierend auf dem Protokoll selektiv weiterzuleiten (wie eine VACL-Weiterleitungsregel, die nur HTTP erfasst)?
  3. Benötigen die Gäste ein bestimmtes Interface-Setup, wenn ich es vnet1als Management-Interface (mit einer IP) behalten möchte ?

Ich würde mich über einen Punkt in die richtige Richtung freuen:

iptables         1.4.14-3.1
linux            3.2.55
bridge-utils     1.5-6

Vielen Dank :)

wishi
quelle

Antworten:

14

Was ist mit dem Voranstellen der Regeln für die Mangeltabelle vor dem Routing-Modul des Stammservers durch Folgendes:

iptables -I PREROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee

und dann vor dem Post-Routing-Modul Mangle-Tabellenregeln von etwas wie

iptables -I POSTROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee 

Dabei ist 192.168.200.1 der Netzwerkmonitor.

Diese Regeln spiegeln den gesamten eingehenden und ausgehenden Verkehr wider, der ihn an 192.168.200.1 weiterleitet

bearbeiten:

mangle table specific
  -j ROUTE            (explicitly route packets, valid at PREROUTING)
      options:
      --iface <iface_name>
      --ifindex <iface_idx> 

man könnte aber auch sowas benutzen

iptables -I PREROUTING –t mangle –i eth0 –j TEE –gateway 192.168.200.1

und

iptables -I POSTROUTING –t mangle –j TEE –gateway 192.168.200.1

wo TEEjetzt ist ein Ziel , das in PREROUTINGmehr Optionen , wie zB dauert -i, -pusw.

Klopfen
quelle
Hinweis für SE-Leser, die neuere Versionen verwenden iptables, die nicht mehr das ROUTEZiel haben, siehe meine Antwort unter unix.stackexchange.com/a/174619/31228 .
Jonathan Ben-Avraham