Table of Contents

A propos de FON

FON est une société commerciale dont le concept est d’inciter le partage de la connection wifi et ainsi former une soi disant communauté. Celui qui partage peut être linus ou bill.

Le linus partage sa bande passante gratuitement aux autres linus de FON en échange de l’accès gratuit au hotspots des autres linus. Il faut savoir que FON revend la bande passante des linus à tous les autres qui ne font pas parti de la “communauté”, et exploite ainsi les linus dans leur dos grâce à une infrastructure peu chère car gratuite.

Les bills eux revendent la connection internet et ne touchent que 50% des revenus. De plus FON garde les gains jusqu’à ce qu’ils atteignent 30 euros.

Il faut signaler la solution concurrente: http://worldspot.net qui permet de partager gratuitement sa bande passante à n’importe qui tout en authentifiant par email les invités. Worldspot utilise, comme FON, Chillispot le logiciel de portail captif compatible sur les routeurs linux. Si le fournisseur de hotspot souhaite revendre du temps de connection, il touche 75% des revenus.

Les routeurs FON

Les routeurs fon (aussi appelés Fonera) sont des petits boitiers contenant une carte wifi Atheros, un port Ethernet, et un OpenWRT.

J’ai décidé de regarder un peu comment ces derniers étaient configurés.

Première mise en route:

On branche, le tout .. le Fonera obtient une adresse IP via DHCP sur le lien filaire, par contre on ne peut y accéder que via l’interface WIFI. Dans un second temps, dès que l’on essaye de surfer on abouti sur une page de login. Il suffit de s’identifier avec le login / password obtenu lors de l’achat du Fonera. (Note, en fait peu importe le login utilisé, il sera utilisé comme propriétaire du dit Fonera.. je dis cela pour ceux qui ne l’on pas acheté)..

Ensuite, il suffit de configurer la page de l’AP.

Comme vous pouvez le voir, ce routeur permet d’avoir deux réseaux WIFI séparés. Un pour FON (”FON_AP”) et un autre privé utilisant du WPA (”JKX_FON_TEST”).

On note également que l’on peut configurer la quantité de bande passante allouée à Fon

L’adresse ip du routeur est par défaut 192.168.162.1

Afin d’accéder à l’interface de configuration, il faut absolument utiliser le réseau privé. On arrive alors sur une interface d’administration OpenWRT modifiée. (IP 192.168.10.1 / login: root / password: admin)

Comme vous pouvez le voir, cette interface est très succinte, et ne permet guère de faire des réglages avancés, comme l’ensemble de la config Fon d’ailleurs.

Dans l’ensemble, l’installation est très simple, et fonctionne du premier coup, mais cela au prix d’une configuration limitée. Certains points sont quand même intéressants ...

Je n’ai hélas pas réussi à configurer le ssh sur le routeur, malgré qques hacks testés, mais la solution port série devrait marcher.

Les captures d’écran sont ici: http://www.brest-wireless.net/gallery/fon

Howto, OpenWrt a Fon !

Cet article décrit la manière de flasher le routeur LaFonera® et de remplacer son firmware d’origine par le firmware OpenWrt ou DD-Wrt

Pour cela, nous vous proposons un pack qui regroupe tout ce dont vous aurez besoin. (pack OpenWrt, pack DD-Wrt)

Pour commencer, connectez vous au reseau wifi MyPlace. La Fonera a pour IP : 192.168.10.1 (Acces SSH, user: root , password: admin)

Pour commencer il faut vérifier la version du firmware en allant sur la page http://192.168.10.1/PAGE. Le firmware doit être le 0.7.1 r1. Si vous avez le r2, débranchez la prise RJ45, tentez un reset (appui de 15secondes sur le bouton reset situé en dessous du routeur) et vérifiez que vous être bien danss le 0.7.1 r1.

Dans le package téléchargé, se trouvent deux pages : step1.html et step2.html.

vous allez ouvrir ces deux pages, puis executer step1, puis step2. step1 permet d’ajouter une « iptable » au firewall, afin d’ouvrir le port ssh, tandis que step2 lance le serveur ssh.

Nous allons maintenant accèder par SSH : # ssh root@192.168.10.1

Puis automatiser le lancement du serveur SSH en tant que démon : # mv /etc/init.d/dropbear /etc/init.d/S50dropbear

On ouvre les ports de manière permanente pour SSH : # vi /etc/firewall.user

Décommenter les deux lignes suivantes (enlever le « # »):

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

Commentez la ligne qui contient /bin/thinclient : # crontab -e

Commentez la derniere ligne de /bin/thinclient (optionnel): # vi /bin/thinclient ⇒ # . /tmp/.thinclient.sh

Pour commencer, vous pouvez réaliser un backup de la flash d’origine de votre Fonera :

cd /dev/mdtblock
httpd -p 9090
wget http://192.168.10.1:9090/0

Customisations (pour ceux qui y voient l’intérêt) :

echo « alias l='ls -al' » >>  /etc/profile

Accèder via le cable ethernet : Paramétrez votre interface réseau avec l’IP statique 169.254.255.2 et connectez vous à l’AP via 169.254.255.1 (ssh root@169.254.255.1)

Fonera Flashing :

1)On commence par upgrader le noyau, par un qui va permettre d’écrire la partition «RedBoot config » :

On envoie donc le noyau via scp dans le /tmp de la fonera :

scp openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma_from_rapidshare.com root@169.254.255.1:/tmp/

Parallèlement, connectez vous en SSH à la Fonera, puis flashez avec le noyau tout juste uploadé :

mtd -e vmlinux.bin.l7 write /tmp/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7

Temps d’attente estimé : 1min30.

On reboot le routeur : # reboot.

2)Mise à jour de la configuration de RebBoot afin d’avoir accès à RedBoot via telnet.

Toujours via scp, on upload la config :

scp out.hex root@169.254.255.1:/tmp/

On se reconnecte via SSH, puis on flash la config RedBoot :

mtd -e "RedBoot config" write /tmp/out.hex "RedBoot config"

Temps estimé : 3 secondes

On reboot )

3)Accès à Redboot, et flash du noyau et du rootfs

On arrive ici à l’étape finale, puis qu’on y met le firmware souhaité avec son noyau final.

Pendant le boot de la fonera, il faut accèder via telnet sur le port 9000 :

telnet 192.168.1.254 9000

Rq: Si vous rencontrez des problèmes avec Ctrl-C et telnet, utilisez cela :

    tclsh RedBoot.tcl ; telnet 192.168.1.254 9000
$ telnet 192.168.1.254 9000
Trying 192.168.1.254...
Connected to 192.168.1.254.
Escape character is '^]'.
== Executing boot script in 8.800 seconds - enter ^C to abort
RedBoot> No image 'vmlinux.bin.l7' found
RedBoot> Can't execute Linux - invalid entry address
RedBoot>

Si vous n’arrivez pas là, recommencez, à savoir redémarrer la fonera et lancez le telnet sur celle-ci.

On prépare RedBoot :

RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot>

Préparez un serveur tftp avec le noyau et le rootfs à la racine de celui-ci.

FAIRE UNE DESCRIPTION DE TFTP HPA (pour l’exemple) !

Configuration du client TFTP sur la fonera

RedBoot>ip_address -l 192.168.1.254/24 -h 192.168.1.2

On flashe le rootfs :

RedBoot> load -r -v -b 0x80040450 rootfs
Using default protocol (TFTP)
-
Raw file loaded 0x80040450-0x802c044f, assumed entry at 0x80040450
RedBoot>

FIS CREATE !!!

RedBoot> fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
... Erase from 0xa8030000-0xa8730000: ................................................................................................................
... Program from 0x80040450-0x80740450 at 0xa8030000: ................................................................................................................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot>

Temps estimé : 15 min !

On flashe le noyau :

RedBoot> load -r -b %{FREEMEMLO} vmlinux
Using default protocol (TFTP)
Raw file loaded 0x80040800-0x800f07ff, assumed entry at 0x80040800
RedBoot>

fis créé par ‘fis create -r 0×80041000 -e 0×80041000 vmlinux.bin.l7’, temps estimé : 5mn

RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
... Erase from 0xa8730000-0xa87e0000: ...........
... Program from 0x80040800-0x800f0800 at 0xa8730000: ...........
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot>

. fis laod kernel with ‘fis load -l vmlinux.bin.l7’

RedBoot> fis load -l vmlinux.bin.l7
Image loaded from 0x80041000-0x80284086
RedBoot>

Pour information, le partitionnment résultant est :

RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xA8000000  0xA8000000  0x00030000  0x00000000
rootfs            0xA8030000  0xA8030000  0x00700000  0x00000000
vmlinux.bin.l7    0xA8730000  0x80041000  0x000B0000  0x80041000
FIS directory     0xA87E0000  0xA87E0000  0x0000F000  0x00000000
RedBoot config    0xA87EF000  0xA87EF000  0x00001000  0x00000000
RedBoot>
RedBoot> version
RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 16:57:58, Aug  7 2006
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
Board: ap51
RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
RedBoot>

rebooter la fonera avec la commande redboot reset

RedBoot> reset

Résumé des commandes RedBoot :

fis init
ip_address -l 192.168.1.254/24 -h 192.168.1.2
load -r -v -b 0x80040450 rootfs
fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
load -r -b %{FREEMEMLO} vmlinux
fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
fis load -l vmlinux.bin.l7
reset

Telnet sur OpenWrt et on change le passwd...

$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to xxx.xxx.
Escape character is '^]'.
 === IMPORTANT ============================
  Use 'passwd' to set your login password
  this will disable telnet and enable SSH
 ------------------------------------------
BusyBox v1.4.1 (2007-02-10 01:38:09 CET) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
  _______                     ________        __
 |           |.-----.------.-----.|  |  |  |.----.|  |_
 |     -    ||  _  |   -__ |     ||  |  |  ||   _||   _|
 |____ __||    _|_____|__|__||________||__|  |____|
              |__| W I R E L E S S   F R E E D O M
 KAMIKAZE (bleeding edge, r6280) -------------------
  * 10 oz Vodka       Shake well with ice and strain
  * 10 oz Triple sec  mixture into 10 shot glasses.
  * 10 oz lime juice  Salute!
 ---------------------------------------------------
root@OpenWrt:/# passwd
Changing password for root
New password:
Retype password:
Password for root changed by root
root@OpenWrt:/#

Accéder à OpenWRT en ssh, et let’s go

echo “alias l=’ls -al’" » /etc/profile; source /etc/profile

liens :

http://ipkg.k1k2.de/packages/
http://ipkg.k1k2.de/openwrt-atheros-2.6-vmlinux.lzma
http://ipkg.k1k2.de/openwrt-atheros-2.6-root.jffs2-64k
/etc/ipkg
src snapshots http://ipkg.k1k2.de/packages/
ipkg update
ipkg upgrade

/etc/config/wireless

config wifi-device  wifi0
        option type     atheros
        option channel  5

config wifi-iface
        option device   wifi0
#       option network  lan
        option mode     ap
        option ssid     BW-test
        option hidden   0
        option encryption none

/etc/config/network

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 proto    static
        option ipaddr   192.168.1.3
        option netmask  255.255.255.0
        option gateway  192.168.1.1
        option dns      192.168.1.1

config interface wan
        option ifname   ath0
        option proto    static
        option ipaddr   192.168.5.1
        option netmask  255.255.255.0
        option gateway  192.168.5.1
        option dns      192.168.5.1