Probleme beim transparenten Proxy für virtuelle Maschinen

Probleme beim transparenten Proxy für virtuelle Maschinen

Hier ist zunächst die grundlegende Topologie:

  Internet
     |
  Gateway
     |
Workstation---eth0---virbr0
                       |
                       +-----+-----+
                       |     |     |
                      vm1   vm2   vm3 

Ich muss einen Verkehrsanalysator testen, der auf meiner Workstation läuft und auf einem Port (sagen wir 8990) auf eth0 lauscht.

Die Regel, die ich [glaube ich] haben möchte, ist: „Alle Pakete, die virbr0 verlassen und irgendwohin zu Port 80 gehen, müssen stattdessen zu Port 8990 auf eth0 gehen.“ Meine Software, die auf Port 8990 läuft, führt eine eigene Überprüfung der NAT-Paketmangling durch, um die Pakete nach der Überprüfung durchzuschicken.

Ich habe mir den Kopf darüber zerbrochen, mit verschiedenen Varianten von:

iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j DNAT \
    --to 10.0.0.10:8990

Und ich habe die allgemeinere Methode ausprobiert, bei der ich die mangleTabelle mit --set-markund verwende ip rule add fwmark, aber ich verstehe es nicht.

Was mich vermutlich verwirrt, ist, dass alles auf derselben Box läuft.

Vielen Dank für alle Hinweise.

Antwort1

Es stellt sich heraus, dass diese Frage hinfällig ist. Tcpdump zeigt, dass das Subnetz für die VMs, 192.168.122.0/24, nicht einmal in der Routing-Entscheidung des Kernels auftaucht. Ich vermute, dass libvirtd seine eigene Netzwerkverwaltung durchführt, bevor es an den Netzwerkstapel des Kernels übergibt.

Zurück zum Zeichenbrett.

verwandte Informationen