Aprovecha tu router al máximo con OpenWrt: libertad inalámbrica


www.openwrt.org // #openwrt@Freenode

OpenWrt es una distribución GNU/Linux basada en Debian GNU/Linux que nos permite aprovechar las características técnicas de nuestro router al máximo más allá del uso que podríamos darle con el firmware que el fabricante le instaló.

Si buscamos OpenWrt en la Wikipedia podemos leer:

«OpenWrt es una distribución de GNU/Linux basada en firmware usada para dispositivos empotrados tales como routers personales.
El soporte fue limitado originalmente al modelo Linksys WRT54G, pero desde su rápida expansión se ha incluido soporte para otros fabricantes y dispositivos, incluidos el Netgear, D-Link, ASUS y algunos otros. El router más popular sigue siendo el Linksys WRT54G y el ASUS WL500G. OpenWrt utiliza principalmente una interfaz de línea de comando, pero también dispone de una interfaz WEB en constante mejora. El soporte técnico es provisto como en la mayoría de los proyectos de Software Libre, a través de foros y su canal IRC.

El desarrollo de OpenWrt fue impulsado inicialmente gracias a la licencia GPL , que obligaba a todos aquellos fabricantes que modificaban y mejoraban el código, a liberar éste y contribuir cada vez más al proyecto en general.

Poco a poco el software ha ido creciendo y se encuentran características implementadas que no tienen muchos otros fabricantes de dispositivos comerciales para el sector no profesional, tales como QoS, VPN y otras características que dotan a OpenWrt de un dispositivo realmente potente y versátil, apto para utilizar los hardware donde corre OpenWrt no sólo para utilizarlos como routers, sino como servidores de archivo, nodos P2P, servidores de WEBcams, firewall o puertas de acceso VPN.»

OpenWrt y dd-wrt

Además de OpenWrt existe dd-wrt que es un fork de terceras partes de OpenWrt con el objetivo de ofrecer un producto comercial; de esta forma se pueden adquirir routers con el firmware dd-wrt ya embebido y también soporte pago para mantenimiento e incidencias en los mismos.

La principal diferencia entre OpenWrt y dd-wrt es que este último no tiene una consola para acceso shell, no soporta la instalación de nuevo software y básicamente es una versión comercial de OpenWrt que se acerca mucho más al firmware que pueden traer de fábrica los distintos routers comerciales pero con características propias más potentes.

Algunos de los puntos en que destaca dd-wrt es en su interfaz de usuario ya que es mucho más atractiva que la de OpenWrt con aplicaciones más pulidas y orientadas a usuarios finales y no a administradores de sistemas o hobbystas.

Otra diferencia importante es que generalmente el firmware de dd-wrt está en la misma línea del firmware ‘estable’ de OpenWrt y por lo tanto algo atrasado con respecto a la versión de desarrollo que, en honor a la verdad, anda increiblemente bien y por el momento sólido como piedra, jamás tuve problema alguno.

Aunque a primera vista dd-wrt no parezca tan interesante como OpenWrt es bueno tenerlo presente para aquellos casos en que no exista un firmware OpenWrt para nuestro dispositivo o queramos contar con una interfaz más elegante apta para el usuario promedio.

Ambos proyectos, OpenWrt y dd-wrt cuentan con una gran comunidad cada uno que mantienen ambos proyectos en un desarrollo continuo lo que nos garantiza tener soporte por largo tiempo. Dichas comunidades son abiertas y amistosas aunque antes de hacer una consulta se le pide al usuario que lea la documentación apropiada y revise la wiki y los foros ya que es seguro que su consulta ya haya sido realizada y contestada previamente.

Por supuesto que consultas del tipo «instalé openwrt y no me anda nada, que hago» no son bienvenidas y posiblemente provocará que más de uno, como mínimo, le explique que todo se soluciona con un sudo rm -rf / e ingresando su contraseña >=D

Características de OpenWrt

Las ventajas de usar OpenWrt son múltiples:

  1. es una mini distro completamente funcional, «mini» aquí significa que:

a) cuenta con una cantidad limitada de paquetes disponibles
b) está pensada para ser lo más pequeña posible y que podemos instalarla en espacios reducidos de almacenamiento (tanto como 2mb!) y que además funcione con CPUs MIPS de tan sólo 300mhz.

  1. los módulos Wifi están optimizados por lo que usando OpenWrt aprovecharemos mejor nuestro router ya que tendrá mejor señal: será más potente y clara que con el firmware stock con el que vino de fábrica.
  2. aunque no están disponibles aplicaciones de alto nivel que hacen uso intensivo de procesador como PHP, sí contamos con una variedad interesante de software para instalar dependiendo de las cualidades técnicas de nuestro dispositivo.
  3. . Si contamos con el espacio y la capacidad de cálculo apropiada podremos tener corriendo a la par que el servidor web deseado:

a) un servidor de archivos – NFS y SMB/CIFS
b) un cliente IRC (en mi caso WeeChat) con el cliente para mensajería instantánea BitlBee acoplado. De esta forma y mientras no apaguemos o booteemos el router vamos a estar 100% online. Atención: los logs del IRC, especialmente si estamos conectados a varios canales (en mi caso en este momento son 31) pueden ocupar mucho espacio muy rápidamente. Si vamos a correr un cliente IRC en el router recomiendo conectarle una unidad de almacenamiento externo y guardar los logs allí.
c) crear o formar parte de una red Open Mesh o redes inalámbricas malladas, también conocidas como B.A.T.M.A.N.
d) servidores web como uhttp y nginx
e) infinidad de aplicaciones de seguridad como Kismet, aircrack-ng, arpwatch y macchanger entre otros; las posibilidades son ilimitadas! Por ejemplo: supongamos que por X motivo necesitan acceder a una red Wifi determinada pero por supuesto no conocen su pwd ni las direcciones MAC permitidas para conectarse, teóricamente podrían usar un simple router al que le instalan OpenWrt con las aplicaciones necesarias y lo configuran para sniffear el tráfico wireless, buscar contraseñas, obtener direcciones MAC registradas, conectarse a las redes y enviarles a Uds. un correo electrónico avisándoles que se encuentran dentro de dicha red, con los datos necesarios para que Uds. se conecten desde donde se encuentren. Una vez hecho esto lo único que deben hacer es buscar un lugar en donde poder esconder el aparato conectado a la red eléctrica, lo más cercano posible a las redes en las que están interesados y dejar que haga su magia ;-D
(Tom Cruise es un poroto al lado nuestro y como decía el Indio antes de venderse, «el futuro llegó, hace rato«)
f) servidor de impresión, servidor de horario (NTP), etc.
g) al ser una distro diseñada por geeks y para geeks obviamente vamos a poder acceder vía ssh y de hecho debemos hacerlo así al comienzo para instalar la interfaz gráfica y configurarlo: no es hermoso!?
h) posibilidad de crear una cantidad virtualmente ilimitada (sólo limitada por el propio HW) de redes Wifi =)
i) toda la potencia del mejor firewall del mundo, iptables a nuestro servicio tanto desde la consola como desde la interfaz gráfica.
j) aplicaciones como tmux están al alcance la mano, basta hacer un # opkg update && opkg install tmux para que trabajar en consola dentro de nuestro router sea un placer
k) como habrán notado el gestor de paquetes utiliza una sintaxis similar al gestor de Debian GNU/Linux y es porque opkg está basado en el viejo ipkg el cual a su vez tomó a dpkg/apt como referencia. Ojo, no se hagan ilusiones acerca de este gestor de paquetes, no es ni por asomo lo potente o flexible que sus hermanos mayores pero cumple muy bien su cometido.
l) disponemos de varias interfaces Web para que elijamos dependiendo nuestro gusto y preferencias personales. Por mi parte y luego de probarlas todas me quedé con Luci ya que es la más liviana y me permite acceder a una amplia gama de funciones de OpenWrt. Que sea liviana no es un dato menor ya que mi router hogareño es un humilde TP-Link TL-WR2573ND y el espacio flasheable disponible es de sólo 8mb, por lo tanto cuanto menos espacio utilice en trivialidades como una interfaz web cargada y bonita más espacio voy a tener para cargar aplicaciones.
m) entre otras funciones tiene soporte completo de Jumbo Frames y VLANS!
n) otras características incluyen aquellas que traen la mayoría de routers hogareños/SOHO de fábrica como ARP binding, ruteo estático, hostnames, DHCP binding, control de acceso de horarios, posibilidad de usar múltiples DNS para cada red, etc.
o) al ser una distro GNU/Linux vamos a tener acceso completo a los logs del sistema, logs del kernel, demonios que queremos que se ejecuten al inicio, etc., todo igual que con la distro que están usando.
p) incluye simpáticos -y útiles- hacks para hacer que las luces del router respondan a acciones específicas, de esta forma, podemos configurarlas para que titilen de determinada forma dependiendo cómo estemos usando el dispositivo (red cableada, inalámbrica, como router, switch, etc.), cuando accedemos a dispositivos USB conectados al router como un disco duro externo o una impresora, etc.
q) entre otras aplicaciones podemos instalarle gestor de VPN, Nagios, Munin (un Nagios mejorado y Libre), instalar un MTD (Mail Transport Delivery) y convertirlo en un servidor de correo electrónico, instalar mc (Midnight Commander), un servidor Avahi/Bonjour/Zeroconf, si tenemos conectado un HD externo con nuestra colección de música podemos correr el demonio del mpd en el router lo que nos va a permitir conectarlos a él desde cualquier máquina que se conecte al router independientemente que se encuentren en diferentes redes, etc.
r) hay cientos de paquetes más de todo tipo para que hacer prácticamente lo que quieran con su routercito, ni hablar si tienen un aparato cojudo. Como pasa siempre con GNU/Linux el único límite es la imaginación del usuario

En definitiva, OpenWrt es el sueño del pibe hecho realidad =D

Modo de recuperación / FAILSAFE

Es importante destacar que es muy posible que las primeras veces que hayamos instalado este firmware fabuloso nos quedemos fuera del router por configurar algo erroneamente o por borrar o renombrar algo que no deberíamos haber tocado – pero que nuestra naturaleza curiosa nos empuja a hacerlo xD

De hecho el redactor que suscribe esta nota, osea yo, tuvo la gran idea de borrar las interfaces de red para reconfigurarlas quedándose efectivamente fuera del router y sin poder acceder al mismo ya que aunque el sistema embebido estaba funcionando de maravillas no había ninguna interfaz de red habilitada – yeah, soy un genio, mal! BOLUDO!!!

Los desarrolladores de OpenWrt han previsto este tipo de casos y proveen una interfaz para modo de arranque a prueba de errores –failsafe– para que podamos hacer un acceso de emergencia y resetear el sistema.

Es importante tenerlo en cuenta porque con el firmware de OpenWrt es casi seguro que el botón de reset de sus routers no funcione como esperaban, es decir que restablezca la configuración del mismo a la de fábrica. De hecho, el botón sí se usa en el modo failsafe de OpenWrt pero solamente para enviar una señal al equipo en un momento determinado y que podamos acceder al dispositivo nuevamente a través de telnet o ssh.

También les puede pasar de brickear el router si le instalan una imagen que no es la apropiada para el mismo, en ese caso la recuperación del dispositivo es un tanto más complicada en cuanto que el procedimiento involucra abrirlo para acceder al integrado, soldar un dispositivo electrónico al que vamos a alimentar a través de un cable USB conectado a nuestra máquina para luego conectarnos al router vía consola serial, activar un servidor FTP –TFTP– muy primitivo para copiar el firmware correcto, resetear la nueva imagen, etc., nada demasiado complejo aunque si no lo hacemos con cuidado corremos el riesgo de quemar el router.

Screenshots

A continuación les dejo algunas imágenes de la interfaz de shell BusyBox y web Luci:

Hasta aquí la introducción a OpenWrt, más adelante escribiré una guía sucinta de instalación, más que nada las situaciones típicas con que pueden encontrarse sobretodo para que se ahorran las horas de investigación que invertí yo leyendo toneladas de documentación e intercambiando ideas en el IRC hasta dejar andando mi router como lo tengo hoy.