domingo, julio 01, 2007

Fonera sin conexión

Hoy me he dado cuenta de que mi fonera no tenía conexión a internet, así que me he puesto a investigar que pasaba, empecé a probar configuraciones diferentes en el fichero /etc/config/network. Tras varias configuraciones, no recuerdo exactamente cuales, todas infructuosas, perdí el acceso a la fonera, ni ssh, ni pings, ni nada. Entonces intenté arreglarlo pulsando el botón reset de la fonera... no sirvió para nada, lo hice de todas las maneras posibles, dejándolo pulsado mas tiempo, menos tiempo, con la fonera apagada, con ella encendida... todo inútil.

Total que ahora mismo tengo un ladrillo inútil, pero tranquilos, con el famoso cable que entre otras cosas sirve para abrir el ssh, se puede arreglar, si con el consigo una shell del sistema lo arreglo y ya está, si no, reflasheo y sin mas problemas y en el hipotético caso de que no sea capaz de hacer funcionar bien la fonera con openwrt, le pondría dd-wrt y ya está.

Mañana mismo me acercaré a una tienda de electrónica y espero que me vendan el circuito adecuado, si no compraré los componentes e intentaré montarlo yo mismo, si los astros de alinean para que todo esto salga mal, entonces lo comprare por internet o en ebay o en alguna tienda especializada.

[EDIT]

Lo sorprendente es que hasta ahora no habia podido conectarme a la red wifi creada por la fonera, sin embargo ahora he podido hacerlo y tengo acceso a toda mi red, y a internet. Si recuerdo que la configuración que le deje especificaba gateway, dns, ip y netmask. Que yo sepa la ip que le deje era 192.168.0.5 pero esa ip no responde a nada. Bueno el caso es que la fonera esta viva o al menos eso parece.

De todas formas no deja ningun rastro, ni snifando el trafico veo nada de ella, tampoco aparece nada en un traceroute... es invisible, sin embargo puedo asegurar que no estoy conectado a la red wifi de mi router, estoy conectado a la red wifi de mi fonera, red con essid OpenWrt.

En fin, esperare a comprar mañana el cable y a ver que pasa...

Flashear la fonera

Acabo de flashear la fonera, le he puesto openwrt. Las principales opciones que tenía eran dd-wrt y openwrt. Al final he optado por openwrt porque todo es por consola, en cambio, en dd-wrt es mediante interfaz web (aunque supongo que también se podra mediante consola) y en openwrt es consola pura y dura y yo como tengo ese extraño gusto por la consola en vez de por la interfaz gráfica (hasta cierto punto) pues me he ido a por openwrt.

El proceso no es para nada complicado y os debería funcionar bien sin mayores complicaciones, yo lo he hecho siguiendo este tutorial de Mikelevel sacado del foro fonera.info, que os recomiendo visitar si estáis interesados en la fonera.

Bueno voy a ir comentando todo lo que yo he hecho y para ello utilizaré algunas partes del tutorial que os he dicho y otras cosas las cambiaré para que se pueda hacer desde linux, ya que todas las herramientas que utiliza el tutorial son para windows. Las partes del tutorial que yo no he seguido no las voy a poner aquí tampoco, si lo mio no os funciona y/o queréis leer mas ir a tutorial directamente.

Para empezar debemos contar con acceso ssh a la fonera, si no lo tenéis seguir cualquier tutorial, hay muchos en internet. También tenemos que descargar openwrt, la versión que vayamos a instalar, yo utilicé la última estable, podéis hacer de betatesters y probar nuevas versiones en desarrollo, pero yo prefiero no arriesgarme a tener un fonera bricked. Los archivos que hay que descargar son openwrt-atheros-2.6-root.jffs2-64k y openwrt-atheros-2.6-vmlinux.lzma. Además también necesitaremos un servidor tftp.

El servidor tftp que yo he usado ha sido atftpd (apt-get install atftpd). La configuración es sencilla, ejecutamos dpkg-reconfigure atftpd y dejamos todas las opciones por defecto. Creamos el directorio /tftpboot (sudo mkdir /tftpboot) y ponemos en el los dos ficheros que nos hemos descargado antes.

Ahora entramos por ssh a la fonera y ejecutamos lo siguiente (cada comando es una línea, si hay alguno partido en dos es por el ancho de mi blog, no porque el comando sea así):

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

Cuando la fonera se haya reiniciado ejecutamos esto:

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 se reiniciará de nuevo, pero no lo hará completamente y tenemos que entrar al RedBoot, hacemos esto (nota: estos pasos los cuento como los hecho yo):

- Desenchufamos de la corriente la Fonera.
- Enchufamos el cable de red por un extremo a la fonera y por otro al PC
- Configuramos nuestra tarjeta de red con IP 192.168.1.166 (vale cualquiera de 192.168.1.0/24), mascara de subred 255.255.255.0 y sin puerta de enlace.
- Abrimos un terminal, ejecutamos ping 192.168.1.254 y lo dejamos de fondo.
- Abrimos otro terminal y lo dejamos preparado para hacer un telnet a 192.168.1.254 9000, es decir ponemos telnet 192.168.1.254 9000 y lo dejamos ahí no le damos a intro.
- Enchufamos a la corriente la fonera.
- Cuando la fonera devuelva los pings nos conectamos por telnet.

Si ha salido debéis ver el prompt del RedBoot>

Indicamos a la fonera los datos de la red:

RedBoot> ip_address -l 192.168.1.254 -h 192.168.1.xxx

Ahora viene el flasheo, ejecutamos estos comandos, con tranquilidad, esperar a que acaben algunos se toman su tiempo, y mientras se estén ejecutando los comandos no toquéis nada, no pulséis ninguna tecla hasta que no os devuelva el prompt:

RedBoot> fis init
RedBoot> load -r -v -b 0x80040450 openwrt-atheros-2.6-root.jffs2-64k
RedBoot> fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs (OJO : Puede llegar a tardar 20 minutos, en mi caso solo fueron 14)
RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
RedBoot> fis load -l vmlinux.bin.l7
RedBoot> exec

Esperamos unos segundos y desenchufamos/enchufamos la fonera, yo desenchufe unos 20 segundos después de que dejara de responder a los pings.

Ahora nos conectamos por telnet a 192.168.1.1 (telnet 192.168.1.1) y creamos una contraseña para root ejecutando passwd root.

Ya tenemos openwrt en nuestra fonera, ya tenemos un linux totalmente operativo en la fonera, a partir de ahora podéis hacer lo que queráis, yo voy a contaros algunas configuraciones que le he hecho.

La ip de mi router es 192.168.0.1 y mi fonera, antes de ser flasheada, tenía la ip 192.168.0.5, así que cambié esta configuración antes de cortar la conexión telnet, ya que tenemos una shell de root delante así que para ahorrar tiempo, para ello, edité con vi el fichero /etc/config/network, y cambié la ip que tenía puesta (192.168.1.1) a 192.168.0.5.

Después si desenchufé la fonera y la volví a poner en su sitio y conectarla al router (casi todo el proceso lo había hecho con la fonera conectada a la laptop). La encendí de nuevo y efectivamente tenía esa ip y me pude conectar a ella por ssh.

Otra cosa que me paso fue que no tenía wifi, WTF!! sin embargo tras buscar un poco, vi algo sospechoso en el archivo /etc/config/wireless:

# disable radio to prevent an open ap after reflashing:
option disabled 1

Por lo que simplemente edité con vi y cambié el 1 por un 0, reboot y ya tenía wifi la fonera. Todavía no he hecho nada más con ella, os seguiré contando mas cosas según vaya haciéndolas.

Antes de acabar decir dos cosas mas, la primera es que ahora voy a investigar un poco este firmware y luego montaré un entorno de laboratorio similar a lo que mi fonera se encontrará en la red de mi centro tic y haré todo el montaje para comprobar el funcionamiento. La otra cosa es que os recomiendo la lectura de este tutorial de openwrt para la fonera que cuenta desde la instalación hasta la configuración básica y al final tiene un montón de enlaces que parecen útiles. Y también el manual oficial de openwrt.

PD: Mi fonera si que aparecía (y aparece) en los mapas, lo que pasa es que no estaba bien situada, por lo visto había que colocarla a mano y yo pensé que poniendo solo la dirección era suficiente y claro como no la situé en el mapa me aparecía en medio del atlántico. Ahora está todo solucionado.

PD2: Tomar nota de la fecha de ayer, desde entonces mi fonera esta flasheada y mi servidor intenta engañar a fon, vamos a esperar 30 días a ver si fon dice algo.