Flasheo en Linksys: Cómo, cuando y dónde

Gabolonte Blasfemus

Cisco hace un tiempo tuvo una muy "mala" idea (para ellos) con su línea de routers soho Linksys. Cuando lanzó la primer versión de su ya famoso modelo WRT54G, lo hizo con un firmware basado en Linux, el cual, de acuerdo a la GPL, lo obligó a liberar su código fuente al público cuando esto se supo, y como resultado, en estos años muchos programadores le echaron mano al código fuente original. Gracias a eso, ahora tenemos opciones bastante interesantes, versiones modificadas y mejoradas del firmware original que amplían las capacidades de este simple "routercito" a límites insospechados.

A partir de la versión 5, el modelo WRT54G ya no viene con este firmware basado en Linux; en su lugar incorpora uno de la compañía VxWorks. optimizado para consumir menos RAM y ocupar menos memoria flash, el cual le permitió a Cisco reducir costos en esta línea. Pero afortunadamente no fue el fin de este interesante experimento, ya que el WRT54G original continúa su camino en lo que ahora se conoce como el modelo WRT54GL, el cual sigue viniendo con Linux en su interior y permite que lo modifiquemos con otros firmware’s alternativos.

Opciones de firmware

Hace no tanto, en un impulso me compré uno de estos WRT54GL, curioso por experimentar y ver qué se podía llegar a hacer, y la verdad que no me arrepentí. Cuando al poco tiempo me cansé del firmware original de Cisco, y estaba listo para perder mi garantía (que es lo que sucede si le cargamos al router otro firmware que no sea el provisto por Linksys), comencé a revisar qué opciones tenía. Algunos desarrollos se quedaron muertos y ya no representaban una opción para mi modelo nuevo. Las opciones que encontré considerables fueron las siguientes:

  1. Sveasoft: Esta compañía fue una de las primeras en tomar el código fuente original de Linksys y mejorarlo. El resultado fue un firmware llamado Alchemy, que, hasta donde leí por ahí, era bastante bueno para su tiempo, aunque ahora ya se quedó obsoleto. Esta empresa ahora ofrece una nueva y mejorada versión conocida como Talisman, que además también tiene una versión con menos funciones, capaz de correr en los nuevos WRT54G con firmware de VxWorks. Pero, lamentablemente, todo se encuentra dentro de un halo de incertidumbre. El punto es que, como con toda obra bajo licencia GPL, Sveasoft está obligada a liberar al público su código fuente, cosa que no sólo no está haciendo, sino que además está cobrando U$S 20 anuales en concepto de soporte, que además son la única forma de obtener una descarga directa de los binarios de dicho firmware desde su sitio oficial; mientras que al parecer, sigue negando la liberación del código fuente, aún a sus clientes. Un personaje anónimo que se autodenomina The Individual comenzó a publicar dichos binarios en diversos sitios web y en redes P2P, y ahí mismo se desató una pelea entre esta compañía y este "individuo". Según este último, el mismo presidente de Sveasoft lo amenazó en diversos emails, que esta persona se encargó de publicar, y además la compañía aparentemente se está dedicando a entregarle a cada uno de sus clientes el firmware con un ligero cambio en los binarios, una "firma" como se le dice, para poder rastrear cuáles de sus clientes son los que filtran los binarios. Además también se dice que el firmware se comunicaría con los servidores de Sveasoft para que cada router que lo corra pueda ser localizado, y que cada cliente obtiene una versión del firmware "atada" a la MAC address de su router, de forma que no pueda correr en ningún otro. Desde ya que todo esto es absurdo y malévolo, puesto que la licencia GPL obliga a esta empresa, como dije antes, a liberar al menos los fuentes de su producto, ya que está basado en otro software que estaba bajo esta misma licencia. Sveasoft por su parte acusa a este individuo al mejor estilo de los políticos, diciendo que es una "campaña de desprestigio" :mgreen:. La realidad es que hoy pueden encontrarse en una de las tantas páginas de The Individual, tanto esta historia junto con los supuestos emails amenazantes de Sveasoft, como también versiones crackeadas y desprotegidas de su último firmware Talisman, rebautizado como Freeman, en alusión a que se le quitaron todas las protecciones del producto original.
  2. OpenWrt: Este proyecto nació de cero, es un esfuerzo por arrancar desde el comienzo con lo que debería ser el firmware Linux definitivo de un router. Por esto, por tener un diseño modular, el firmware básicamente es un Linux con un acceso telnet/ssh y una funcionalidad básica de router, ya que para todo lo demás existen plugins (programas) que se pueden descargar de una forma muy similar a la que descargamos e instalamos aplicaciones en distribuciones Linux para PC modernas como Ubuntu. De esta forma, se maximiza el aprovechamiento del espacio en la memoria flash al descargar e instalar sólo los módulos que requerimos. La contra es que tiene una interface web muy rústica y casi todo hay que hacerlo desde la línea de comandos "a pelo", como le suelen decir, así que hay que saberse muy bien el uso de ésta en Linux o Unix si queremos embarcarnos con este firmware y salir victoriosos sin demasiado trabajo. Para pasarse semanas aprendiendo es ideal, si no te pudrís, claro. Según The Individual, Sveasoft ahora estaría utilizando, ilegalmente y sin consentimiento, el kernel de OpenWrt en su último firmware.
  3. DD-WRT: Fue creado originalmente en respuesta directa a la decisión de Sveasoft de no liberar gratuitamente su software. Tomaron como base a una versión de Alchemy, pero al día de hoy es un proyecto totalmente nuevo, que agrega innumerables funciones sin precedentes. Basado actualmente en el motor de OpenWrt, desde DD-WRT es posible tener desde un servidor VPN hasta un shell Linux en SSH. Todas las funciones vienen integradas, aunque existen distintos "sabores", de acuerdo a si lo vamos a usar para acceso VPN, VoIP, o general. Es totalmente accesible y configurable desde la interface web, y, por supuesto, este proyecto sí es totalmente libre, al igual que OpenWrt.
  4. HyperWRT Thibor: El proyecto que más trata de apegarse al diseño original del firmware de Linksys, añadiendo funciones, aunque no tantas como los otros.

Qué podría elegir? Ciertamente no me quería meter en el enredo de Sveasoft y su software bloqueado (y encima pagando), ni mucho menos en versiones supuestamente desbloqueadas de este. HyperWRT Thibor es el que menos chiches tiene, y con OpenWrt, después de leer bastante en su sitio oficial, me hizo darme cuenta que me iba a tomar semanas hacer lo que ya podía hacer en segundos con el firmware estándar de Linksys, así que para mi no tenía mucho sentido (más que nada porque, aunque me gusta aprender, necesitaba que al menos el router quede andando esa noche para poder conectarme ;)). Así que la opción lógica fue DD-WRT.

Las posibilidades de DD-WRT

DD-WRT presenta una interface web completísima y mejorada, incluso más agradable estéticamente, hasta soporta temas de color!

Yo me descargué la versión vpn, que incluye un servidor OpenVPN, aunque de momento no lo utilizo. Sí utilizo el servidor VPN por PPTP que también incorpora, aunque este está disponible también en las otras versiones. Imaginen que un routercito de U$S 100 nos de acceso VPN a la red de nuestra oficina u hogar… yo lo uso con mi Palm T|X y de esta forma puedo entrar de una forma relativamente segura desde cualquier red Wi-Fi y, por ejemplo, controlar vía VNC mis computadoras.

Pero existen muchas más cosas que podemos hacer con este firmware. Podemos por ejemplo conectarlo como cliente a otra red VPN, y de esta forma conectar toda nuestra red local a la intranet de otra empresa u oficina. Tampoco debemos preocuparnos por localizar a nuestro router por su IP, ya que DD-WRT incorpora los clientes para DNS dinámico más conocidos, entre ellos no-ip. Y soy injusto, porque hasta ahora me olvidé de mencionar que también es posible armar VLAN’s con los escasos 4 puertos ethernet que incorpora un router Linksys. Por cierto, yo sigo mencionando al Linksys, pero en realidad estos firmware’s hoy por hoy son compatibles con decenas de modelos de routers de distintas marcas, ya que la mayoría están basados en chips de Broadcom. Existen de hecho routers mucho más poderosos que los de Linksys, que con un firmware como este son capaces de liberar todo su potencial.

Pero posiblemente una de las opciones más interesantes es la que hereda de OpenWrt: La posibilidad de ejecutar programas hechos para este último.

Ejecutando programas en DD-WRT

Para hacer esto debemos habilitar el acceso telnet y/o SSH en Administration/Services e ingresar con un cliente como Putty en Windows, por ejemplo.

Desde la terminal podremos ejecutar algunos comandos y hacer chequeos básicos de la red. Pero si queremos poder descargar y ejecutar algunas aplicaciones en el WRT54GL, vamos a tener un problema, ya que la memoria flash donde se halla la imagen del firmware no es re-escribible por este mismo. Para permitir la escritura de datos en sistemas Linux embebidos, existe un sistema de archivos llamado JFFS (Journalling Flash File System) el cual está optimizado para realizar la menor cantidad de escrituras posibles en un mismo sector, debido a que las memorias flash tienen una cantidad de sobre-escrituras no demasiado alta.

Para encontrar un lugar donde guardar los programas que vamos a descargar tendremos que elegir alguna de las siguientes opciones:

  1. Habilitar JFFS para que escriba en el diminuto espacio disponible que le queda a la memoria flash del router, creando una partición JFFS en dicha zona.
  2. Abrir nuestro Linksys y hacer la peligrosa cirugía de agregarle un lector de tarjetas SD.
  3. Utilizar un recurso SMB disponible en alguna computadora de nuestra red para que sirva de JFFS virtual.

Yo, por practicidad, elegí la última. Seguí las instrucciones y configuré a mi imagen de DD-WRT para que, al arrancar, levante automáticamente un script desde un recurso SMB, el cual monta a otra carpeta compartida para ser usada por el sistema de la misma forma que una partición JFFS. Básicamente primero debemos crear ambas carpetas compartidas en una pc, no importa si corre Windows o Linux, y luego configurar en Administration/Management/Samba FS Automount, a través de la interface web del router, lo siguiente:

Cabe aclarar que estoy describiendo todos los menúes en inglés porque lo tengo así por comodidad, pero DD-WRT soporta varios idiomas para su interface web, entre ellos el español.

También debemos habilitar JFFS2:

En la primer imagen que vimos, lo que hace esta configuración es levantar del recurso compartido share, que se encuentra en el host machine, dentro mi red local, el script startup.sh, y para ello debe utilizar un usuario y una contraseña, ya que el recurso compartido está habilitado sólo para ese usuario. En startup.sh, podemos tener un script como el siguiente:

#!/bin/sh<br />umount /jffs<br />smbmount //machine/jffs /jffs -o username=user,password=pass

Este script lo que hace propiamente es cargar el recurso jffs del equipo machine para ser usado como una unidad JFFS por parte del router.

Una vez hecho todo esto y habiendo reiniciado, todo debería funcionar, y entonces, tendríamos que poder acceder a nuestro recurso llamado jffs, que no es más en un punto de montaje a un recurso SMB:

Ahora estamos listos para descargar e instalar programas. La única desventaja de este sistema es que para que el router monte el recurso al iniciar es necesario, evidentemente, que la computadora con los recursos SMB esté levantada con anteriodidad.

Ahora vamos a instalar algún programa. De la misma forma que en Ubuntu tenemos la aplicación de consola apt-get para descargar e instalar automáticamente aplicaciones desde determinados repositorios, en OpenWrt y DD-WRT tenemos al programa ipkg.

Por ejemplo, para actualizar la lista de programas de los repositorios debemos ingresar ipkg update:

Y para instalar un programa ingresamos:

ipkg -d root install programa

-d es la opción para indicarle en dónde vamos a instalar el programa. Las opciones son:

  • ram (/tmp), al reiniciar el router se pierde el programa.
  • root (la partición flash en /jffs, o en nuestro caso, el recurso SMB montado bajo ese nombre)
  • mmc (/mmc, o sea una SD card si realizamos la modificación)
  • smbfs (/tmp/smbshare, un recurso SMB directo, sin montar como /jffs)

Ojo que no nos puede resultar todo tan fácil a la primera, es mejor leerse entera la página sobre ipkg en el wiki de DD-WRT, porque es posible que debamos correr algunos comandos más antes de tenerlo en condiciones.

Una vez resueltos los problemas, podemos instalar por ejemplo, bwm, un simple monitor de ancho de banda que muestra información en tiempo real desde la consola:

Realmente un firmware como DD-WRT o OpenWrt son dignos de explorar y conocer. Por ejemplo, es posible instalar versiones adaptadas de Kismet, el conocido soft de war-driving para Linux, y obtener información de las redes Wi-Fi vecinas, o redireccionar todo el tráfico http a un proxy transparente basado en Squid. También tenemos una aplicación para Windows llamada RFlow, la cual levanta información del tráfico enviada por el router, y además de mostrarnos de esta manera estadísticas básicas sobre el tráfico y las conexiones, es también capaz de subir la información detallada del tráfico a un servidor MySQL, para luego ser consultada de la manera que más nos guste.

Desde ya que nada de esto está exento de riesgos, y siempre cabe la posibilidad de que un mal flasheo brickifique (convierta en un ladrillo) nuestro router. Existen algunos métodos de recuperación, pero nunca se sabe. De hecho al realizar el flasheo a DD-WRT me sucedió, como a otros que leí por ahí, que no arrancaba más, y tuve que hacer un hard reset para solucionarlo; el cual, manteniendo presionado el botón de reset durante 30 segundos, borra toda la configuración almacenada en la NVRAM.

Como ven, son interesantes las cosas que podemos hacer con uno de estos aparatejos. Sólo hay que animarse.


3 Responses to “Flasheo en Linksys: Cómo, cuando y dónde”

  • GA despachó:

    Loco si esto no te lo publican por lo menos en dos partes en una revista especializada como Power PC o la otra (no me acuerdo el nombre, esa de seguridad y redes) son unos nabos.

    Excelente. Y hasta lo entiendo yo que de routers y esas cosas casi no se nada.

    Muy bueno loco.


    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows XP
  • Geekotic · Tomato: La nueva novedad para routers despachó:

    [...] un tiempo vimos por acá las opciones existentes a la hora de ampliar la funcionalidad de nuestro router Linksys o similar mediante diversos firmwares basados en Linux. Ahora existe un nuevo jugador en esta [...]


    Usando WordPress WordPress 2.2.3
  • Navegación segura desde Android en redes Wi-Fi públicas | Geekotic despachó:

    [...] lo demuestra. Levantando un servidor SSH en nuestra casa (que incluso puede correr desde nuestro router inalámbrico usando una ROM alternativa) podemos luego conectarnos desde Android y usar un túnel TCP para navegar de manera segura. Para [...]


    Usando WordPress WordPress 3.5.1