# [redes] vlan y virtualizacion.

## opotonil

Hola,

Estaba intentando planificar y montar la red de un servidorcillo de virtualizacion, con una sola interface de red, de forma que pudiera tener maquinas virtuales tanto en la lan como en la dmz, la idea es la siguiente:

Del router vienen 2 vlan (vlan1->lan y vlan2->dmz) a la unica interface de red del servidor (eth0) en el que hay tambien una interface de red virtual (tap0) conectada a un switch virtual (vde) al que se conectan las maquinas virtuales:

```

                                    ------------------------------------------------

                                    |    pc - vlan1: 192.168.1.2                   |

----------------------              |                ----------------------------  |

| router:            |              |                | vde - vlan1: 192.168.1.3 |  |

| vlan1: 192.168.1.1 |--------------|eth0    tap0----| vde - vlan1: 192.168.1.4 |  |

| vlan2: 192.168.2.1 |              |                | vde - vlan2: 192.168.2.2 |  |

----------------------              |                ----------------------------  |

                                    ------------------------------------------------

```

Ahora lo que no tengo claro es como pasar las vlan de eth0 a tap0 manteniendo el pc en la vlan1.

La solucion que se me ocurre es montar en el pc un bridge (br0->192.168.1.2) con las dos interfaces (eth0 y tap0), que imagino mantenga las vlan, pero en este caso ¿el pc (br0) realmente estaria dentro de la vlan1?

Bueno, si a alguien puede arrojar un poco de luz a mis limitados conocimientos de redes...

Muchas gracias y salu2.

----------

## Inodoro_Pereyra

IP Aliasing en el bridge:

En el router: eth0:0 192.168.1.1 | eth0:1 192.168.2.1

En el servidor: br0:0 192.168.1.X | br0:1 192.168.2.X

Esa se me ocurre que sería la forma existiendo el puente entre eth0 en el servidor y tap0.

De todas formas, si el asunto es que las pc (virtuales o no) de una vlan no tengan acceso a las de la otra vlan pero manteniendo la conectividad contra el router, bastaría con que el router pertenezca a la misma subred que ambas vlans y listo:

En el router: eth0 192.168.1.1 netmask 255.255.252.0

En vlan1: ethX 192.168.1.X netmask 255.255.255.0

En vlan2: ethX 192.168.2.X netmask 255.255.255.0

Es mucho mas sencillo de rutear de esta manera. (Si vas a poner iptables de pormedio).

Salud!

----------

## opotonil

Eso es exactamente lo que pretendia, que las maquinas de la lan no sean directamente accesibes desde la dmz y viceversa, salvo algun servicio de la dmz que si podria ser alcanzable desde la lan, cosa que pretendia hecer con routing mediante iptables.

Por lo que entiendo me recomiendas utilizar subneting en vez de vlans de forma que el router pertenezca tanto a la subred lan como a la subred dmz. Lo que no termino de pillar en este caso es la parte de siempre, la union de eth0 con tap0. Imagino que sea haciendo un br0 entre eth0 y tap0 poniendole al br0 una ip de la subred que quiera (192.168.1.2/24 para que pertenezca a la subred lan) que seria la que utilizaria el servidor fisico. ¿acerte?

Muchas gracias Inodoro_Pereyra y salu2.

----------

## Inodoro_Pereyra

Haciendo un poco de memoria encontré el Mini Howto de Gringo para integrar kvm a la LAN que es perfectamente aplicable a tu caso.

Salud!

----------

## opotonil

Si, lo conozco. Fue el que utilice en el portatil durante una temporada, hasta que empece a utilizar la wifi que no se puede meter en bridge por lo que cambie el sistema a routing.

Bueno imagino que el mejor sistema sera probar... estaba esperando a que saliera la nueba version de openwrt, pero ahora que han hecho publica la RC2 puede ser buen momento.

Muchas gracias y salu2.

----------

## opotonil

Por si a alguien le interesa...

Teniendo en cuenta que al PC fisico por eth0 le entran 2 vlan y tenemos una interface virtual:

    - vlan_0 no marcada (untagged) 192.168.1.0

    - vlan_1 marcada (tagged) 192.168.2.0

    - tap0

Configuramos el puente entre eth0 y tap0 que tendra una IP perteneciente a la vlan_0 (ya que no esta marcada) para dar servicio al PC fisico, es necesario emerger previamente bidge-utils y crear los links para tap0 y br0 (https://forums.gentoo.org/viewtopic-t-579065-start-0-postdays-0-postorder-asc-highlight-kvm.html):

```

#/etc/config/net

config_eth0=( "null" )

tuntap_tap0="tap"

config_tap0=( "null" )

RC_NEED_br0="net.eth0 net.tap0"

bridge_br0="eth0 tap0"

config_br0=( "dhcp" )

```

Ahora hay que configurar vde, una vez emergido, creando 2 vlan y asociar la interface virtual del PC, tap0 que en vde sera el puerto 1, a ambas vlan de manera que en la vlan_0 no este marcado (untagged) y en vlan_1 si este marcado (tagged). Para lo que crearemos el fichero vde_switch.rc (si se dejan lineas en blanco parece funcionar igual, pero aparecen unos cuantos warnings en /var/log/messages.log):

```

# /etc/vde2/vde_switch.rc

vlan/create 1

vlan/addport 1 1

port/create 2

port/allocatable 2 1

port/create 3

port/allocatable 3 1

port/create 4

port/allocatable 4 1

port/setvlan 4 1

port/create 5

port/allocatable 5 1

port/setvlan 5 1

```

Se configura vde indicandole que use tap0 (/etc/conf.d/vde) y se inicia como siempre (/etc/init.d/vde start) ahora si arrancamos una maquina virtual (en este caso un livecd, no tiene HD) asociada al puerto 2 o 3 estara en la vlan_0 (192.168.1.0) y si la sociamos a los puertos 4 o 5 estara en la vlan_1 (192.168.2.0), si tienes un servidor dhcp que de IPs a cada vlan lo puedes comprobar facilmente iniciando un cliente dhcp en la maquina virtual tal y como lo harias normalmente.

```

#!/bin/bash

VDE=$(which vdeq)

KVM=$(which kvm)

$VDE $KVM -m 256 -net nic,macaddr=52:54:00:12:33:56 -net vde,sock=/var/run/vde.ctl,port=4 -k es -vnc :0 -monitor stdio -cdrom livecd.iso -boot d

```

Si quieres ver un poco mejor como funciona el switch virtual vde modifica su script de inicio para conseguir un socket de gestion (en este caso /var/run/vde.ctl/ctl.mgmt):

```

# /etc/init.d/vde

...

start() {

        ebegin "Starting vde"

        [ "${VDE_MODPROBE_TUN}" == "yes" ] && modprobe tun

        start-stop-daemon --start --quiet \

                --exec /usr/bin/vde_switch -- -tap ${VDE_TAP} -daemon \

                -mgmt /var/run/vde.ctl/ctl.mgmt

        eend $? "Failed to start vde"

        chmod -R ${VDE_SOCK_CHMOD} /var/run/vde.ctl

        chown -R ${VDE_SOCK_CHOWN} /var/run/vde.ctl

}

...

```

Ahora ya te puedes conectar al socket de gestion con unixterm y ver lo que se ha hecho con vde_switch.rc (para ver la ayuda "help" en la consola de vde):

```

server ~ # unixterm /var/run/vde.ctl/ctl.mgmt

VDE switch V.2.2.2

(C) Virtual Square Team (coord. R. Davoli) 2005,2006,2007 - GPLv2

vde$ vlan/allprint

0000 DATA END WITH '.'

VLAN 0000

 -- Port 0001 tagged=0 active=1 status=Forwarding

 -- Port 0002 tagged=0 active=0 status=Learning

 -- Port 0003 tagged=0 active=0 status=Learning

VLAN 0001

 -- Port 0001 tagged=1 active=1 status=Forwarding

 -- Port 0004 tagged=0 active=0 status=Learning

 -- Port 0005 tagged=0 active=0 status=Learning

.

1000 Success

vde$ logout

```

Salu2.Last edited by opotonil on Sat Mar 21, 2009 12:57 pm; edited 1 time in total

----------

## gringo

 *Quote:*   

> Por si a alguien le interesa...

 

a mi si desde luego, muchas gracias  :Smile:  No es que vaya a ponerlo en práctica de inmediato pero siempre es bueno saber algo de estas cosas  :Wink: 

Que tal te funciona vde en general ? Es que a veces tengo la sensación de como si se colgara y en los logs no hay absolutamente nada, te ha pasao algo similar ?

saluetes

----------

## opotonil

 *Quote:*   

> 
> 
> Que tal te funciona vde en general ? Es que a veces tengo la sensación de como si se colgara y en los logs no hay absolutamente nada, te ha pasao algo similar ?
> 
> 

 

Pues no, pero la verdad que no le he dado un uso muy intensivo. Lo he probado principalmente en el portatil con una VM que utilizo para programar y normalmente soy yo el que la lio... Pero segun termine de montar el servidorcillo te cuento que ando escaso de tiempo y queria meter un FreeBSD pero enterandome de lo que hago.

Salu2.

PD: la pregunta estupida. No puedo paravirtualizar un BSD, solo guests con el SO del host ¿verdad?

----------

## gringo

si, yo tb. lo usaba principlamente en mi macbook y tampoco he jugueteao mucho con esto últimamente. Seguramente he metido la zarpa donde no debía o algo similar. 

Lo último que estuve haciendo fue juguetear con gentoo/bsd en una máquina virtual por cierto, por si le quieres echar un vistazo  :Wink: 

 *Quote:*   

> la pregunta estupida. No puedo paravirtualizar un BSD, solo guests con el SO del host ¿verdad?

 

no sé si te he entendido bien, pero si te refieres a usar p.ej. xen o algo similar con un bsd como cliente, creo que se puede aunque con algunas limitaciones.

saluetes

----------

## opotonil

 *Quote:*   

> 
> 
> no sé si te he entendido bien, pero si te refieres a usar p.ej. xen o algo similar con un bsd como cliente, creo que se puede aunque con algunas limitaciones. 
> 
> 

 

La idea es utilizar paravirtualizacion KVM (http://kvm.qumranet.com/kvmwiki/Virtio), que entiendo es de lo que estan hablando aqui http://kerneltrap.org/node/7545 y parece que da un performance muy bueno, siendo el host un Gentoo y el guest un FreeBSD (imagino que lo primero tendria que enterarme de si existen las cosas que se necesitan en el kernel BSD)

Salu2.

PD: Tampoco tengo claro si la paravirtualizacion KVM funciona de forma similar a Xen.

--- EDITADO ---

Me da que no se va a poder http://kerneltrap.org/index.php?q=mailarchive/freebsd-hackers/2008/6/6/2048424/thread

 *Quote:*   

> 
> 
> Note that FreeBSD does not have block-mode devices.
> 
> 

 

----------

## gringo

 *Quote:*   

> La idea es utilizar paravirtualizacion KVM (http://kvm.qumranet.com/kvmwiki/Virtio), que entiendo es de lo que estan hablando aqui http://kerneltrap.org/node/7545 y parece que da un performance muy bueno, siendo el host un Gentoo y el guest un FreeBSD (imagino que lo primero tendria que enterarme de si existen las cosas que se necesitan en el kernel BSD)

 

ah, ok, no lo he probao pero dicen que si, que va algo mejor que la virtualización.

Y si, hasta donde yo sé tienen que ser ambos kernel linux por una serie de parámetros y soporte que hay que pasarle/ activar en el kernel. 

Te comentaba lo de xen porque tengo entendido que bsd funciona bajo xen ( mas o menos bien), pero como te comento arriba no he montado nunca un host con paravirtualización y xen sólo lo he probao con un cliente linux hace mucho mucho tiempo, antes de que existiera kvm.

pero no te cortes y cuéntanos que tal te va  :Smile: 

saluetes

----------

