VirtualBox: Compartir tarjeta con dispositivos TUN/TAP

VMware trae una opción para conectarse a la red obteniendo la ip de la red desde un dispositivo virtual, pudiendo así tener a la máquina virtual como si estuviese conectada a la misma red de la maquina anfitriona, muy útil para probar hacer nuestros propios servidores caseros y jugar con las configuraciones😀 ; esto se me había complicado un poco con VirtualBox, mi virtualizador GNU favorito, ya que no tiene un asistente para eso, así que me puse manos a la obra, y con la ayuda de Google pues he logrado hacerlo, y aquí les dejo el mini How-To de como se crean los dispositivos Tun/Tap y como usarlos con VirtualBox:

Para poder utilizar una tarjeta de red en VirutalBox primero debemos compilar algunos paquetes que nos servirán para ello.

Lo primero que necesitamos son los Bridge Utils que nos servirán para hacer la conexión con nuestra tarjeta de red.

Lo segundo es descargarnos los uml-Utilities que nos servirán para crear los dispositivos TAP, que puede ser descargado desde sourceforge.net

Si no desean compilar, pues tengo acá los paquetes para Slackware 12😀

Si el kernel que usamos es el que viene con Slackware no habrá problemas, pero si es uno a la medida debemos tener en cuenta que tengamos activado el soporte:

networking -> 802.1d Ethernet Bridging

ya sea como módulo o compilado directamente en el kernel.

Ahora procedemos a crear nuestro dispositivo virtual🙂

Lo primero será crear la carpeta y el nodo para el dispositivo tap

# mkdir /dev/net
# mknod /dev/net/tun c 10 200

Con nuestro nodo creado podemos crear un grupo para que pueda ingresar al dispositivo, y le asignamos los permisos necesarios al dispositivo:

# groupadd umlnetwork
# chgrp umlnetwork /dev/net/tun
# chmod g+rw /dev/net/tun

Instalamos el modulo para este dispositivo:

# modprobe tun

Ahora debemos crear nuestra interfaz virtual😀

# tunctl -u <usuario> -t tap0

Es importante que tengamos en cuenta que debemos reemplazar <usuario> por el usuario que vaya a usar la interfaz, o no podrá ingresar por problemas de permisos y recordarnos añadir a ese usuario al grupo umlnetwork; por su puesto que también pudimos cambiar el grupo del dispositivo (/dev/net/tun) a users, para que todos los usuarios tengan acceso al dispositivo. el nombre tap0 lo pueden cambiar por el que mas les guste😀

Si no queremos mas esta interfaz de red virtual la podemos eliminar con el parametro -d:

# tunctl -d tap0

Ahora se supone que con añadir unas cuantas líneas al /etc/modprobe.d/modprobe.conf podemos hacer que con solo crear el nodo automaticamente nos levante los dispositivos creados y las configuraciones, no me ha funcionado muy bien, pero se los dejo por si logran hacerlo😀

# echo “alias char-major-10-200 tun” >> /etc/modprobe.d/modprobe.conf
# depmod -a

Ahora debemos configurar nuestra conexión con alguna de nuestras tarjetas de red además del dispositivo tap, yo usaré la segunda tarjeta (eth1), para ello debemos colocarla en modo promiscuo o en modo para compartir por así decirlo🙂 y con la dirección en

# ifconfig eth1 0.0.0.0 promisc up
# ifconfig tap0 0.0.0.0 promisc up

Ahora creamos el dispositivo puente que se encargará de conectar ambas tarjetas de red entre sí, esto lo hacemos con el comando brctl ( bridge control ), primero creamos el dispositivo y luego añadimos a ese dispositivo las interfaz que queramos unir.

# brctl addbr puente0
# brctl addif puente0 eth1

para corroborar que ya tenemos añadida esa interfaz y todo esté bien configurado podemos ver como esta el estado del puente:

# brctl show

Ahora le asignamos una dirección de red a nuestra interfaz puente para que podamos hacer lo que necesitemos, como probar servicios de dhcp, OpenLDAP, u otras cosas que sin esto sería difícil hacer😀

# ifconfig puente0 192.168.0.5 netmask 255.255.255.0 up

Con todo en orden solo nos resta crear nuestros script de inicio para Virtual Box

Script de inicio:

#!/bin/sh
kdesu “/sbin/ifconfig $2 up && /usr/sbin/brctl addif puente0 $2”

Lo que hace es levantar la tarjeta de red y luego añadirla al puente.

Script de cierre de sesión:

#!/bin/sh
kdesu “/usr/sbin/brctl delif puente0 $2 && /sbin/ifconfig $2 down”

Como en el anterior, solo que este script quita al dispositivo del puente y lo deshabilita.

Estos scripts los colocamos en una carpeta y los llamamos desde la pantalla de VirtualBox de esta manera:

Configuracion Tap VirtualBox

Y cuando iniciemos nos pedirá usuario y contraseña para que podamos ejecutar los scripts.

Ahora ya podemos hacer nuestras pruebas de configuraciones como en una Red Real!!😀

Fuentes de Inspiracion y de ayuda🙂

Bulma -> http://bulma.net/body.phtml?…..Page=2
VirtualBox Wiki -> http://www.virtualbox.org/wiki/Automatic_Bridge_Ubuntu
Virtualización con Quemu -> http://www.saghul.net/…howto-virtualizacion…/
Documentación del kernel -> http://www.kernel.org/…/networking/tuntap.txt
Documentacion de Quemu -> http://compsoc.dur.ac.uk/~djw/qemu.html
Configuraciones de Puentes -> http://es.tldp.org/…/Bridge+Cortafuegos.html

Etiquetas: , , , , , ,

15 responses to “VirtualBox: Compartir tarjeta con dispositivos TUN/TAP”

  1. Jorge says :

    dhabyx mierda! hoy tuve tentando de nuevo un slack!! ubuntu me volvio zombie vas a ver

  2. dhabyx says :

    @Jorge: jajajaja, ya viste, pasate al lado Zen de Linux😛

  3. Luis Yax says :

    Porque no usar el Bridged network setting. Asi tambien tu guest OS pueded adquirir su propia IP ya sea DCHP or Static.

    Ahora si estas tratando de separar el traffico para distinguir machine, entoces si iria de esa forma.

    En un setup que tengo lo mas facil para mi fue agregar una nueve nic card. Funciona perfecto. Este es un heavy duty server though.

    Saludos!

  4. dhabyx says :

    @Luis: Pues yo tengo dos tarjetas (reales) una que conecta a internet y otra que la tengo casi siempre desconectada en mi Host OS🙂 lo que me permite hacer lo que quiera con la otra nic, entonces así puedo probar colocar un servidor dhcp solo en la otra targeta y probar configuraciones de iptables, etc. y aunque bien se puede crear otra nic en el virtual lo que quiero es tener total control sobre lo que hace y no usar el servidor dhcp del VirtualBox, si no que yo poder efectuar eso desde mi tarjeta (real) eth1 en el HostOS que va puenteada al dispositivo tun también en el HostOS, para que el GuestOS pueda usarla😀 Saludos.

  5. Element2048 says :

    Muy interesante, haré la prueba =)

  6. dhabyx says :

    @Element: Que te diviertas🙂

    Saludos.

  7. P3ll3 says :

    Wow bastante bueno !!! , lo voy a probar.

  8. dhabyx says :

    @P3II3: a divertirse!!!😀

  9. Slack says :

    Flaco sos Slackware y pones cosas con ubuntu ??? a sos un desastre.

  10. dhabyx says :

    @Slack, en donde miras cosas de Ubuntu??

    si te refieres al screenshot, solo es solo un tema de color parecido al de ubuntu pero no igual, y el tema del borde de la pantalla se llama Crystal, lo que hace que sea transparente además le puse un tono ocre por eso pareciera que es ubuntu pero es KDE🙂

    Saludos

  11. Asclepio says :

    Me parece que a lo que se refiere es a que pusiste una imagen que dice en la barra “Ubuntu Settings”… cosa que preocuparia a cualquier Slack, ya que seria visto como tomar el nombre de slackware en vano xD

    Muy buen tuto.. cuando pueda voi a ver si lo pongo en practica..

    Saludos dhabyx

    A.-

  12. dhabyx says :

    @Asclepio: bueno, estaba configurando Ubuntu,😀, es la configuración que utilicé para Configurar la máquina virtual de Ubuntu =), yo solamente lo tengo en máquina virtual y no en una partición directa🙂

  13. Alejandro Garrido Mota says :

    Muy buen tutorial, mucho tiempo atrás lo hacía de manera similar. Sin embargo, una acotación:

    No se olviden de colocar los -scripts de inicio- con el bit de ejecución.

    Saludos

  14. dhabyx says :

    @Alejandro gracias por el tip🙂

  15. Victor Gastélum says :

    Hola, qué tal?

    Me gustaría saber como hacer lo que dice el tutorial en una maquina con SO windows, si me dan algún norte por donde irme se los agradecería mucho.

    Saludos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: