FANDOM


In questo articolo spiegheremo come usare il firmware di Brainslayer dd-wrt nella versione V.23 sp2 , con i settaggi chillispot per accedere alla rete FON.

Disclaimer

In questo howto descriveremo una procedura di installazione e di modifica del firmware del router WRT54g Linksys non ufficialmente supportata ne da FON , ne da Linksys.
Ogni eventuale danno che potrete arrecare al vostro router in seguito alle modifiche qui descritte , non sarà in alcun modo inputabile al sottoscritto.
Le modifiche qui di seguito descritte , vengono eseguite sotto la vostra totale ed unica responsabilità


Requisiti

Per cominciare diamo un'occhiata a quello di cui necessitiamo per cominciare a lavorare :

  • un router compatibile con il firmware dd-wrt. Non sono molti , e sono rissunti nella tabella sottostante

tabella router compatibili dd-wrt
modello numero di serie
Linksys WRT54G 1.0 CDF0xxx or CDF1xxx
Linksys WRT54G 1.1 CDF2xxx or CDF3xxx
Linksys WRT54G 2.0 CDF5xxx
Linksys WRT54G 2.2 CDF7xxx
Linksys WRT54G 3.0 CDF8xxx
Linksys WRT54G 3.1 CDF9xxx
Linksys WRT54G 4.0 CDFAxxx
Linksys WRT54G 5.0 (JTAG only with cfe update, see http://wrt-wiki.bsr-clan.de/index.php?title=Flash_Your_Version_5_WRT54G)
Linksys WRT54GL 1.0 CL7Axxx
Linksys WRT54GL 1.1 CL7Bxxx
Linksys WRT54GS 1.0 CGN0xxx or CGN1xxx
Linksys WRT54GS 1.1 CGN2xxx
Linksys WRT54GS 2.0 CGN3xxx
Linksys WRT54GS 2.1 CGN4xxx
Linksys WRT54GS 3.0 CGN5xxx
Linksys WRT54GS 4.0 CGN6xxx
Allnet ALL0277 tutti
Buffalo WHR-G54S tutti
Buffalo WHR-HP-G54S tutti
Buffalo WBR-G54 tutti
Buffalo WLA-G54 tutti
Buffalo WBR2-G54 tutti
Buffalo WBR2-G54S tutti
Buffalo WZR-RS-G54 tutti
Belkin F5D7130/7330 (2mb flash)
Belkin F5D7230-4 v1444 (2mb flash)
Belkin F5D7230-4 v1000 tutti
ASUS WL500G-Deluxe tutti



  • EDIT (24/09/2006) il firmware dd-wrt v23 sp2 arrivato alla sua release finale , scaricabile qui
  • Un po di buona volontà.



Dettagli Operativi

Flashare il Firmware

Ci sono due procedure , a seconda che siamo in possesso di un Fon social router con preinstallato il Fon basic 0.6.6 , oppure un wrt54 linksys acquistato in un qualsiasi negozio di informatica.

Fon social router

Collegatevi via ethernet alla console di amministrazione web , cercate l'opzione upgrade firmware, caricate il file dd-wrt.v23_generic.bin , attendete un paio di minuti senza staccare per nessun motivo la presa di alimentazione , premete il bottone reset nel retro del router.
Ora dovrei dirvi che moltissime persone una volta eseguito questo passo , per svariati motivi , trasformano il loro router in un brick , ossia un mattone. I sintomi sono che una volta riflashato il router , la lucina power lampeggia continuamente e non si riesce più a raggiungere il router ne via wireless ne wired.
Se doveste incappare in questo inconveniente , leggetevi questo howto
A questo punto ricollegatevi al pannello di amministrazione del router , questa volta puntando il vostro browser all'indirizzo 192.168.1.1 . Per variare i parametri immettete la password che di default è admin (login: root).
Può succedere (sotto windows) che il computer non riesca a prendere un nuovo ip,quindi non permettendovi di raggiungere il router. In quel caso forzate il forzate il pc ad usare un ip quale 192.168.1.2 netmask 255.255.255.0 e impostate come gateway ovviamente 192.168.1.1. Qui grazie alla completissima interfaccia grafica settate tutti i parametri dedicati alla connessione internet , ai vostri server dmz , al qos , al firewall e a tutto quello che vi viene in mente.
Verificate che possiate usare Internet sia dalla rete locale , sia dal wireless.

Linksys WRT54G comprato in negozio

la procedura dovrebbe essere del tutto analoga , e invece no , in quanto il firmware originale linksys non permette di caricare un nuovo firmware più grosso di 3mb. Essendo il nostro firmware di 3.3mb , il flashaggio fallirà miseramente con nostro sommo disappunto.
Per ovviare a questo , Brainslayer ha approntato un'immagine mini da 2.3mb che caricherà un dd-wrt minimale , e dal quale potremo riflashare in un secondo passaggio la versione completa del dd-wrt.
La repositoria del file è qui.
Ripetete esattamente i passi descritti sopra e con un po più di fatica , riuscirete a riflashare il vostro router.

Passaggi per attivare FON

Ora che abbiamo il nostro dd-wrt , abbiamo sondato tutte le sue mirabolanti features , è arrivato il momento di collegarci a FON.
Per fare questo dovremo eseguire i seguenti passaggi :

  • Separare la Lan cablata dalla Wlan , che di default nel dd-wrt sono messe in bridge.
  • configurare chillispot
  • inserire un paio di regolucce nella catena iptables.
  • inserire lo script thinclient per l'heartbeat di FON

Separare la Lan dalla Wlan

Per riuscire in questo , dovremo combinare settaggi da variare con l'interfaccia web e comandi da console.
Niente paura è abbastanza semplice.Notate che tutte queste modifiche vanno fatte rigorosamente collegati al router via cavo ethernet.

  1. Cominciamo con lo scollegare l'interfaccia wireless eth1 dal bridge br0. Questo puo essere fatto dall'interfaccia web , andando su setup--->vlans e cambiando il menù a tendina in basso da lan a none.Qui una schermata vi puo essere d'aiuto.

    http://demanews.com/one.jpg


  2. Ora sempre dall'interfaccia web , andiamo su administrtion--->diagnostic--->commands e scriviamo nella finestra di input i seguenti comandi
wlconf eth1 up;ifconfig eth1 192.168.181.1 netmask 255.255.255.0

dopodichè clicchimo sul bottone save startup.La schermata qui sotto vi è di usilio.

http://demanews.com/two.jpg


  1. E' giunto il momento di aprire il nostro prompt dei comandi ed inserire alcuni comandi da console.
    Apriamo un prompt dei comandi e colleghiamoci via telnet al router.Digitiamo ifconfig e dovremo avere una schermata simile a questa.

    http://demanews.com/three.jpg.

    Vediamo di spiegare un po la schemata qui sopra:
    br0 è il bridge con le 4 porte ethernet
    eth0 è lo switch a 4 porte (fisico)
    eth1 è la nostra interfaccia wireless(fisica)
    lo c'è bisogno che lo spieghi ?
    ppp0 è il link verso il nostro provider internet
    tun0-00 è l'interfaccia tunnel per chillispot
    vlan0 è l'interfaccia switch 4 porte (virtuale)
    vlan1 non è mostrata nello screenshot , ma è il link al nostro modem adsl.

Configurare Chillispot

Per configurare chillispot , abbiamo a disposizione la comoda Gui di dd-wrt. Andiamo in administration-->hotspote qui riempiamo i parametri per collegarci a FON.I parametri sono i seguenti

chillispot ---->enable (radio button)
Primary radius server ip/dns------>213.134.45.160
backup radius server ip/dns------->213.134.45.160
dns ip -------> 212.245.255.2 (potete mettere qualsiasi server dns , questo è 
quello di libero , credo !!) redirect url ------>https://login.fon.com/cp/index.php shared key-------> garrafon dhcp interface ----->wan radius nas id -------> il mac address che vi risulta dal comando nvram get wl0_hwaddr
ATTENZIONE il comando nvram get wl0_hwaddr vi restituisce il MAC address in formato xx:xx:xx:xx:xx:xx ,
dovrete sostituire i due punti (:) con un trattino (-)
UAM secret------->garrafon UAM anyDNS ------->1 UAMallowed------------>192.168.182.1,212.245.255.2,www.fon.com,www.paypal.com,
www.paypalobjects.com,www.skype.com,www.martinvarsavsky.net,213.134.45.0/24

Confermiamo il tutto con save settings.

Ed la configurazione FON di chillispot è sistemata.
Ora abbiamo bisogno di ritornare alla console e dare un'occhiata ai settaggi delle interfacce che chilli usa .Diamo il seguente comando

nvram show | grep chilli

dovremmo ottenere qualcosa di molto simile

http://demanews.com/four.jpg

Dobbiamo cambiare il parametro chilli_interface da lanwan a wlan.
Per fare questo , dobbiamo usare i comandi da console , perchè la gui di dd-wrt non permette di cambiare questo parametro.
Dunque , sempre dal prompt dei comandi , digitiamo quanto segue:

nvram set chilli_interface=wlan
nvram commit
.

Il risultato di questo comando , lo possiamo verificare come prima , dando un nvram show | grep chilli_interface , e questo dovrebbe essere il risultato

http://demanews.com/five.jpg


Siamo ad un buon punto , ma dobbiamo ancora sistemare un po di sicurezza nella nostra rete . Infatti , chiunque conosca l'indirizzo ip fisso del nostro router puo' farcela in barba e navigare bypassando l'utenticazione chillispot.

Sicurezza con alcune regole di Iptables

Siamo giunti a questo punto e dobbiamo dire che siamo a più di metà dell'opera. Ci sono ancora alcuni problemi legati alla sicurezza , che vedremo di tappare con un paio di regole di iptables facili facili.

Ritorniamo nella gui e precisamente in administration--->diagnostic , e nella box dove avevamo digitato i comandi prima , scriviamo le seguenti righe

iptables -A FORWARD -i eth1 -j DROP;
iptables -t nat -I PREROUTING -i eth1 -d $(nvram get lan_ipaddr)/$(nvram get lan_netmask) -j DROP

Clickiamo su save firewall.
Con queste regole , impediamo il forwarding dei pacchetti dal wireless a qualsiasi altra destinazione e (seconda regola) tagliamo tutti i pacchetti con destinazione LAN.

Installazione dello script heartbeat

FON nel suo firmware 0.6.6 , ha introdotto uno script che viene lanciato da cron (un demone che esegue comandi su una base temporale) , questo script si chiama thinclient.
Thinclient , apre una sessione ssh con il server download.fon.com , e comunica la versione del firmware , la versione di chillispot e il mac address del router.
Thinclient ha un duplice scopo :

  1. Dare a FON un segnale di vita (heartbeat)
  2. Permettere a FON di cambiare alcuni parametri del router come gli utenti locali , il ssid , la password di root , anche aggiornare il firmware volendo.

Vedo che sta già storcendo la bocca . Infatti il fatto che FON prenda possesso del mio hardware , a me non va giù , e penso nemmeno a voi.

Vediamo quindi di assicurare a FON il contatto del nostro router , ma di non permettere di modificare i nostri settaggi.

Per prima cosa , dobbiamo attivare la partizione JFFS2 nel nostro router . Per fare questo , dobbiamo andare nel pannello di amministrazione di dd-wrt nella sezione administration ---> JFFS2 support ed attiviamo il supporto al file sistem.
Ora entriamo nella console via telnet o ssh e posizioniamoci nella directory /jffs con il comando

cd /jffs

copiamo la chiave ssh e lo script nella nuova partizione jffs con il comando

wget http://fon.freddy.eu.org/heartbeat/fonkey
wget http://fon.freddy.eu.org/heartbeat/thinclient

Una cosa buona e giusta , sarebbe quella di darvi un'occhiata allo script che avete appena scaricato con

cat /jffs/thinclient

Non occorre essere dei maghi del codice , in fondo si tratta di un banalissimo shell script.

Ora , rendiamo eseguibile lo script thinclient con

chmod +x /jffs/thinclient

e inseriamo da GUI nella sezione administration----> diagnostic le seguenti righe nella box commands

/jffs/thinclient start 2>&1 | logger

Clickiamo su save startup.
In questo modo abbiamo installato il nostro bravo script di heartbeat , che oltre a far sparire l'avvertimento che stiamo utilizzando un firmware non idoneo , nella user-zone di FON , assicura a FON che il nostro router funziona correttamente.

Risoluzione dei problemi noti con connessioni PPPoE

Sebbene con dd-wrt non dovremmo avere di questi problemi , ho riscontrato non pochi grattacapi durante un'installazione recente presso un mio amico dotato di connessione PPPoE con il provider internet alice adsl.
Nonostante il settaggio wan del router fosse stato portato ai valori corretti di MTU , ossia 1492 per connessioni PPPoE , l'accesso tramite chillispot non mostrava nessuna pagina di wellcome via wireless.
Ho utilizzato allora la soluzione che dfr , membro del movimento FON francese , ha postato il giorno 8 Luglio 2006 nel forum inglese di FON.
Questa soluzione inserisce una regola iptables nella tabella MANGLE di netfilter , e appone una toppa a questo bug che sembra affliggere chillispot.
Per applicare questa patch basta andare in administration--->commands e scrivere la seguente stringa nella box apposita

iptables -t mangle -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400

Salvando tutto con il bottone save firewall si fa in modo che questo comando venga eseguito ad ogni riavvio del router.
La cosa strana è che anche io a casa utilizzo PPPoE e non ho dovuto ricorrere a questa patch per far funzionare chillispot.

Aspetti tecnici non legati a FON , ma al corretto funzionamento del firmware dd-wrt

Da bravo firmware advanced il dd-wrt non è fatto per chi se ne vuole stare tranquillo , ma va seguito attivamente nel forum di sviluppo. Ora io da una mia personale esperienza , ho trovato il dd-wrt + chillispot , al limite della capacità massima della memoria del router. Dovete sapere che chillispot , riserverà per se il 34% della memoria a disposizione. Quindi è fuori discussione , il proxy sip , il trafic shaping ed altre simpatiche features del router.
Inoltre, se fate uso massiccio di p2p (vi vedo .....) sappiate che le impostazioni di default fanno rallentare il router fino a farlo schiantare.I rimedi sono qui elencati :

  • punto 1
    Cambiare dal pannello di amministrazione sotto la voce administration---->management i seguenti parametri di ip filter settings:
    maximum ports=4096
    tcp timeout=90
    udp timeout=90.
  • punto 2
    Il dd-wrt ha in se una funzione di proxy che riscrive il contenuto HTML di ActiveX e cookies.Questa funzione consuma potenza di calcolo , ed è quindi un bene disattivarla per avere maggiore stabilità.
    Per disattivarla bisogna andare sotto la voce Security---->firewall e disattivare il firewall. Sebbene sia una pratica deplorevole , è una feature a cui dovete rinunciare , sempre dal momento che avete un carico di lavoro molto alto portato da chillispot.La sicurezza comunque secondo il mio punto di vista , non viene messa in discussione , in quanto le macchine collegate dietro il router sono nattate. Se proprio siete paranoici , comprate un firewall hardware tipo questo della zyxel , ma ce ne sono molti altri in commercio , oppure costruitevi un buon firewall linux con delle distribuzioni ad hoc tipo ipcop.
  • punto 3
    esiste un bug che affligge le versioni 2.2 del WRT54GS. Questo bug coinvolge un accesso fatale alla memoria , dovuto alla differenza tra il clock della CPU e il clock del bus della memoria. Per ovviare a questo , Linksys stessa nelle loro ultime release firmware , hanno overclockato la cpu a 216Mhz , portandola quindi alla stessa velocità del memory bus. Noi dobbiamo fare lo stesso con il firmware dd-wrt.
    Dal pannello di amministrazione , andiamo in Administration---->Management e quasi in fondo allo schermo , alla voce overclocking settiamo la velocità a 216Mhz.

Considerazioni finali

Con questo setup , potete godere del firmware più avanzato al momento per wrt54 ed allo stesso tempo partecipare al movimento FON.
Grazie al lavoro di dioid , freddy , e del sottoscritto , ora abbiamo anche la possibilità di uno script heartbeat che rende il dd-wrt 100% compatibile con FON.
Se avete trovato utile questo howto , potete donare qualche spicciolo al suo autore , oppure , molto meglio , potete donare al progetto dd-wrt di brainslayer direttamente dalla sezione status della GUI di dd-wrt.

Collegamenti esterni e credits per questo howto

l'howto separate LAN and WLAN of dd-wrt wiki
Il mio post sul board ufficiale fon
L'articolo sul dd-wrt wiki che tratta l'argomento router slowdown
Il post sul board inglese di FON che parla di heartbeat script (comincia ad essere interessante da pagina 6 in su)

I contenuti della comunità sono disponibili sotto la licenza CC-BY-SA a meno che non sia diversamente specificato.