Verbinden Sie den Open vSwitch-Switch mit einem echten Netzwerk: iptables masquerade


9

Ich verwende Open vSwitch, um ein Switched-Netzwerk zwischen virtualBox-Gastcomputern zu erstellen, und ich möchte, dass das Host-Betriebssystem (Ubuntu 12.04) diesem Netzwerk beitritt und es als Gateway dieses virtuellen Netzwerks konfiguriert:

Zuerst habe ich einen vswitch erstellt und Ports zum Abhören von Geräten hinzugefügt (die von virtuellen Maschinen als überbrückte Schnittstellen verwendet werden):

ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0

Danach habe ich statisch die IP der virtuellen Maschine Lubuntu 12.04 eingestellt:

ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1

Auf der Host-Betriebssystemseite habe ich auch die IP-Adresse festgelegt:

ifconfig sw0 192.168.1.1/24 up

Zu diesem Zeitpunkt kann ich von Lubunut nach Ubunutu pingen. Ich möchte jetzt auf dem Host-Computer IP-Maskerade verwenden, um Datenverkehr vom Netzwerk 192.168.1.0/24 an meine physische Schnittstelle (mit dem Internet verbunden) weiterzuleiten:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE

Von Lubuntu (der virtuellen Maschine) aus kann ich die Ubuntu eth1-Schnittstelle anpingen, aber ich kann das reale Netzwerk (z. B. das Gateway im realen LAN) nicht erreichen. Ich habe versucht:

nslookup google.com
dig @8.8.8.8 yahoo.com
dig @192.168.30.1 google.com

Netzwerktopologie

   Internet (real gw) ------ Host OS -------- vswitch -------- VBox Guest 1
           192.168.30.1   ip masquerade    192.168.1.0/24
                                                |
                                                 ------------ VBox Guest 2

Bitte fügen Sie eventuelle Fortschritte hinzu. Ich habe das gleiche Problem.
Masood_mj

Antworten:


1

Die Antwort ist nicht wirklich meine, aber ... Versuchen Sie, Open vSwitch auf VirtualBox zu folgen

Es gab auch eine kurze Textdatei von einigen Fedora-Leuten zu einem ähnlichen Thema: libvirt und OpenVSwitch in Form einer Textdatei ... konnten sie jedoch nicht finden.

Laut Kommentar hier eine kurze Zusammenfassung:

(1) Erstellen Sie die vnet0-Schnittstelle und die br0-Brücke:

ovs-vsctl add-br br0
ip tuntap add mode tap vnet0
ip link set vnet0 up
ovs-vsctl add-port br0 vnet0
ip link # (View the created interface)

(2) Starten Sie eine VM, die die vnet0-Schnittstelle verwendet (als überbrückter Adapter).

(3) Verbinden Sie die Brücke br0 mit dem realen Netzwerk:

ovs-vsctl add-br br0 
ovs-vsctl add-port br0 eth0 
ovs-vsctl add-port br0 vnet0 
ifconfig eth0  0 && ifconfig br0 192.168.1.(X) netmask 255.255.255.0
route add default gw 192.168.1.1 br0
route del default gw 192.168.1.1 eth0

Da Sie auf einen externen Artikel verlinken, der sich möglicherweise ändert, ist es empfehlenswert, die Lösung in Ihrer Antwort zusammenzufassen und stattdessen auf den Artikel zu verweisen.
Esa Jokinen

0

Aktivieren Sie die Weiterleitung beim Neustart, indem Sie diese Zeilen in /etc/sysctl.conf auskommentieren :

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.