sábado, 21 de mayo de 2011

Falshear La fonera con dd-wrt

Bueno estos días algunas acampadas del movimiento #spanishrevolution han tenido problemas con las conexiones wifi, por lo cual eh decidido aportar mi granito de arena al movimiento.

En esta entrada veremos como flashear un router "La fonera" poniendo un firmware DD-WRT.


Requisitos y descargas

Para poder tener una instalación exitosa debemos contar con los siguientes programas y ficheros,
  • Binarios de DD-WRT para la Fonera (usaremos la versión del 19-03-07).
    • fonera-firmware.bin
    • root.fs
    • vmlinux.bin.l7
  • Servidor y cliente de TFTP y demonio Inetd
    • tftp
    • tftpd
    • openbsd-inetd

Instalación del servidor TFTP

En Ubuntu por ejemplo tendríamos que poner,
 sudo apt-get install openbsd-inetd tftp tftpd

Descarga del firmware y configuración de TFTP

Como dijimos anteriormente, instalaremos el Firmware del 19 de marzo de 2007, simplemente porque está comprobado que funciona correctamente. Los ficheros que debemos descargar están aquí. Si no funciona en enlace, se deberá acceder desde la sección Downloads de http://www.dd-wrt.com.
Comprobamos si el fichero inetd.conf es correcto, escribiendo en un terminal
 cat /etc/inetd.conf | grep tftp
La salida de este comando ha de ser,
 tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp

Si la salida es distinta, debemos copiar la línea en dicho fichero.
Ahora para configurar el servidor TFTP debemos comprobar que tenemos señalada como carpeta para compartir ficheros /srv/tftp, (tendremos que crearla si no existe), también hay que iniciar el demonio,


 sudo mkdir /srv/tftp
 sudo /etc/init.d/openbsd-inetd restart

Una vez comprobado que así está especificado (si no estuviera habría que modificarlo y reiniciar el demonio inetd), cargamos los ficheros descargados al directorio donde compartiremos los ficheros (yo los descargué en /home/ubuntu/Desktop),
 sudo cp /home/ubuntu/Desktop/fonera-firmware.bin /srv/tftp
 sudo cp /home/ubuntu/Desktop/root.fs /srv/tftp
 sudo cp /home/ubuntu/Desktop/vmlinux.bin.l7 /srv/tftp

Una vez hecho esto, tenemos todo preparado para empezar a cambiar el Firmware.

Accediendo a la Fonera por SSH

El primer objetivo será lograr tener acceso por SSH a la Fonera para poder instalar RedBoot y así actualizar el firmware. Para ello deberemos cambiar la configuración actual que tiene la Fonera para acceder al (en mi caso un router) al que está conectado (durante la primera parte del proceso debemos tener la fonera conectada al router y debemos cuidar que tenga acceso a internet), le estableceremos una configuración con IP fija, y una DNS un tanto especial, que nos facilitará el acceso a la Fonera por el puerto 22.
Accedemos vía web al menú de configuración de la Fonera http://192.168.10.1, (para ello tenemos que estar conectados a la red MyPlace) el usuario por defecto es root y la contraseña admin. Una vez en el menú, deberemos cambiar la configuración de acceso a Internet del Router, por una de IP fija (Advance -> Internet Connection) con los siguientes datos (podemos variar la dirección IP dependiendo de nuestro caso, lo importante es la DNS),
 IP      192.168.1.2
 Netmask 255.255.255.0
 Gateway 192.168.1.1
 DNS     88.198.165.155

Una vez hecho esto, guardamos la configuración y esperamos a que se reinicie la Fonera (se puede comprobar siguiendo el ritmo de los diodos LED indicadores) y esperamos un rato prudencial (5-10 minutos).
Ahora, si hemos esperado el tiempo adecuado tendremos acceso a la Fonera por SSH, (usuario root y contraseña admin)
 ssh root@192.168.10.1

Una vez dentro deberemos hacer lo siguiente,
 root@OpenWrt:~# cd /tmp
 root@OpenWrt:~# wget http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
 root@OpenWrt:~# mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
 root@OpenWrt:~# reboot

Ahora esperamos a que el router reinicie, y volvemos a acceder por ssh como antes, ahora, al tener acceso escribimos,
 root@OpenWrt:~# cd /tmp
 root@OpenWrt:~# wget http://fonera.info/camicia/out.hex
 root@OpenWrt:~# mtd -e "RedBoot config" write out.hex "RedBoot config"
 root@OpenWrt:~# reboot


Actualizando el Firmware por RedBoot

De momento, la Fonera no reiniciará, es el momento de cargar el Firmware, lo haremos a través de RedBoot. El procedimiento es el siguiente, conectamos la Fonera a nuestra tarjeta de red con el mismo cable que traía la caja. Para conectarlos, configuramos la tarjeta de red como,
 sudo ifconfig eth0 192.168.1.23 netmask 255.255.255.0 up

No ponemos puerta de enlace como vemos (la IP es una IP al azar podemos poner otra), ahora ejecutamos un ping hacia la siguiente dirección,
 ping 192.168.1.254

Apagamos la Fonera para forzar el renicio, cuando nos responda a los pings después de reiniciarla le hacemos telnet,
 telnet 192.168.1.254 9000

Si todo ha ido bien, ya atenemos acceso a Redboot y veremos su prompt, le indicamos dónde tenemos el servidor tftpd
 RedBoot> ip_address -l 192.168.1.254 -h 192.168.1.23

Una vez hecho esto, pasamos al paso decisivo, "flashear" la fonera, hay pasos que pueden tardar bastantes minutos, hay que tener paciencia,
 RedBoot> fis init
 RedBoot> load -r -v -b 0x80041000 root.fs
 RedBoot> fis create -b 0x80041000 -f 0xA8030000 -l 0x002C0000 -e 0x00000000 rootfs  
 RedBoot> load -r -v -b 0x80041000 vmlinux.bin.l7
 RedBoot> fis create -r 0x80041000 -e 0x80041000 -l 0x000E0000 vmlinux.bin.l7
 RedBoot> fis create -f 0xA83D0000 -l 0x00010000 -n nvram
 RedBoot> reset

Ya hemos instalado el Firmware nuevo, ahora deberemos esperar a que se reinicie, esperaremos pacientemente y podremos conectarnos a la red nueva, cuya essid será "dd-wrt".
Para concetar al menú de configuración deberemos acceder vía web a 192.168.1.1 (usuario admin contraseña admin), una vez dentro del menú de configuración de la nueva Fonera, mi configuración (a nivel de red para conectar a Internet) es la siguiente,
 WAN Connection Type                # Es la configuración que tendrá para conectarse al router base
 Connection Type:  Static IP
 WAN IP Address:   192.168.1.2
 Subnet Mask:      255.255.255.0
 Gateway:          192.168.1.1
 Static DNS 1:     Las DNS de nuestro ISP
 Router IP
 Local IP Address: 192.168.10.1            # Para evitar conflicto con la puerta de enlace del router
 Subnet Mask:      255.255.255.0
Lo demás puede dejarse por defecto, o configurarlo a gusto.

Una vez tenemos flasheado el router solo tenemos que configurarlo para repetir la señal que queramos, lo cual explica perfectamente este manual:

http://www.zero13wireless.net/foro/showthread.php?5694-Configuracion-DD-WRT-en-modo-Repetidor-Universal-en-espanol-paso-a-paso

Especialmente dedicado a nuestros amigos de #acampadamurcia.

No hay comentarios:

Publicar un comentario