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