подключить коммутатор 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

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

Поскольку вы ссылаетесь на внешнюю статью, которая может измениться, рекомендуется обобщить решение в своем ответе и вместо этого сослаться на статью.
Эса Йокинен

0

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

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.