Я использую Open vSwitch для создания коммутируемой сети между гостевыми машинами virtualBox и хочу, чтобы хост-операционная система (Ubuntu 12.04) присоединилась к этой сети и настроила ее как шлюз этой виртуальной сети:
Сначала я создал vswitch и добавил порты для подключения устройств (виртуальные машины используют их в качестве мостовых интерфейсов):
ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0
После этого я статически установил ip виртуальной машины Lubuntu 12.04:
ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1
На стороне хоста я также установил IP-адрес:
ifconfig sw0 192.168.1.1/24 up
В это время я могу пинговать от Lubunut до Ubunutu. Теперь я хочу на хост-машине использовать IP-маскарад для пересылки трафика из сети 192.168.1.0/24 в мое физическое взаимодействие (подключенное к Интернету):
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE
Итак, из Lubuntu (виртуальной машины) я могу пропинговать интерфейс Ubuntu eth1, но не могу добраться до реальной сети (например, шлюза в реальной локальной сети), я попытался:
nslookup google.com
dig @8.8.8.8 yahoo.com
dig @192.168.30.1 google.com
Топология сети
Internet (real gw) ------ Host OS -------- vswitch -------- VBox Guest 1
192.168.30.1 ip masquerade 192.168.1.0/24
|
------------ VBox Guest 2