Я використовую 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
На стороні хоста OS я також встановив ip адресу:
ifconfig sw0 192.168.1.1/24 up
У цей час я можу пінг-рейсом з Любунута до Убунуту. Я хочу зараз на хост-машині використовувати 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