# QEMU/Redes

QEMU soporta redes emulando algunas de las tarjetas de red (NIC) más populares, y estableciendo LAN virtuales (VLAN). Hay cuatro formas en las que los huéspedes de QEMU pueden ser conectados: modo usuario, redirección de conexiones, redes Tap y VDE.

## Red en modo usuario

Si no se especifican opciones de red, QEMU emulara por defecto una única tarjeta de red PCI Intel e1000 con un red en modo usuario que enlaza con la red del host. Los siguientes dos comandos son equivalentes:
El sistema operativo guest verá una NIC E1000 con un servidor virtual DHCP en 10.0.2.2 y será asignada con una dirección a partir de 10.0.2.15. Un servidor DNS virtual será accesible en 10.0.2.3, y un servidor SAMBA virtual (si existe) será accesible en 10.0.2.4 permitiendo el acceso a ficheros en el host a través de compartición de ficheros de SAMBA.
La red en modo usuario es buena para permitir el acceso a recursos de red, incluyendo Internet. Por defecto, sin embargo, actúa como un cortafuegos y no permite el tráfico entrante. Tampoco soporta otros protocolos que no sean TCP y UDP - así, por ejemplo, ping y otras utilidades ICMP no funcionarán.

### Redireccionamiento de puertos

Para permitir las conexiones de red hacia el sistema operativo guest bajo el modo usuario de red, se puede redirigir un puerto del sistema operativo host a un puerto del sistema operativo guest. Esto es muy útil para dar soporte a la compartición de ficheros, servidores web y servidores SSH desde el sistema operativo guest.
Así es como se configuraría QEMU con un Windows XP como guest compartiendo ficheros y páginas web bajo el modo usuario de red. El puerto TCP 5555 del host se redirige al puerto 80 del guest (el servidor web) y el puerto 5556 del host al puerto 445 del guest (red de Windows)::
NOTA: cuando se comparten carpetas desde el guest a través de la red de Windows, se debe especificar una contraseña para el usuario que mount usará para conectarse; si se intenta usar sin contraseña, mount fallará con un error de entrada/salida.

## Interfaces TAP

QEMU puede usar interfaces TAP para proporcionar capacidad de red complete para el sistema operativo guest. Esto puede ser útil cuando el sistema operativo guest está ejecutando varios servicios de red y debe estar conectado a través de puertos estándar; cuando se requieren otros protocolos distintos de TCP y UDP; y cuando múltiples instancias de QEMU necesitan conectarse entre ella (aunque esto se puede conseguir en el modo usuario de red a través de Redireccionamiento de puertos, o a través de conexiones).
En Qemu 1.1 y posteriores, el asistente de puente de red puede configurar tun/tap por el usuario sin necesidad de scripts adicionales.
Para versions más antiguas, configurar una interfaz TAP es un poco más complicado que en modo usuario de red. Se requiere instalar red privada virtual (VPN) en el sistema operativo host, y después establecer un puente entre la red del host y la red virtual.
Así es como se haría con Fedora 8 con asignación estática de direcciones IP. El procedimiento debería ser muy similar en otras distrubuciones Linux, y probablemente no muy diferente en otros sistemas *nix.

### Dispositivo TAP/TUN

Segun tuntap.txt, creamos primero el dispositivo:

### qemu-ifup

Primero, configurar un script para crear el Puente y levantar la interfaz TAP. Llamaremos a este script /etc/qemu-ifup.

### qemu-ifdown

También se necesitará un script para reiniciar la configuración de red después de salir de QEMU. Para ser consistente, lo llamaremos /etc/qemu-ifdown.

### Permitir a los usuarios ejecutar los scripts

En qemu 1.1 y posteriores solo hay que usar el de red, que no requiere ningún script y puede autoidentificarse como root.
Para versiones anteriores, los dos scripts anteriores se deben ejecutar como superusuario, para que puedan modificar las configuraciones de red del sistema. La mejor manera de conseguirlo es permitir a los usuarios de QEMU llamar a los scripts usando el comando sudo. Para configurar esto, hay que añadir lo siguiente al fichero /etc/sudoers:

### Iniciar QEMU con una interfaz TAP

A continuación crear un script para iniciar QEMU con una VLAN, y que se restaure todo cuando finalice. Este utiliza tap0. Especificar script=no indica a QEMU que solo use el dispositivo tap sin llamar a los scripts - hacemos esto para que QEMU pueda ser ejecutado como un usuario normal, no root.
Ejecutar el script, y éste creará la interfaz TAP, lo puenteará con eth0, ejecutará QEMU, y tirará el puente y la interfaz TAP cuando finalice..

## Conexiones

QEMU puede conectar múltiples sistemas operativos guests en una VLAN usando conexiones TCP o UDP.
Esta descrito aquí

## Servidor SMB

Si el sistema host tiene un servidor SMB instalado (SAMBA/CIFS en *nix), QEMU puede emular un servidor SMB virtual para el sistema guest usando la opción -smb. Especificar la carpeta a compartir y esta estará disponible para el guest en \\10.0.2.4\qemu (or puede poner 10.0.2.4 en el fichero hosts o lmhosts como smbserver y conectarlo a \\smbserver\qemu).
Esto no es estrictamente necesario, porque los guests en QEMU pueden acceder normalmente a los servidores SMB en el entorno del host. Puede ser muy útil, sin embargo, para la configuración de espacios de trabajo independientes para cada guest de QEMU sin necesidad de configurar las comparticiones SMB para cada uno.

## Enlaces externos

* documentación
* post en un foro acerca de hacer puentes de QEMU a Linux
* Script para hacer VPN sin tener que hacer puente a la interfaz de red del host. Usa dispositivos tap parecidos a los usados aqui pero no modifica tu interfaces de red. Parecido a vmnet1-vmnet7 en Vmware. Después, usa tablas de ip para configurar tus subredes tal y como harias con redes privadas físicas en tu LAN