Я использую 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
В это время я могу пинговать из Лубунута в Убунуту. Теперь я хочу на хост-машине использовать маскировку 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
Ответ не совсем мой, но ... Попробуйте подписаться Откройте vSwitch на VirtualBox
Был также краткий текстовый файл от некоторых людей Fedora по аналогичной теме: libvirt и OpenVSwitch в виде текстового файла ... хотя не смогли его найти.
в соответствии с комментарием, вот краткое изложение:
(1) Создайте интерфейс vnet0 и мост br0:
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) раскрутить виртуальную машину, которая использует интерфейс vnet0 (как мостовой адаптер)
(3) подключите мост br0 к реальной сети:
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
Включите пересылку при перезагрузке, не комментируя эти строки в /etc/sysctl.conf:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1