conecte el interruptor Open vSwitch a la red real: iptables masquerade


9

Estoy usando Open vSwitch para crear una red conmutada entre máquinas invitadas de virtualBox, y quiero que el sistema operativo host (Ubuntu 12.04) se una a esta red y lo configure como la puerta de enlace de esta red virtual:

Primero, creé un conmutador virtual y agregué puertos para aprovechar los dispositivos (que las máquinas virtuales los usan como interfaces puenteadas):

ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0

Después de eso, configuré estáticamente la ip de la máquina virtual Lubuntu 12.04:

ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1

En el lado del host del sistema operativo, también configuré la dirección IP:

ifconfig sw0 192.168.1.1/24 up

En este momento, puedo hacer ping desde Lubunut a Ubunutu. Ahora quiero, en la máquina host, usar enmascaramiento de IP para reenviar el tráfico desde la red 192.168.1.0/24 a mi interacción física (conectada a Internet):

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE

Entonces, desde Lubuntu (la máquina virtual), puedo hacer ping a la interfaz Ubuntu eth1, pero no puedo llegar a la red real (por ejemplo: la puerta de enlace en la LAN real), he intentado:

nslookup google.com
dig @8.8.8.8 yahoo.com
dig @192.168.30.1 google.com

Topología de la red

   Internet (real gw) ------ Host OS -------- vswitch -------- VBox Guest 1
           192.168.30.1   ip masquerade    192.168.1.0/24
                                                |
                                                 ------------ VBox Guest 2

Agregue cualquier progreso si lo hubiera hecho. Tengo el mismo problema.
Masood_mj

Respuestas:


1

La respuesta no es realmente mía, pero ... Intenta seguir Open vSwitch en VirtualBox

También hubo un breve archivo de texto de algunas personas de Fedora sobre un tema similar: libvirt y OpenVSwitch en forma de archivo de texto ... aunque no fue capaz de localizarlo.

según el comentario, aquí hay un breve resumen:

(1) Crear interfaz vnet0 y puente 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) girar la VM que usa la interfaz vnet0 (como un adaptador en puente)

(3) conecte el puente br0 a la red real:

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

Dado que está enlazando a un artículo externo que puede cambiar, es recomendable resumir la solución en su respuesta y hacer referencia al artículo en su lugar.
Esa Jokinen

0

Habilite el reenvío al reiniciar descomentando estas líneas en /etc/sysctl.conf :

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.