18 de Diciembre, 2005

Mi red wireless privada

Bueno, no todo iban a ser llantos con la actualización de ayer. Algunas cosas han salido bien, y una de ellas es que ahora tengo red wireless privada en casa.

Haciendo cuentas ya teníamos vr0 en la red local 802.3, vr1 hacia Internet, wi0 en elxwifi, y ahora... presentamos ural0 para mi red privada 802.11b :).

La verdad es que no me he calentado nada la cabeza, he seguido el consejo que le di a Pedro con su wlan para Nintendo DS. Vamos, que cuando doy un cosejo es porque yo lo haría así ;).

Es muy fácil. Cuando hacemos en OpenBSD un puente entre dos tarjetas, se puede filtrar en las dos. Si hacemos un puente con vr0, tenemos la ventaja de que las reglas del cortafuegos ya están perfectamente probadas en ese interfaz y en la red local. Los usuarios de la red 802.11b podrán acceder de forma totalmente transparente a la red 802.3, como si fueran una máquina más de la red local cableada.

En realidad no es tan transparente :P. He tenido problemas con el servidor DHCP, que me interesa mucho que funcione en la red local por temas de trabajo. El problema está en que un bridge convierte a dos interfaces en una sola, y por lo tanto se pierde una de las dos direcciones IP. Pues además el protocolo DHCP parece tener problemas. Puede que tenga una fácil solución, pero tampoco he pensado mucho en ello ;).

Como digo, Packet Filter nos permite filtrar en ambas tarjetas, lo cual es una delicia para asegurar un poco nuestra red inalámbrica. Además de poner el WEP (que si se quiere romper, es trivial), he marcado el tráfico que vaya o venga de ciertas direcciones MAC, y con esa marca podemos jugar un rato con Packet Filter (sé que ya lo expliqué :P). Por ahora va a ser suficiente.

La tarjeta que estoy usando para mi red wireless privada es USB, y ha sido el motivo esencial para saltar a OpenBSD 3.8, que es la primera versión que trae soporte para este chip:

$ dmesg | grep ural0
ural0 at uhub3 port 3
ural0: ANI 802.11g W, rev 2.00/0.01, addr 2
ural0: MAC/BBP RT2570 (rev 0x03), RF RT2526, address 00:80:5a:32:XX:XX

Se trata de una Conceptronic C54RU, que es económica y, si tenemos problemas de cobertura, nos puede dar juego con un alargador USB (además, al servidor no le cabe nada más dentro, pero conectores USB tiene unos cuantos :P). No me gusta esta marca más que otra, pero teniendo en cuenta lo complicado que resulta a veces adivinar el chip que gasta un fabricante, esta está bien identificada: RT2570, y mi sistema operativo trabaja con él de categoría (incluso en modo master, como vamos a ver :P).

Pero estudiemos un poco la configuración, muy parecida a la de Pedro.

En primer lugar, lo que ya había:

$ cat /etc/hostname.vr0
inet 192.168.0.101 255.255.255.0 192.168.0.255

Ahora la nueva tarjeta:

$ cat /etc/hostname.ural0
up mediaopt hostap mode 11b nwid "MiRedGuifi" \
nwkey 0x01010101010101010101010101 chan 1

Desde luego ese no es mi SSID ni la clave WEP se parece a la que uso :P. El lector sabrá comprender que como ejemplo bien valen estos datos. Importante el canal, podemos buscar otras redes en la zona y elegir un canal alejado de las redes existentes: eso aumentará el rendimiento y reducirá nuestros problemas.

Además he puesto el modo en 802.11b porque esta chip trabaja con 802.11g, pero un PC de la red tiene una tarjeta PRISM2.5, que solo trabaja en 802.11b. Es una limitación, que nos obligará a asumir el límite práctico de unos 5Mbps (de los 11Mbps teóricos del estándar 802.11b).

Con hostap indicamos que queremos que trabaje en modo master, es decir, como punto de acceso. Esto no se puede hacer con todos los chips, ni con todos los drivers.

Ahora el puente:

$ cat /etc/bridgename.bridge0
add vr0
add ural0
up
rule pass in on ural0 src 00:90:4b:23:XX:XX tag pwlanok
rule pass out on ural0 dst 00:90:4b:23:XX:XX tag pwlanok

Primero añadimos las tarjetas, luego levantamos el puente, y finalmente ponemos dos reglas para marcar el tráfico desde y hacia la MAC de una máquina autorizada. Esto no es una barrera infranqueable, claro. Pero si hay que romper el WEP y además dar con una MAC válida, quizás sea suficiente para el nivel de mis vecinos :P.

Ahora solo queda poner la regla adecuada en /etc/pf.conf:

# grep pwlanok < /etc/pf.conf
pass quick on ural0 all tagged pwlanok

Vamos, que dejamos pasar el tráfico marcado en el bridge en la tarjeta ural0, y ya se encargará el filtrado existente en vr0 de todo lo demás. Notar que mi política por defecto es block in all y block out all, así que los paquetes que no reciban un pass explícito, no pasarán.

Estoy muy contento con el resultado y resulta más complicado de explicar que de implementar. El día menos pensado me veo programando con el portátil tirado en la cama ;).

Anotación por Juan J. Martínez, clasificada en: openbsd, wireless.

Hay 1 comentario

Gravatar

Muy interesante.
¿Usabas OpenBSD en el servidor?
Creo que has terminado de darme el motivo para instalarmelo.
No sabia que se podia poner en modo master esta tarjetita USB.

por Ruben, en 2005-12-19 19:26:43

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: