Korzystam z Open vSwitch do utworzenia przełączanej sieci między maszynami wirtualnymi VirtualBox i chcę, aby system operacyjny hosta (Ubuntu 12.04) dołączył do tej sieci i skonfigurował ją jako bramę tej sieci wirtualnej:
Po pierwsze, stworzyłem vswitch i dodałem porty do urządzeń kranowych (że maszyny wirtualne używają ich jako zmostkowanych interfejsów):
ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0
Następnie ustawiłem statycznie IP maszyny wirtualnej Lubuntu 12.04:
ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1
Po stronie hosta ustawiam również adres IP:
ifconfig sw0 192.168.1.1/24 up
W tej chwili mogę pingować z Lubunuta na Ubunutu. Chcę teraz, na hoście, używać maskowania IP do przekazywania ruchu z sieci 192.168.1.0/24 do mojego fizycznego interfejsu (połączonego z Internetem):
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE
Więc z Lubuntu (maszyna wirtualna) mogę pingować interfejs Ubuntu eth1, ale nie mogę połączyć się z prawdziwą siecią (np. Bramą w prawdziwej sieci LAN), próbowałem:
nslookup google.com
dig @8.8.8.8 yahoo.com
dig @192.168.30.1 google.com
Topologia sieci
Internet (real gw) ------ Host OS -------- vswitch -------- VBox Guest 1
192.168.30.1 ip masquerade 192.168.1.0/24
|
------------ VBox Guest 2