[SeWi] FON nos ha regalado tres Linksys WRT54Gl

Jesús García Crespo (aka Sevein) correo en sevein.com
Jue Ene 26 13:07:29 CET 2006


El Wed, 25 Jan 2006 15:23:35 +0100
David Bosque <song en woodwar.com> escribió:

> Wenas,
> 
> Hombre, a mi me asalta una duda... porque no sé cómo funciona el 
> firmware. Cuando un usuario se conecta a un AP de FON e intenta
> acceder a internet, se le presenta una página en la que autenticarse.
> La duda es la siguiente: si el usuario no intenta acceder a internet,
> sino a un rango de ips del propio nodo, o a uno que hay que enrutar,
> se le permite o se le pregunta el password también? Si la
> autentificación es solo para acceder a internet, lo cual sería lo
> normal, me parece que estos APs de FON pueden venir super bien para
> expandir la red. Como dice Pablo, ojalá FON nos pusiera los aps de
> clientes y nosotros nos dedicáramos a enlazarlos, yo lo firmaba ya
> mismo ;-).

El firm que trae es un OpenWRT con sus propios cambios. Este firm es
que es la leche, no sé si tú lo has llegado a probar, pero trae hasta
su propio sistema de paquetes: ipkg, ala Debian. Voy a hablar de los
detalles y así podemos planear nuestras historias en base a lo que hay
y lo que no:

El router cuando lo sacas de la caja no ves más diferencias que una
pegatina de FON en amarillo vistoso. Si lo conectas, hay un servidor
DHCP (dnsmasq) sirviendo direcciones en todas las interfaces excepto a
vlan1 (dnsmasq -I vlan1) desde 192.168.10.100 hasta 192.168.10.152 en
255.255.255.0. En un principio no asigna automáticamente un gateway o
servidores de nombres.

También hay un httpd con una web de administración basada en el webif
de OpenWRT, el cliente DHCP de busybox (udhcpc) escuchando en vlan1 (el
puerto Ethernet que pone Internet).

Y telnetd y sshd. siguiendo la misma estrategia que OpenWRT: el router
en principio no tiene contraseña para root y el servidor SSH (dropbear)
no te deja hacer login de ninguna de las maneras. Pero puedes entrar
por telnet y no tienes que hacer login, entras del tirón. Una vez
dentro, si haces un "passwd" para establecer una contraseña, el
servicio de telnet queda desactivado para los rectos y el ssh daemon es
ejecutado y lo será al arranque en el futuro.

-------------------------------------------------------------------
jesus en jesus ~ $ telnet 192.168.10.1

 === IMPORTANT ============================
  Use 'passwd' to set your login password
  this will disable telnet and enable SSH
 ------------------------------------------

BusyBox v1.00 (2005.11.16-12:19+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

 _______  _______  _______ 
|   ____||       ||   _   |
|   ____||   -   ||  | |  |
|   |    |_______||__| |__|
|___|SACALE JUGO A TU Wi-Fi

 FON Firmware (Beta 0.5.0) -------------------------
  * 
  * Based on OpenWRT - http://openwrt.org
  * Powered by Kynetia - http://www.kynetia.com
 ---------------------------------------------------
root en fon:/# 
-------------------------------------------------------------------

De todas formas, este paso también puedes hacerlo a traves del
administrador web, para los que no conocen tan bien este asunto. Entras
y aparece un "Registro Inicial FON" donde lo primero que te solicitan
es registrarte en FON.es a través de un simple formulario. Pero puedes
presionar en "Registrarme luego" para saltarte este paso y hacerlo
luego desde el menú de opciones del sitio web. Además que necesita
acceder a fon.es.

El menú y la web en sí, excepto por los colores utilizados (más al
estilo FON), es clavado al webif de OpenWRT. Cuando vas a acceder a
alguna sección, es solicitada una contraseña para el usuario
administrador (root).

La organización de las interfaces de red en este bicho es la misma que
la que conocemos tradicionalmente y la que establece por defecto
OpenWRT: eth0 es la interfaz de red Ethernet (el switch de cinco
puertos) y eth1 es para el dispositivo de red inalámbrico. Gracias a
802.1Q VLAN, establecen un switch de cuatro puerto a partir del de
cinco y le llaman vlan0, y el quinto puerto lo independizan y lo llaman
vlan1, como ya hemos visto en otras ocasiones. Hacen bridge, br0, entre
eth1 y vlan0; y a vlan1 lo dejan solito. La interfaz vlan0 se elimina del bridge cuando el chillispot se pone en funcionamiento, una vez que el administrador del router se identifca contra fon.es.

root en fon:/etc# ifconfig | grep HWaddr
br0       Link encap:Ethernet  HWaddr 00:14:BF:D2:5E:12  
eth0      Link encap:Ethernet  HWaddr 00:14:BF:D2:5E:12  
eth1      Link encap:Ethernet  HWaddr 00:14:BF:D2:5E:14  
vlan0     Link encap:Ethernet  HWaddr 00:14:BF:D2:5E:12  
vlan1     Link encap:Ethernet  HWaddr 00:14:BF:D2:5E:12  

root en fon:/etc# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.0014bfd25e12       no              vlan0
                                                        eth1

Un detalle, el boot_wait viene desactivado por defecto. Pero en el
propio administrador web puedes activarlo, que no es más que un "nvram
set boot_wait=on; nvram commit". Tambíen merece meción el hecho de que
haya una sección en el administrador web en la que puedes actualizar el
firmware.

Bueno, vamos al iptables:

root en fon:/etc# iptables -t filter -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere	state
RELATED,ESTABLISHED REJECT     all  --  anywhere
anywhere	reject-with icmp-port-unreachable DROP       all  --
anywhere             anywhere ACCEPT     tcp  --  anywhere
anywhere	tcp dpt:3990 flags:FIN,SYN,RST,ACK/SYN ACCEPT     all
--  anywhere             anywhere ACCEPT     all  --
anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

root en fon:/etc# iptables -t nat -L   
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         


Acabo de intentar registrarme en FON.es, tengo nombre de usuario y
contraseña. Sin embargo no consigo hacer login desde el router. Pero
vamos, se supone que cuando hago login se pone en marcha el último
servicio, el ChilliSpot. Os pasteo el /etc/chilli.conf, que es bastante
clarificador, :):

##############################################################################
#
# Fon ChilliSpot configuration file
# Powered by Kynetia (www.kynetia.com)
#
##############################################################################
radiusserver1 acceso.fon.com
radiusserver2 acceso.fon.com
radiussecret fonkynetia 
dhcpif eth1
uamserver https://acceso.fon.com/cgi-bin/hotspotlogin.cgi
uamsecret fonkynetia 
uamallowed www.fon.es,www.kynetia.com,acceso.fon.com,www.fon.com
uamanydns

Otro detalle importante es el script que lanza el ChilliSpot. Solo
comienza a funcionar cuando el router ya te ha validado tu usuario
contra FON.es:

root en OpenWrt:/etc/init.d# cat S60chilli  
#!/bin/sh

RUN_D=/var/run
PID_F=$RUN_D/chilli.pid

case $1 in
 start)
  /usr/sbin/brctl delif br0 eth1
  /sbin/insmod tun >/dev/null 2>&1
  [ -d $RUN_D ] || mkdir -p $RUN_D
  /usr/sbin/chilli
  ;;
 stop)
  [ -f $PID_F ] && kill $(cat $PID_F) >/dev/null 2>&1
  ;;
 *)
  echo "usage: $0 (start|stop)"
  exit 1
esac

exit $?

Por alguna razón, y ahora no caigo, borra del bridge br0 a eth1,
incomunicando la wireless y los puertos de vlan0. El chilli cuando se
ejecuta, añade una interfaz tun para su funcionamiento enterno, algo
que se puede entender mejor si te paseas por http://www.chillispot.org/ y se lee algo sobre el funcionamiento de este sistema:

tun0      Link encap:UNSPEC  HWaddr 00-00-00...
          inet addr:192.168.182.1  P-t-P:192.168.182.1 Mask:255.255.255.0
          UP POINTOPOINT RUNNING  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


David, ahora creo que ya puedes más o menos saber como trabaja este firmware. En principio estos bichos nos dan toda la flexibilidad del mundo pues entras como root y se pueden hacer los ajustes necesarios, que no son tantos. Como volver a levantar el bridge, o cosas así.

Otra cosita, el ipkg lo dejan tal cual. Se pueden descargar todos los paquetes tal y como se haría en un OpenWRT normal... tcpdump, nmap, kismet, pppdump, vtun, wpa-supplicant, openvpn, ppp... todo, todo.

Hasta podríamos plantearnos hacer una revisión del firmware de FON para comunidades wireless, igual esta gente nos contratan, :-). Ya me contáis vuestra opinión sobre todo esto.

-- 
Jesús García Crespo (aka Sevein)
http://www.sevein.com
correo en sevein.com

GnuPG key ID: E2DB17E8 (pgp.escomposlinux.org)



Más información sobre la lista de distribución Lista