подключить коммутатор Open vSwitch к реальной сети: маскарад iptables

10

Я использую 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
LokmanDz
источник
Пожалуйста, добавьте любой прогресс, если у вас есть. У меня такая же проблема.
Masood_mj

Ответы:

1

Ответ не совсем мой, но ... попробуйте следующий Open 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
Droopy4096
источник
Поскольку вы ссылаетесь на внешнюю статью, которая может измениться, рекомендуется обобщить решение в своем ответе и вместо этого сослаться на статью.
Эса Йокинен
0

Включите пересылку после перезагрузки, откомментировав эти строки в /etc/sysctl.conf :

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Октавиан
источник