Bueno. Vamos a terminar con esto que dejamos a medias hace un par de días que no me gusta dejar las cosas incompletas. Haciendo un breve repaso de la situación, si lo que quieres es una fonera pero más controladita no sigas leyendo y quédate donde lo dejamos en el anterior texto. Si prefieres jugar con un router inalámbrico más serio acompáñame en los siguientes párrafos.
Empezamos por los preliminares. Vamos a necesitar un servidor tftp, una especie de FTP sencillote que suele usarse como sistema de actualización en dispositivos con pocos recursos como este. En Linux puedes usar fácilmente el tftpd y en Debian o distribuciones derivadas (Ubuntu, Kubuntu, etc.) es tan fácil como instalar los paquetes apropiados (sudo apt-get install tftp tftpd xinetd
) y crear un fichero de configuración llamado tftp
dentro del directorio /etc/xinet.d
con el siguiente contenido:
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}
Ahora debemos de crear el directorio que hemos indicado como raíz de nuestro servidor tftp (sudo mkdir /tftpboot
), y cambiar sus permisos y propietario (sudo chmod -R 777 /tftpboot; sudo chown -R nobody /tftpboot
). Dentro de ese directorio dejaremos los dos ficheros que nos harán falta para sustituir el firmware de la fonera que son openwrt-atheros-2.6-vmlinux.lzma y openwrt-atheros-2.6-root.squashfs. Muy importante: hay que dejarlos «a pelo» en el mismo directorio ya que el tftp no reconocerá ninguna estructura jerárquica. Por último en cuanto a este paso, reiniciamos el servicio xinetd que es el que da soporte a nuestro tftp (sudo /etc/init.d/xinetd restart
) y volvemos con la fonera.
Lo primero que necesitamos es instalar Redboot. El procedimiento a seguir, en dos pasos y con un reinicio de por medio, puede verse en los dos siguientes pantallazos de mi terminal:
Para facilitar los «corta y pega» los comandos son estos:
cd /tmp
wget http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
reboot
Después del reinicio nos conectamos de nuevo y ejecutamos la segunda parte:
cd /tmp
wget http://fonera.info/camicia/out.hex
mtd -e «RedBoot config» write out.hex «RedBoot config»
reboot
Después de esto nuestra fonera arrancará con Redboot y con la dirección IP 192.168.1.254. El acceso a Redboot solamente puede hacerse durante los primeros segundos una vez que el sistema arranque con lo cual es importante que estemos atentos (aunque, si nos despistamos, no pasa nada: apagamos la fonera y volvemos a intentarlo). El acceso a Redboot ha de hacerse por telnet y a través del puerto 9000.
El proceso completo, desde la conexión a Redboot hasta el reset final puede verse en el siguiente pantallazo:
Igualmente, los comandos y unas aclaraciones a los mismos:
ip_address -l 192.168.1.254 -h 192.168.1.5
load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
fis init
fis create -e 0x80041000 -r 0x80041000 vmlinux.bin.l7
fis free
load -r -b %{FREEMEMLO} openwrt-atheros-2.6-root.squashfs
fis create -l 0x6f0000 rootfs
reset
En la primera línea es en la que definimos la conexión con el servidor tftp. La primera IP que aparece es la de nuestra fonera y la segunda la de la máquina que aloja al servidor. El otro comando al que hay que prestar atención es el que aparece en la línea 7. Es el momento en que decimos la dirección de memoria donde debe de ubicar la raíz del sistema de ficheros. La dirección hexadecimal que ahí aparece no es arbitraria: es el resultado de restar las dos direcciones que nos devuelve como resultado el comando de la línea 5 (fis free
). En mi caso y (en casi todos los ejemplos que he visto en Internet) estos valores son 0xA80F0000 y 0xA87E0000 y por tanto el resultado es el 0x6f0000 que aparece en el comando de la línea 7. Poned atención por si acaso y, si lo necesitáis, ajustad el cálculo vosotros mismos.
Una última advertencia: algunos de los comandos anteriores se demoran bastante (más de 15 minutos en algunos casos). No os impacientéis y no rompáis el proceso ni apaguéis la alimentación de la fonera en el transcurso de estas esperas.
El primer arranque de OpenWrt se hace con el wifi deshabilitado y asignando la dirección 192.168.1.1 a la ethernet de la fonera. Esto posiblemente entrará en conflicto con nuestro router si tenemos una instalación corriente, así que este primer arranque conviene hacerlo con la fonera conectada directamente por cable con nuestro ordenador el cual habremos configurado manualmente con una IP adecuada. La primera conexión deberemos de hacerla por telnet y una vez que asignemos una contraseña al usuario root (con el comando passwd
) el acceso por telnet se deshabilitará y las conexiones subsiguientes podremos hacerlas ya por ssh como está mandado:
Y listo. Nuestro nuevo router ya está disponible. Ahora toca configurarlo y para eso hay muy buenos recursos en la red. Yo sólo os voy a ayudar a dar los primeros pasos para que los menos habituados a estas lides no se frustren nada más empezar ¿de acuerdo?
Lo primero que necesitamos es reconfigurar el interface ethernet. Para ello editamos con vi el fichero /etc/config/network
y allí modificamos la opción correspondiente a la dirección IP y completamos la configuración al menos indicando el router y el dns que queremos que use. El resultado final de este fichero debe de quedar más o menos así:
# Copyright (C) 2006 OpenWrt.org
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0
config interface lan
option ifname eth0
option type bridge
option proto static
option ipaddr 192.168.1.4
option netmask 255.255.255.0
option gateway 192.168.1.1
option dns 192.168.1.1
Salvamos los cambios y reiniciamos la red (/etc/init.d/network restart
). Después de esto perderemos la conexión de la sesión de ssh (le hemos cambiado la dirección IP al dispositivo, recordad) pero ya podremos integrarlo directamente a nuestra red y en la próxima conexión que hagamos tendrá acceso a Internet, lo cual nos resulta imprescindible para el siguiente paso: instalarle una interfaz web para su gestión.
OpenWrt usa un sistema de gestión de paquetes denominado ipkg que en líneas generales resulta muy similar a nuestro familiar apt-get pero que es mucho más ligero y, por tanto muy adecuado para este tipo de dispositivos. Para actualizar los paquetes del sistema, por ejemplo, ejecutamos ipkg update
y a continuación ipkg upgrade
. Os suena mucho ¿verdad?
root@OpenWrt:~# ipkg update
Downloading http://downloads.openwrt.org/kamikaze/7.09/atheros-2.6/packages/Packages
Updated list of available packages in /usr/lib/ipkg/lists/release
Downloading http://downloads.openwrt.org/kamikaze/packages/mips/Packages
Updated list of available packages in /usr/lib/ipkg/lists/packages
Done.
root@OpenWrt:~# ipkg upgrade
Nothing to be done
Done.
root@OpenWrt:~#
Para instalar X-Wrt, que es la interfaz web de gestión que usa OpenWrt, necesitamos editar el archivo /etc/ipkg.conf
y añadirle la siguiente línea:
src X-Wrt http://downloads.x-wrt.org/xwrt/kamikaze/7.09/atheros-2.6/packages
A continuación volvemos a actualizar la base de datos de paquetes (ipkg update
) e instalamos el paquete webif (ipkg install webif
):
Ahora, si ya estamos un poco aburridos de la línea de comandos, podemos continuar a través de esta interfaz web escribiendo en nuestro navegador la dirección que le hemos asignado al dispositivo y usando como usuario de acceso root y la contraseña que le hayamos puesto al mismo. Echadle un vistazo y ya veréis que diferencia en cuanto a posibilidades con respecto a lo que teníamos originalmente…
Sólo os acompaño en una cosa más y ya os dejo solos. Hasta ahora tenemos un router wifi… pero sin wifi ya que este sigue desactivado. Para arreglar esto entramos en Network, seleccionamos Wireless, marcamos la opción de Radio en ON, modificamos, si así lo queremos, el ESSID que trae por defecto, salvamos los cambios y, que no se nos olvide, los aplicamos hasta que la opción de «review changes» esté vacía (esto puede precisar más de una aplicación de cambios). En unos segundos nuestros dispositivos wifi detectarán la nueva señal que, por el momento, está totalmente abierta y sin cifrado alguno.
Para activar el cifrado, en la misma página donde estamos hay un selector marcado como Encription Type que tiene seleccionada la opción de Disabled. Elegimos, por ejemplo, WPA2 (PSK), cumplimentamos la clave que usará el cifrado en el casillero WPA PSK que nos aparece tras haber hecho la elección y se nos solicita que elijamos entre dos paquetes diferentes para su instalación: uno que sólo sirve para PSK y PSK2 llamado HostAPD-Mini y otro que incluye también la opción de autenticación mediante un servidor RADIUS (HostAPD). Elegimos el que creamos conveniente (yo he escogido el segundo porque la autenticación mediante RADIUS es una de las cosas con las que me apetece jugar) pulsando sobre el botón adecuado y listo.
No os asustéis por el final del proceso que concluye mostrando en el navegador el fichero .sh que ha ejecutado en el dispositivo. Pulsar la flecha atrás de vuestro navegador y volveréis a la página de configuración de la interfaz inalámbrica del OpenWrt. Si ahora pulsamos F5 veremos que tenemos cambios por revisar. Los aplicamos y con esto nuestra conexión inalámbrica ya estará lista para ser usada de forma segura.
Y ahora ya si que os dejo que sigáis jugando solos 😉
Toda la documentación que he utilizado y algunos extras adicionales están en el tag fonera de mi del.icio.us. Hay cosas realmente interesantes. Echadles un vistazo si queréis aprender un poquito más o explorar otras posibilidades.