Instalar DD-WRT en la fonera

De Guifi.net - Wiki Hispano


PASO 1: Acceder a la fonera por SSH

Partimos de una fonera con el firmware de FON 0.7.1 r2.

Entramos en la fonera por web con los siguientes datos:

IP: 169.254.255.1
usuario: root
contraseña: admin


Nos vamos a la opción "Avanzado" y modificamos el Modo a "Modo IP estática". Ponemos una IP que esté dentro del rango de salida a internet del router, configuramos la puerta de enlace con la IP del router. Pondremos como Servidor DNS 88.198.165.155 (si no funciona cambia a este: radius01.fon.com) que pertenece a kolofonium.datenbruch.de, el cual nos redirigirá a un falso servidor de FON que se encargará de abrir el puerto SSH de nuestra fonera. Conectamos la fonera a la red para que se produzca el hack.

Ahora ya podremos acceder a la fonera por SSH:

user@localhost:~$ ssh 169.254.255.1 -l root


Este acceso es de forma temporal, el puerto se vuelve a cerrar si reiniciamos. Como dentro de un rato vamos a necesitar reiniciar lo que vamos a hacer es editar el firewall y descomentar un par de lineas para abrir el puerto:

root@OpenWrt:~# vi /etc/firewall.user

### Open port to WAN
## -- This allows port 22 to be answered by (dropbear on) the router
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
iptables        -A input_rule      -i $WAN -p tcp --dport 22 -j ACCEPT

Renombramos el demonio de SSH para que arranque al reiniciar:

root@OpenWrt:~# mv /etc/init.d/dropbear /etc/init.d/S50dropbear


Editamos el archivo thinclient y comentamos la siguiente linea para evitar que FON nos envíe actualizaciones:

root@OpenWrt:~# vi /bin/thinclient

#. /tmp/.thinclient.sh


PASO 2: Activar Redboot

Redboot es el programa que utilizaremos para cambiar el kernel. El Vasavsky nos envía la fonera con el redboot capado por ethernet, así que lo que haremos es cambiar el kernel por uno con el redboot en plenas facultades.

Para ello nos conectamos por SSH a la fonera y hacemos 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


Una vez reiniciada la fonera volvemos a acceder por SSH y escribimos la configuracion de redboot:

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


Ahora la fonera ya no volverá a arrancar más. Solo tendremos acceso a RedBoot. RedBoot utiliza la IP 192.168.1.254 y el puerto 9000.

Configuraremos nuestra tarjeta de red con una IP del rango 192.168.1.x. Podremos acceder a RedBoot por telnet durante los 10 primeros segundos de arranque de la fonera. Así que lo que haremos es preparar en nuestra máquina el siguiente comando:

user@localhost:~$ telnet 192.168.1.254 9000


Ahora desenchufamos la fonera y la volvemos a enchufar, pulsamos enter para ejecutar telnet. Nos aparecerá la shell de RedBoot:

RedBoot>


PASO 3: Flashear

Ahora ha llegado el momento de instalar DD-WRT. En primer lugar necesitamos tener un servidor tftp en nuestro equipo. Podemos utilizar tftpd-hpa:

user@localhost:~$ apt-get install tftpd-hpa


Lo configuramos editando el archivo /etc/default/tftpd-hpa:

user@localhost:~$ vi /etc/default/tftpd-hpa

#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"


Donde /var/lib/tftpboot es el directorio donde pondremos los archivos que descargaremos desde http://www.dd-wrt.com.

user@localhost:~$ cd /var/lib/tftpboot (si no existe lo creamos)
user@localhost:~$ wget http://www.dd-wrt.com/dd-wrtv2/downloads/beta/FONERA/2007%20-%200803/fonera-firmware.bin
user@localhost:~$ wget http://www.dd-wrt.com/dd-wrtv2/downloads/beta/FONERA/2007%20-%200803/root.fs
user@localhost:~$ wget http://www.dd-wrt.com/dd-wrtv2/downloads/beta/FONERA/2007%20-%200803/vmlinux.bin.l7


Llegados a este punto ya solo queda conectarse al RedBoot de la fonera mediante telnet e indicamos cual es la IP del servidor tftp (en el ejemplo 192.168.1.2):

RedBoot> ip_address -l 192.168.1.254/24 -h 192.168.1.2


Ahora flasheamos ejecutando los siguientes comandos:

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 vmlinux.bin.l7
RedBoot> fis create -f 0xA83D0000 -l 0x00010000 -n nvram
RedBoot> reset


Y ya tenemos funcionando dd-wrt. Podemos acceder por web a la IP 192.168.1.1 a la interfaz con el usuario root y la contraseña admin.

Herramientas personales