# [mini-howto] Como integrar KVM en tu lan

## gringo

(revisado el 01/12/08 )

El propósito de este mini-howto es exponer simplemente que hacer en gentoo para montar un red virtual que además en este caso vamos a integrar en una lan ya existente con lo que las máquinas virtuales serán como unas máquinas mas en la red. Esto no depende estrictamente de kvm como comprobaréis, qemu/ kqemu lo harán igual de bien, aunque la diferencia de rendimiento es considerable.

Para los que no lo sepan, KVM ( Kernel-based Virtual Machine) es un solución de virtualización completa para linux corriendo en hardware con las extensiones de virtualización activadas (Intel VT o AMD-V), tal y como dice la página web. Está disponible en el kernel linux desde la versión 2.6.20 y en constante desarollo.

Para saber si tu procesador soporte esta instrucción simplemente ejecutad :

```
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
```

Si esto devuelve algo, es que tenéis soporte. Sino podéis probar con qemu/kqemu, otras posibles soluciones disponibles son Vmware, Virtualbox o Xen.

Para su funcionamiento, kvm usa una versión ligeramente modificada de qemu, con lo cual aquellos que estéis acostumbrados a qemu os encontraréis como en casa. Para la compilación de kvm no tenéis porque instalar gcc3, pero al parecer es mas que recomendable usar esta versión del gcc.

No me voy a parar a explicar como instalar kvm, es bastante trivial, sólo voy a exponer la puesta a punto de una red ( sin un servidor dhcp ni vde ni demás ) y como integrar los clientes en una lan ya existente. 

Soporte necesario en el kernel :

- dispositivo tun/tap.

- bridge support 

- netfilter

(*) IMPORTANTE : Apartir del kernel 2.6.22 se recomienda el uso del módulo suministrado por el paquete y NO activar kvm en el kernel. Funcionará igual pero el driver no tendrá acceso a todas las mejoras que suministran versiones mas modernas.

Software necesario:

- kvm

- bridge-utils

- iptables

- usermode-utils o openvpn

CONFIGURACIÓN

Un esquemilla antes de nada que creo que así se entiende mejor el rollo que estoy soltando ( sacao de una web por ahí y modificao un poco ) :

```

                HOST               Cliente1

           +--------------+   +--------------+

           |              |   |              |

 LAN    ---+-+            |   |              |

           | | +------+   |   |              |       Cliente2

           | +---eth0 | +-+---+---- nic0     |   +--------------+

           |   | tap0---+ |   | 192.168.1.61 |   |              |

           |   | tap1---+ |   +--------------+   |              |

           |   +------+ | |                      |              |

           |     br0    +-+----------------------+---- nic0     |

           |192.168.1.15  |                      | 192.168.1.62 |

           +--------------+                      +--------------+

```

En gentoo tenemos todo lo que necesitamos en el archivo /etc/conf.d/net. Realmente lo único que hay que hacer es conectar cada host virtual a un interfaz tap único y añadir estos y un dispositivo físico que se conecta a la red en cuestión a la pasarela. En mi caso, esto se resume en dejar el /etc/conf.d/net del host mas o menos como sigue. 

```

tuntap_tap0="tap"

tuntap_tap1="tap"

bridge_br0="eth0 tap0 tap1"

config_eth0=( "null" )

config_tap0=( "null" )

config_tap1=( "null" )

config_br0=( "192.168.1.15 netmask 255.255.255.0 broadcast 192.168.0.255" )

RC_NEED_br0="net.eth0 net.tap0 net.tap1"

brctl_br0=( "setfd 0" "sethello 0" "stp off" )

routes_br0=( "default gw 192.168.1.200" )

```

( si ya tenéis una configuración para eth0, comentadla o borradla)

Para poder manejar las maquinas virtuales como usuario:

Añadir lo siguiente sustituyendo USUARIO por el usuario con el que quieras manejar las vm en /etc/conf.d/net

```

tunctl_tap0="-u USUARIO"

tunctl_tap1="-u USUARIO"
```

y crea el fichero /etc/udev/rules.d/10-local.rules con el siguiente contenido sustituyendo GRUPO esta vez (me gusta mas seguir dejando a root como propietario y utilizar de grupo el del usuario anterior)

```
KERNEL=="tun", NAME="net/%k", GROUP="GRUPO"
```

Creamos nuestros enlaces como siempre:

```
cd /etc/init.d/ && ln -s net.lo net.br0
```

y hacéis tb. lo mismo para todos los dispositivos tap que necesitéis.

Paramos eth0 y levantamos br0:

```
/etc/init.d/net.eth0 stop && /etc/init.d/net.br0 start.
```

Luego habilitamos en el servidor el forwarding y configuramos debidamente iptables :

```
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

/etc/init.d/iptables save && /etc/init.d/iptables start
```

Para cargar las máquinas virtuales podéis usar lo siguiente p.ej. :

```
kvm -hda vdisk.img -boot c -m 384 -k es -net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=tap0,script=no
```

Es MUY importante que si trabajáis con mas de un cliente cambiéis la dirección mac del cliente y como usamos los scripts de gentoo le decimos que NO queremos usar ningún tipo de script. Asi, para levantar un segundo cliente p.ej. : 

```
kvm -hda vdisk2.img -boot c -m 384 -k es -net nic,macaddr=52:54:00:12:34:59 -net tap,ifname=tap1,script=no
```

En cuanto estéis dentro del sistema cliente tan sólo queda configurar la conexión igual que haríais en un otra de las máquinas de la red.

Otras variantes propuestas por inconexo :

```
kvm -vnc :5,password -monitor stdio -m 256 -k es -net nic,model=rtl8139,macaddr=DE:AD:BE:EF:24:20 -net tap,ifname=tap5,script=no win.dominio.com.img
```

(podremos conectarnos por vnc a ip_de_host:5, para ver lo que ocurre, y teclear "change vnc password" desde la consola del qemu para especificar una password para el vnc)

Boot de un gentoo (ojo, debemos prescindir del frame buffer) 

```
kvm -curses -m 256 -k es -net nic,model=e1000,macaddr=DE:AD:BE:EF:62:24 -net tap,ifname=tap2,script=no lin.dominio.com.img
```

Como veis, no es necesario contar con un servidor X, como en vmware.

Para imágenes de sistemas operativos listos para usar en kvm o qemu podéis acudir a oszoo.

Los que busquéis un frontend para todo este tinglao, el que mejor pinta tiene es virt-manager de Redhat ( disponible en portage), que permite gestionar redes híbridas con xen, qemu, openvz y kvm, además de permitir gestionar los medios de almacenamiento de una forma mas agradable en sus versiones mas recientes.

Gracias a todos por vuestras aportaciones !

Algunos links mas ( que es de donde ha salido todo esto) :

http://kvm.qumranet.com/kvmwiki

http://www.libvirt.org/

http://fabrice.bellard.free.fr/qemu/

http://kvm.qumranet.com/kvmwiki/Kernel-optimizations

http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/USBusage?action=fullsearch&context=180&value=qemu&titlesearch=T%C3%ADtulos#head-0bb605c18c560605f50394d55d4bc69187c8033

http://wiki.virtualsquare.org/index.php/Main_Page

http://opensysadmin.com/trac/wiki/VirtualMachines

----------

## Inodoro_Pereyra

Muy interesante, se agradece el aporte. Sobre todo el link a OsZoo que no lo conocía.

Salud!

----------

## opotonil

Pregunta tonta.

Para compilar el qemu me valdria con libstdc++-v3 o tengo que meter el gcc-3.x entero. En el servidor no tengo problema, pero en el portatil uso "-march=pentium-m" y ya me ha dado problemas por ejemplo al intentar meter el java de sun, ya que me intenta meter un gcc-3.x (no recuerdo ahoramismo la version exacta) que por lo visto no soporta "-march=pentium-m".

Gracias y salu2.

PD: no he consegido encontrar ningun roadmap que indique cuando, aproximadamente, se llevaran bien gcc-4 y qemu ¿existe? (a unque me da que no va ha ser a corto plazo)

----------

## gringo

 *Quote:*   

> Pregunta tonta.
> 
> Para compilar el qemu me valdria con libstdc++-v3 o tengo que meter el gcc-3.x entero. En el servidor no tengo problema, pero en el portatil uso "-march=pentium-m" y ya me ha dado problemas por ejemplo al intentar meter el java de sun, ya que me intenta meter un gcc-3.x (no recuerdo ahoramismo la version exacta) que por lo visto no soporta "-march=pentium-m".

 

seguramente me equivoque pero creo que te hace falta un >gcc-3.4.6 para tener -march-pentium-m, puede ser ? 

 *Quote:*   

> PD: no he consegido encontrar ningun roadmap que indique cuando, aproximadamente, se llevaran bien gcc-4 y qemu ¿existe? (a unque me da que no va ha ser a corto plazo)

 

por lo poco que he leído los devs de qemu creen que gcc4 hace algo estúpido y por tanto no lo van a arreglar, es problema de los devs de gcc (según ellos claro). Hay varios parches pululando por ahí pero ninguno parece que soluciona el problema definitivamente. Si quieres probar, prueba con esto y sigue las instrucciones al principio del parche. 

saluetes

----------

## kalcetoh

 *opotonil wrote:*   

> Pregunta tonta.
> 
> Para compilar el qemu me valdria con libstdc++-v3 o tengo que meter el gcc-3.x entero. En el servidor no tengo problema, pero en el portatil uso "-march=pentium-m" y ya me ha dado problemas por ejemplo al intentar meter el java de sun, ya que me intenta meter un gcc-3.x (no recuerdo ahoramismo la version exacta) que por lo visto no soporta "-march=pentium-m".
> 
> Gracias y salu2.
> ...

 

Una cosita, te lo digo porque lo he hecho, si tienes la intención de únicamente usar qemu junto con kvm se puede compilar con gcc4, pero no podrás usarlo si no es con kvm, para ello tienes que compilarlo a mano, hay una opción dentro del config que te lo permite hacer.

También tienes otras opciones como virtualbox, con la que puedes hacer lo mismo pero todo más sencillito y tal, este es más orientado a la virtualización "casera".

PD: Ya tengo 300 comentarios y soy guru, ¡viva! ¡viva!   :Laughing: 

----------

## gringo

 *Quote:*   

> si tienes la intención de únicamente usar qemu junto con kvm se puede compilar con gcc4

 

cierto, esto lo pondré tb. mas arriba en el manual para no crear confusiones. Gracias  :Smile: 

 *Quote:*   

> También tienes otras opciones como virtualbox, con la que puedes hacer lo mismo pero todo más sencillito y tal, este es más orientado a la virtualización "casera". 

 

pero virtualbox no hace uso de las extensiones de virtualización por hardware, no ?

 *Quote:*   

> PD: Ya tengo 300 comentarios y soy guru, ¡viva! ¡viva! 

 

enhorabuena  :Smile: 

saluetes

----------

## kalcetoh

Hola gringo, te comento mi punto de vista sobre usar qemu usando kvm y virtualbox, tras haber usado los dos.

Como primer punto Virtualvox sí hace uso de las extensiones de los nuevos procesadores, pero no es obligatorio disponer de ellas, y aun así, funciona bastante bien.

En principio más o menos se pueden hacer las mismas cosas con los dos, la manera de configurar la red es muy parecida, por no decir que es la misma.

Las claras ventajas que le he visto a Virtualbox son las siguientes:

Es más sencillo de manejar, de configurar, y de encontrar las opciones que tiene (usabilidad), en qemu hay que usar mucho comando, y si quieres tener configuradas las máquinas virtuales acabas por crearte tus propios scritps

Tiene los virtualbox-additions, que mejoran la interacción con el ratón, por ejemplo, y lo de Seamless (o algo así) que está muy bien.

Me parece que es un pelín más rápido tal vez

Te permite guardar el estado de la máquina en lugar de andar apagandóla, vale, esto en qemu también se puede, pero es más lioso.

Y como desventajas, pues tendría las siguientes:

No permite tener sistemas virtualizados con más de 1 procesador, o por lo menos yo no sé cómo, con kvm esto es posible desde las últimas versiones.

No es completamente software libre, hay partes cerradas como las additions, o la parte usb.

Puede que muchos de los problemas expuestos se soluciones gracias a virt-manager,un frontend para qemu+kvm y también para xen.

Espero que ésto te de más o menos una idea entre las diferencias. Ya te digo que yo empecé usando qemu + kvm, pero me pareció muy lioso, y cuando salió la version 1.4 de virtualbox, que ya funcionaba en x86_64, empecé a usarla y me pareció bastante más fácil de usar.

----------

## gringo

 *Quote:*   

> Como primer punto Virtualvox sí hace uso de las extensiones de los nuevos procesadores, pero no es obligatorio disponer de ellas, y aun así, funciona bastante bien. 

 

oops, eso no lo sabía.

 *Quote:*   

> En principio más o menos se pueden hacer las mismas cosas con los dos, la manera de configurar la red es muy parecida, por no decir que es la misma. 

 

seguramente, yo tengo mas experiencia en vmware y qemu, sobre todo este último lo uso bastante, así que esto será como todo, prueba, compara y quédate con el que mejor te encuentres  :Smile: 

Solo añadir que qemu no es sólo una solución de virtualización, si no que puede emular por completo una arquitectura. Así, p.ej., con qemu puedes ejecutar un so arm en una máquina ppc ( por decir algo) y es por eso por lo que mas lo uso realmente.

saluetes

----------

## opotonil

Pues nada que por ahora lo metere en el servidor con gcc-3.x que en este en principio no tiene porque darme problemas y lo de parchear no me convence demasiado.

Por otro lado ninguno de mis procesadores (pentium-m en el portatil y pentium4 en el servidor) tiene instrucciones de virtualizacion... as que kvm no puedo utilizar.

Gracias y salu2.

PD: y por curiosidad los devs de gcc ¿que dicen? ¿que el problema es de qemu? asi que unos por otros la casa sin barrer ¿? por supuesto hay que tener en cuenta el merito de ambos desarrollos que ninguno parece sencillo.

----------

## gringo

 *Quote:*   

>  y por curiosidad los devs de gcc ¿que dicen? ¿que el problema es de qemu? asi que unos por otros la casa sin barrer ¿? por supuesto hay que tener en cuenta el merito de ambos desarrollos que ninguno parece sencillo.

 

si, dicen que es problema de su aplicación y que por tanto ellos no lo van a solucionar. Por lo que leo han actualizao el FAQ en la web sobre este tema :

http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/FrequentlyAskedQuestions#head-1dd86241b11d36963df140c9f6ab46ef402d4244

saluetes

----------

## opotonil

Bueno pues al final he metido qemu (en el pentium-4).

Por si a alguien le puede interesar, siguiendo el how-to del wiki (http://gentoo-wiki.com/HOWTO:_Qemu) con:

```

# emerge =gcc-3.4.6*

```

no ha habido manera (daba error de compilacion el qemu-softmmu), he tenido que utilizar una version anterior (https://forums.gentoo.org/viewtopic-t-588083-highlight-qemu.html?sid=4fecd264996e09cbb42d90c51e6177cf)

```

# emerge =gcc-3.3*

```

Salu2.

----------

## opotonil

Para poder manejar las maquinas virtuales como usuario:

Añadir lo siguiente sustituyendo USUARIO por el usuario con el que quieras manejar las vm en /etc/conf.d/net

```

tunctl_tap0="-u USUARIO"

tunctl_tap1="-u USUARIO"

```

y crea el fichero /etc/udev/rules.d/10-local.rules con el siguiente contenido sustituyendo GRUPO esta vez (me gusta mas seguir dejando a root como propietario y utilizar de grupo el del usuario anterior)

```

KERNEL=="tun",          NAME="net/%k", GROUP="GRUPO"

```

y ya de paso una preguntita ¿para que usa qemu-softmmu la USE sdl? porque estoy usando la salida grafica en utro PC mediante vnc de forma que no se si seria necesaria.

Gracias y salu2.

----------

## gringo

 *Quote:*   

> Para poder manejar las maquinas virtuales como usuario:
> 
> Añadir lo siguiente sustituyendo USUARIO por el usuario con el que quieras manejar las vm en /etc/conf.d/net
> 
> Código:
> ...

 

gracias  :Smile:  , ahora lo añado arriba.

 *Quote:*   

>  ¿para que usa qemu-softmmu la USE sdl? porque estoy usando la salida grafica en utro PC mediante vnc de forma que no se si seria necesaria

 

si dehabilitas sdl es como si te quedaras sin gráfica virtual pero no sé si vnc necesita esa salida o no ... prueba y nos cuentas  :Razz: 

saluetes

----------

## gringo

bump, todos aquellos que habéis seguido este howto en su momento para la puesta a punto de KVM, os recomiendo que lo volváis a leer y hagáis las oportunas modificaciones/ actualizaciones.

saluetes

----------

## opotonil

Pues nada que por lo visto a Sony le ha parecido que lo de la virtualización es una chorrada que no vale para nada, de manera que en sus portátiles Vaio que tienen la posibilidad de utilizar las instrucciones de virtualización del procesador, como es el caso del VGN-FZ21M, la opción viene deshabilitada en la BIOS, hasta aqui todo normal, el problema es que cuando accedemos a la BIOS para habilitar dicha opción esta no aparece por ningun lado y tampoco es que haya muchos sitios donde buscar, es la BIOS mas minimalista que he visto en mi vida.

Asi que tan solo nos quedan 2 posibilidades:

    - Modificar manualmente la configuracion de la BIOS (no se si es la forma mas correcta de decirlo) http://forum.notebookreview.com/showthread.php?t=189228

    - Tocar directamente la NVRAM (demasiado arriesgado para mi gusto) http://www.wimsbios.com/phpBB2/topic9326.html

A continuacion las instrucciones que he seguido, partiendo de http://www.wimsbios.com/phpBB2/topic9326.html (son practicamente iguales). Que quede claro no me hago responsable de lo que le pueda pasar a tu Sony Vaio (cualquier cambio sera reversible retirando la pila de la placa base).

1) Conseguir un USB arrancable con FreeDos

2) Descarga symcmos desde ftp://ftp.supermicro.com/utility/symcmos.exe y guardalo en el USB.

3) Resetea tu BIOS a los valores o parametros por defecto y realiza las modificaciones necesarias para arrancar desde el USB.

4) Arranca desde el USB y deja que cargue FreeDos

5) Una vez en FreeDos, si no guardaste symcmos en el raiz del USB posicionate en el directorio en el que lo guardaras y ejecuta:

```

symcmos -V2 -LBios.txt

```

Esto guardara la configuracion de tu BIOS en el fichero Bios.txt

6) Crea una copia de seguridad (por ejemplo Bios-ori.txt) del fichero recien creado Bios.txt y edita este con el editor de dos (edit) sustituyendo lo siguiente:

 *Quote:*   

> 
> 
> (02CD) [0000] --> (02CD) [0001]
> 
> 

 

Esto modificara el valor booleano de 02CD (VT-x en los Sony Vaio serie FZ) de false (0000) a true (0001) activando la virtualizacion.

7) Lo siguiente es cargar el fichero que acabamos de modificar (si cuando termines con todo el proceso sigues sin virtualizacion o se ha producido algun error tendras que arrancar nuevamente con FreeDos y ejecutar este mismo comando sustituyendo el fichero por el de backup, en este ejemplo Bios-ori.txt), para lo que ejecutaremos:

```

symcmos -V2 -UBios.txt

```

 :Cool:  Ya esta todo hecho, tan solo queda reiniciar y comprobar si ha funcionado (en mi caso para reiniciar hice un ctr+alt+supr y se me quedo medio colgado asi que aprete el boton de apagado hasta que se apago, lo encendi y todo perfecto)

Notas:

- Puedes encontar el codigo correcto para otros modelos de Vaio en el post original (http://forum.notebookreview.com/showthread.php?t=189228) si no lo encuentras aqui prueba suerte en google y sino la unica solucion... ir probando con todos los valores booleanos negativos [0000] hasta que encuentres el que se corresponde a la virtualizacion.

Salu2.

PD: Creo que no se me olvida nada, lo unico comentar que por supuesto se puede hacer todo el proceso desde otros dispositivos como un disquete arrancable (si dispones de disquetera usb) o desde un CD... lo unico que no se donde guardaras la BIOS original para restaurarla en caso de que algo vaya mal (imagino que necesites una particion FAT en tu HD o un FreeDos con soporte para USB a mi no me funciono ninguno).

PD2: No se si es el sitio mas adecuado para publicar esto... ya que me parece interesante pero realmente no tiene relacion directa con gentoo por lo que tampoco me parecio cosa de abrir un tema nuevo.

----------

## AnimAlf

Hola, felicidades por el manual, está tope.

Tengo una duda sobre hacer un puente utilizando la tarjeta wireless. ¿Podeis ayudarme?, he probado varias cosas, pero no se arrancar sin que arranque antes la tarjera wlan. Creo que tendría que arrancar en modo promiscuo, pero, no se cómo se cambiaria ello (no tengo ni idea).

El archivo que tengo ahora es este:

```
modules_br0=( "wpa_supplicant" )

wpa_supplicant_br0="-Dwext -c /etc/wpa_supplicant/wpa_supplicant.conf"

wpa_timeout_br0=60

bridge_br0="wlan1 tap0"

config_wlan1=( "null" )

config_tap0=( "null" )

config_br0=( "192.168.1.107 netmask 255.255.255.0 broadcast 192.168.1.255" )

brctl_br0=( "setfd 0" "sethello 0" "stop off" )

routes_br0=( "default via 192.168.1.254" )

dns_servers_br0="208.67.222.222 208.67.220.220 80.58.61.250"

depend_br0() { 

  need net.wlan1

}

#modules_wlan1=( "wpa_supplicant" )

#wpa_supplicant_wlan1="-Dwext -c /etc/wpa_supplicant/wpa_supplicant.conf"

#wpa_timeout_wlan1=60

#config_wlan1=( "192.168.1.107 netmask 255.255.255.0 broadcast 192.168.1.255" )

#routes_wlan1=( "default via 192.168.1.254" )

#dns_domain_wlan1="keeper"

#dns_servers_wlan1="208.67.222.222 208.67.220.220 80.58.61.254"
```

pero no consigo hacerla enlazar. He probado decomentando modules wpa_supplicant y wpa_timeout pero activa la interface y br dice que no puede establecerse, también he probado a dejarlos sólo activados en wlan y no en br0 y tampoco nada.

¿Podeis helpearme?

thns

----------

## opotonil

A mi en el portatil con la wireless tambien me dio problemas, por lo que al final opte por una red ruteada. Con lo que tambien tengo la ventaja de que funciona tanto si me conecto por medio de la interface wireless como si me conecto por medio de la interface ethernet.

En mi caso tengo 3 interfaces virtuales tap0, tap1 y tap2 de forma que creo un bridge en el que solo estan ellas, br0, las interfaces fisicas las configuro normalmente y hago forward y masquerade.

Si quieres esta tarde, cuando llegue a casa, te pongo la configuracion que de memoria...

Salu2.

----------

## gringo

no tengo mucha idea de wifi la verdad pero que errores te dá exactamente ? si intentas levantarlo todo manualmente funciona ?

saluetes

----------

## AnimAlf

Si en el archivo de arriba el /etc/conf.d/net cambio los comentarios, entonces tengo la configuración de la wlan1 desde donde todo funciona: Desde la máquina virtual puedo acceder a la máquina que lanzó qemu y viceversa con acceso al exterior. Pero no al resto de la red. (tampoco entiendo mucho de wireless,   :Smile:   tardé un montón en quitar el cable de en medio del paso    :Very Happy:  )

Si lo intento así ...

```
bridge_br0="wlan1 tap0"

config_wlan1=( "null" )

config_tap0=( "null" )

modules_wlan1=( "wpa_supplicant" )

wpa_supplicant_wlan1="-Dwext -c /etc/wpa_supplicant/wpa_supplicant.conf"

wpa_timeout_wlan1=60config_br0=( "192.168.1.107 netmask 255.255.255.0 broadcast 192.168.1.255" )

brctl_br0=( "setfd 0" "sethello 0" "stop off" )

routes_br0=( "default via 192.168.1.254" )

dns_servers_br0="208.67.222.222 208.67.220.220 80.58.61.250"

depend_br0() {

  need net.wlan1

}
```

me dice tras un /etc/init.d/net.br0 start

```
 * Starting wlan1

 *   Starting wpa_supplicant on wlan1 ...                                 [ ok ]

 *   Starting wpa_cli on wlan1 ...                                        [ ok ]

 *     Backgrounding ...

 * WARNING:  net.br0 is scheduled to start when net.wlan1 has started.
```

y con un if config veo sólo la wlan1 levantada, pero sin configurar.

si lo pruebo así:

```
modules_br0=( "wpa_supplicant" )

wpa_supplicant_br0="-Dwext -c /etc/wpa_supplicant/wpa_supplicant.conf"

wpa_timeout_br0=60

bridge_br0="wlan1 tap0"

config_wlan1=( "null" )

config_tap0=( "null" )

config_br0=( "192.168.1.107 netmask 255.255.255.0 broadcast 192.168.1.255" )

brctl_br0=( "setfd 0" "sethello 0" "stop off" )

routes_br0=( "default via 192.168.1.254" )

dns_servers_br0="208.67.222.222 208.67.220.220 80.58.61.250"

depend_br0() { 

  need net.wlan1

}
```

Asín seguro que NO es, ya que lo primero que hace es saltarme a la consola de texto /dev/tty1 para mostrarme una ristra de mensajes que me dicen

```
unregister_netdevice: waiting for br0 to become free. Usage count = 3
```

y desde la consola desde donde lo lancé me muestra:

```
animalf@keeper /etc/init.d $ sudo /etc/init.d/net.br0 start

 * Starting wlan1

 *   Configuring wireless network for wlan1

 *   WEP key is not set for "killMAnute" - not connecting

 *   Couldn't associate with any access points on wlan1

 *   Failed to configure wireless for wlan1                             [ !! ]

 * ERROR:  cannot start net.br0 as net.wlan1 could not start

```

 e ifconfig no me muestra ningun dispositivo levantado.

Asi estoy. No se me ocurre nada más. Googleando me ha parecido ver que es posible, aunque no lo vi en una configuración para Gentoo.

----------

## gringo

lo he leído un par de veces y tan sólo veo errores de forma, pero nada mas, no veo nada raro la verdad. La siguiente configuración funciona ? :

```
modules_wlan1=( "wpa_supplicant" )

wpa_supplicant_wlan1="-Dwext -c /etc/wpa_supplicant/wpa_supplicant.conf"

wpa_timeout_wlan1=60

tuntap_tap0="tap" 

bridge_br0="wlan1 tap0" 

config_wlan1=( "null" ) 

config_tap0=( "null" ) 

config_br0=( "192.168.1.107 netmask 255.255.255.0 broadcast 192.168.1.255" ) 

brctl_br0=( "setfd 0" "sethello 0" "stop off" )

routes_br0=( "default via 192.168.1.254" )

dns_servers_br0="208.67.222.222 208.67.220.220 80.58.61.250" 

RC_NEED_br0="net.wlan1 net.tap0" 
```

revísalo por si las moscas.

saluetes

----------

## opotonil

No he probado la conectividad con otros equipos de la red, mas que nada porque no los tengo, pero si no me equivoco deberia funcionar.

/etc/conf.d/net

```

dns_domain_lo="lan"

config_eth0=( "dhcp" )

dhcpcd_eth0="-t 10"

wpa_supplicant_wlan0="-Dwext"

wpa_timeout_wlan0=60

RC_NEED_br0="net.tap0 net.tap1 net.tap2"

bridge_br0="tap0 tap1 tap2"

config_br0=( "10.0.3.1/24" )

tuntap_tap0="tap"

tunctl_tap0="-u opotonil"

config_tap0=( "null" )

tuntap_tap1="tap"

tunctl_tap1="-u opotonil"

config_tap1=( "null" )

tuntap_tap2="tap"

tunctl_tap2="-u opotonil"

config_tap2=( "null" )

```

En cuanto a "iptables" si tienes el "forward" a "ACCEPT" no creo que necesites nada mas en la tabla "filter", en la tabla "nat"

```

$IPTABLES -t nat -N allow-masquerade-postroute

$IPTABLES -t nat -F allow-masquerade-postroute

$IPTABLES -t nat -A allow-masquerade-postroute -o eth0 -s 10.0.3.0/24 -j MASQUERADE

$IPTABLES -t nat -A allow-masquerade-postroute -o wlan0 -s 10.0.3.0/24 -j MASQUERADE

$IPTABLES -t nat -A POSTROUTING -j allow-masquerade-postroute

```

Y las maquinas virtuales estarian configuradas en el rango "10.0.3.0/24" con "default via 10.0.3.1"

Salu2.

PD: el problema no es la configuración en si sino el meter una interface wireless en un bridge (por lo que vi cuando estube configurando esto)

----------

## AnimAlf

Buena aportación. Se me han despejado las dudas un poco sobre puentes entre redes.

Según he estado viendo por ahí, sólo se puede hacer un puente con una tarjeta inhalámbrica si esta está en modo master, a la espera de conexiones. Ne he encontrado ningún caso más por ahí, sí comentarios en algunos threads, como:

Warning: Network bridging will not work when the physcial network device (eg eth1, ath0) used for bridging is a wireless device (eg ipw3945), as most wireless device drivers do not support bridging!

Y para que soporte bridging hace falta modo master (por eso lo de los pocos drivers)

#client OS works with br0[eth0,tap0],not for br0[wlan0,tap0]

Bueno, pues nada, yo no quería quedarme sin ver el puente. Ya tengo el cable de red otra vez por medio tocando las narices   :Very Happy:   :Very Happy:  que con eth0 esto va de lujo.

Saludos

----------

## Coghan

Gracias gringo, me ha venido de perlas este manual.

Sólo anotar un detalle: Para poder trabajar con las interfaces TUN/TAP es necesario alguno de estos dos paquetes net-misc/openvpn o sys-apps/usermode-utilities. Es bastante tonto pero me las vi hasta que no repasé el /etc/conf.net.example

----------

## gringo

cierto, gracias, cuando tenga un segundo lo añadiré al manual y lo retocaré un poco de paso, que está un poco bastante obsoleto ya.

saluetes

----------

## inconexo

Gringo, gracias por el excelente manual; permiteme correguir un pequeño bug:

 *gringo wrote:*   

> 
> 
> ```
> kvm -hda vdisk.img -boot c -m 384 -k es -net nic,macaddr:52:54:00:12:34:57 -net tap,ifname=tap0,script=no
> ```
> ...

 

Bien, como bien dice gringo, es muy importante que MAC sea distinta en cada maquina. La sintaxis correcta para especificar la MAC de cada tarjeta de red de cada maquina virtual es:

```
-net nic,macaddr=52:54:00:12:34:59 
```

Es decir, un signo =

Tambien propongo estos scripts para el boot:

Boot de un windows:

```
kvm -vnc :5,password -monitor stdio -m 256 -k es -net nic,model=rtl8139,macaddr=DE:AD:BE:EF:24:20 -net tap,ifname=tap5,script=no win.dominio.com.img
```

(podremos conectarnos por vnc a ip_de_host:5, para ver lo que ocurre, y teclear "change vnc password" desde la consola del qemu para especificar una password para el vnc)

Boot de un gentoo (ojo, debemos prescindir del frame buffer)

```
kvm -curses -m 256 -k es -net nic,model=e1000,macaddr=DE:AD:BE:EF:62:24 -net tap,ifname=tap2,script=no lin.dominio.com.img
```

Como veis, no es necesario contar con un servidor X, como en vmware

Un saludo!

----------

## gringo

ok, gracias, he corregido el howto y he añadido vuestras aportaciones.

saluetes

----------

## zorth

hola chicos. muy bueno gringo. me surge una duda: en mi caso para correr vmware tengo que tener la virtualizacion en el kernel y en bios deshabilitada o vmware no corre y si lo intento una vez funcionando cargar algun modulo como kvm me crashea el ordena. por tanto y como ejemplo el modulo kvm o el kvm-intel en mi caso no los puedo tener o surge el problema que comento. lo has probado si usas vmware ?

saludos :p

----------

## inconexo

Hola!

 *zorth wrote:*   

> en mi caso para correr vmware tengo que tener la virtualizacion en el kernel y en bios deshabilitada o vmware no corre y si lo intento una vez funcionando cargar algun modulo como kvm me crashea el ordena. por tanto y como ejemplo el modulo kvm o el kvm-intel en mi caso no los puedo tener o surge el problema que comento

 

No me queda claro que quieres hacer; quieres hacer vmware + kvm? Mira http://kvm.qumranet.com/kvmwiki/FAQ#head-b0494b2997851cfd03a0d762b63773ce7f897409

Si usas vmware workstation o vmware server, no habra problema; ninguna de estas versiones usa las instrucciones VT de tu micro. Solo KVM las usara con el modulo kvm_intel, y ambas virtualizaciones pueden existir

Un saludo!

----------

## zorth

aha. pues es curioso. si tengo la virtualizacion por bios en mi placa, una gigabyte 965p-dq6 rev3.3 habilitada vmware se niega a arrancar. si ademas de todo esto, tengo los modulos kvm & kvm-intel cargados, sigue sin arrancar. si deshabilito la virtuazacion por bios y aun asi, corro vmware y cargo con un modprobe kvm & kvm_intel, el ordena se queda congelado. nada responde y el cuelgue obliga a tirar de reset. de ahi mi pregunta  :Smile: 

saludos.

----------

## inconexo

 *zorth wrote:*   

> ...vmware se niega a arrancar. si ademas de todo esto, tengo los modulos kvm & kvm-intel cargados, sigue sin arrancar. si deshabilito la virtuazacion por bios y aun asi, corro vmware y cargo con un modprobe kvm & kvm_intel, el ordena se queda congelado.

 

Curioso; si quieres lo hablamos en otro hilo; por no mezclar este problema con el (estupendo) manual de gringo

Comentanos...

- version del vmware

- emerge  --info

- salida del dmesg cuando haces un modproble kvm-intel y un /etc/init.d/vmware start

Con eso vamos viendo el problema

En mi caso, cargo el modulo del kvm antes de iniciar el vmware, como precaucion

Un saludo!

----------

## gringo

que yo sepa no puedes tener cargado kvm y ejecutar vmware, porque ambos van a querer acceder a los mismos recursos.

Otro tema es que no puedas ejecutar vmware con la virtualización habilitada en la bios y sin kvm, eso si que es raro. Prueba con las últimas versiones de vmware, creo que la 6.5 salió hace poco, igual es un problema conocido y se ha solucionao.

saluetes

----------

## inconexo

Hola!

las versiones de vmware que no usen las instrucciones vmx de micro, pueden coexistir con kvm. En mi caso 3 vmware + 8 kvm

```
admin@zorrilla ~ $ lsmod

Module                  Size  Used by

vmnet                  33852  19

vmmon                1797708  22

kvm_intel              26304  6

kvm                    96432  1 kvm_intel
```

Hablando de vmware y kvm... se pueden convertir formatos de imagenes de uno a otro; es decir, puedes coger tu vieja maquina virtual vmware y pasarla a un flamante kvm, de este modo:

```
vmware-vdiskmanager -r /var/lib/vmware/Virtual\ Machines/vmwin2003/vmwin2003.vmdk -t 0 tmp.vmdk

kvm-img convert -f vmdk tmp.vmdk -O raw xen_compatible.img
```

Y ahora las malas noticias... un vmware suele emular una controladora SCSI; sin embargo, kvm usa una IDE. Ademas, los chipset, tarjetas PCI... emulados tambien son diferentes... asi que raro sera la ocasion en que al pasar de una a otra sea un paso directo

Un saludo!

----------

