Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Buscador

Entradas Mensuales

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Foro de elhacker.net - Noticias

elhacker.NET en Facebook

Entradas populares

PostHeaderIcon Virtualización + Tarjétas inalámbricas en modo bridge




Estaba yo liado con mi PFC y más en concreto con temás de Virtualización (Xen y KVM), cuando me encontré con un "inconveniente", al trabajar con las VM's en modo bridge con una tarjeta ethernet no hay problemas, pero... que pasa si queremos hacer esto con una tarjeta inalámbrica?

Realmente podemos pasar de líos y hacerlo con la ethernet, pero si tienes un portatil y estás conectado por wifi al router de tu casa, da bastante pereza tener que moverte y "enchufarte" al router.

El problema reside en que la mayoría de las tarjetas wifi no soportan el modo bridge, esto tiene una explicación técnica, que no es el fin de este artículo, así que a grandes rasgos quedémonos con que las tarjetas inalámbricas (la gran mayoría) no permiten spoofing de la dirección fuente, esto es debido al bajo ancho de banda de las conexiones wifi (2MBit/sec), lo que implica que en principio no queremos saber nada del tráfico que no sea específicamente para nosotros o de broadcast.
Para más info mister google.

Para solucionar esto, hay varias opciones, entre ellas el uso de parprouted, un demonio de capa 3 que crea un proxy ARP transparente a modo de puente, esto es útil para la creación de firewalls transparentes y redes "puenteadas" con diferentes protocolos MAC. También se puede usar esta técnica para lo que nosotros queremos, es decir, puentear una red Ethernet con nodos wireless sin el uso de WDS o puentes de capa 2.

A pesar de que esta es una solución factible, nosotros vamos a usar una técnica que no requiere el uso de software adicional, y que es conocida como Proxy ARP Subnetting (http://tldp.org/HOWTO/Proxy-ARP-Subnet/index.html), en el link está toda la explicación teórica de como funciona, así que yo simplemente me voy a dedicar a explicar como implementar esto en la práctica en el escenario planteado, es decir, trabajar con software de virtualización configurando las VM's en modo bridge.

Nota: Está hecho en un Debian Lenny, pero para otras distros no debiera de diferir en mucho/nada


1. Instalar tunctl

# sudo aptitude install uml-utilities

Tun/Tap provee recepción y transmisión de paquetes para programas de espacio de usuario. Puede ser visto como un simple dispositivo Punto a Punto o Ethernet, el cual en vez de recibir paquetes a través de un medio físico, los recibe desde programas del espacio de usuario, y en vez de enviarlos por un medio físico los escribe en espacio de usuario.
Cuando un programa abre /dev/net/tun, el driver crea y registra el dispositivo tunX o tapX. Luego, si lo cerramos, el driver automaticamente borra los dispositivos tunXX o tapXX y todas las rutas correspondientes.

En concreto nos interesan los dispositivos Tap, que son dispositivos Ethernet virtuales. El driver Tap fue desarrollado como soporte de bajo nivel para el kernel para hacer Ethernet tunneling. Este provee a las aplicaciones 2 interfaces:

- /dev/tapX – un dispositivo de caracter
- tapX – una interfaz Ethernet virtual

Los programas pueden escribir las tramas Ethernet en /dev/tapX y el kernel las recibirá a través de la interfaz tapX.
De la misma forma cuando el kernel escribe en tapX, los programas recibirán las tramas por /dev/tapX.


2. Levantar un dispositivo tap. Debe ser ejecutado con permisos de root y cambiando "pfc" por vuestro nombre de usuario

# sudo tunctl -u pfc

3. Habilitar arp proxy. De nuevo con permisos de root.

# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp
# echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp


4. Configuración.

A: Red. Asumamos una red del tipo 192.168.1.0/24 con el router (usado como DNS) en 192.168.1.1

B: Pc Anfitrión. Asumamos que la tarjeta inalámbrica es la wlan0
La Ip del host no es importante, simplemente tendremos que saberla para después configurarla en la VM.
Host IP: 192.168.1.100 -> será el gateway por defecto de la VM

C: Tap. No le asignamos Ip, si no que lo usamos para crear una ruta en el host.
ruta: 192.168.1.200 -> esta ruta será la Ip de la VM.

D: VM. IMPORTANTE: El DHCP no funciona, así que tendremos que asignar todo estáticamente.
Ip: 192.168.1.200
Máscara de Red: 255.255.255.0
Gateway por defecto: 192.168.1.100
DNS: 192.168.1.1

Teniendo esto en cuenta...

Configuramos la ruta citada antes, siempre con permisos de root:

# sudo ip link set tap0 up
# sudo route add -host 192.168.1.200 dev tap0

5. Iniciamos la VM y configuramos todo según lo expuesto antes

La VM se iniciará, pero no obtendrá Ip mediante DHCP, por lo que debemos loguearnos y configurarlo todo a mano:

# sudo ifconfig eth0 192.168.1.200 netmask 255.255.255.0
# sudo route add default gw 192.168.1.100 eth0
# sudo vim /etc/resolv.conf
nameserver 192.168.1.1


et... voilà! si todo ha ido bien, deberíamos de tener el asunto corriendo!

2 comentarios :

aaronduran2 dijo...

El otro día estuve viendo este problema, que no era capaz de hacer bridge con la inalambrica que tengo.

Buen post, lo pondré en práctica.

Un saludo.

Javier Castro dijo...

Hey kamsky muchas gracias por esta nota. Hace algún tiempo me encontré con el mismo problema que tú, solo que no tuve el tiempo como para buscar la razón del problema. Ahora tengo un juguetito nuevo para divertirme un rato. Saludos.

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.