Cominciamo con il dire che in rete si trovano valanghe di howto su come flashare i router con OpnWRT. Ho voluto scriverlo uno anch’io per 2 motivi:
1) Per ricordarmi i passi da fare (mi dimentico sempre i valori di default)
2) Perche’ ho aggiunto qualche piccola raccomandazione che potrebbe risparmiare tempo “all’inesperto” che si appresta a questo tipo di operazione per la prima volta.
Il tutorial si basa sul WZR-HP-G300NH. Il motivo della mia scelta ricadde su tale router per le sue specifiche tecniche, che consentono di far girare diversi servizi in scioltezza, di installare pacchetti aggiuntivi, di aggiungere storage attraverso la porta usb e perche’ lo switch integrato e’ gigabit. Questa e’ la pagina del produttore. Da notare che tale router ha di default DD-WRT che altro non e’ che un firmware linux anch’esso originato dalo sviluppo del firmware del padre di tutti i router, il venerabile linksys WRT54G. DD-WRT offre piu’ o meno tutti i servizi che Openwrt mette a disposizione, con un’interfaccia web ancora piu’ raffinata. Quindi acquistando quel router avete gia’ tra le mani uno strumento estremamente versatile e con funzionalita’ decisamente superiori alla media. Non saprei dire con esattezza quali sono i motivi per cui preferisco openwrt: forse lo trovo piu’ semplice da amministare via linea di comando e quindi ha il mio favore.
Tenendo presente che e’ possibile compilarsi il proprio firmware cosi’ come qualsiasi kernel Linux, di seguito ci sono le istruzioni per flash del device con l’ultima release stabile utilizzando il metofo tftp. Ci sono diverse altri modi per fare il flash ma questo e’ senza dubbio il piu’ sicuro e quello da utilizzare in situazioni disastrose ( ossia quando sembra che il router sia irrimediabilmente brikkato). Quindi tantovale imparare i passaggi fin da subito.
Primo concetto importante: il WZR-HP-G300NH ha un server tftp che ascolta ogni volta che il router viene acceso . Per pochi secondi, ma sempre, ad ogni boot. Questo serverino tftp sara’ contattabile con un indirizzo IP che e’ SEMPRE 192.168.11.1 e un mac che e’ SEMPRE 02:aa:bb:cc:dd:1a, indipendemente da cosa avete settato prima o da cio’ che e’ scritto sull’etichetta sotto il router.
Secondo concetto: beccare esattamente la finestra di tempo in cui il serverino tftp ascolta puo’ essere difficile. Se alla prima non va, non disperate e ritentate ricominciando da capo.
Ultimo concetto: tenete presente che quello che va fatto e’ stabilire una connessione tra il vostro pc e il router e basta. Quindi disabilitate le altre interfacce di rete ( la wireless del vostro portatile per esempio); collegate il cavo ethernet ad una porta dello switch del router ( per intenderci, non collegatela alla porta wan, quella colorata di blu); tenete anche presente che altri fattori potrebbero influenzare il successo o meno dell’operazione, per esempio se, come me, usate un computer su cui gira fedora con se linux in modalita’ enforced. Se sospettate che certe protezioni possano ostacolare la trasmissione dei pacchetti tra il vostro pc e il router, disabilitate temporaneamente quelle protezioni o provate con un altro OS.
Quindi, dato che sappiamo gia’ quale e’ l’indirizzo ip del router in fase di ascolto e poiche’ dobbiamo stabilire una connessione point-to-point al device, come prima cosa diamoci un indirizzo della stessa classe. (in linux ricordate di essere root # o di usare sudo all’inizio del comando)
# ifconfig eth0 192.168.11.2
ovviamente la vostra interfaccia di rete potrebbe avere un nome diverso ( in mac sara’ porbabilmente en0): controllate prima il nome della vostra interfaccia lanciando ifconfig senza argomenti.
Avvertimento: se usate mac potreste essere tentati di settare l’indirizzo da Preferenze> Network. Non fatelo perche’ il valore impostato viene effettivamente preso dalla scheda di rete dopo che e’ avvenuto il primo scambio di pacchetti ( il che vi fara’ perdere la finestra temporale di ascolto del server tftp del buffalo).
Quindi aggiungiamo il mac del router nella nostra tabella arp con il comando
# arp -s 192.168.11.1 02:aa:bb:cc:dd:1a
Okay, adesso siamo pronti. Con il router SPENTO digitiamo
tftp 192.168.11.1
binary
rexmt 1
timeout 60
trace
In breve:
binary e’ la modalita’ necessaria per il trasferimento;
rexmt 1 dice al computer di tentare il trasferimento di continuo (come gia’ detto, dobbiamo centrare una breve finestra temporale);
timeout 60 e’ esattamente cio’ che sembra, un timeout;
trace serve per vedere i pacchetti inviati su schermo ( un modo da capire in modo inequivocabile che il trasferimento sta avvenenendo).
Ora l’ultimo comando. Appena premuto enter, accendete subito il router in modo da non rischiare di perdere il periodo di ascolto del server tftp.
put <nomedelfile>
Se tutto va bene vedrete a schermo i tentativi di contattare il buffalo finche’ non iniziera’ il trasferimento con i pacchetti listati. Altrimenti dopo un certo numero di tentativi falliti il timeout vi informera’ che non e’ stato possibile contattare la risorsa. In tal caso spengete il router uscite dal prompt tftp e ricominciate da capo la procedura.
Se il tutto ha successo, vedrete una grande attivita’ di led sul router. Lasciatelo stare, prendetevi un caffe’ e tornate solo quando ha finito di fare i suoi reboot ( ci mettera’ diversi minuti) e i led sono tutti verdi.
A quel punto avete due opzioni: connettervi all’interfaccia web luci digitando l’indirizzo del vostro router su un web browser o accedere via linea di comando. Attenzione perche’ l’indirizzo, dopo il flash, potrebbe essere cambiato a 192.168.1.1. Quindi se tutto ha avuto successo ma non riuscite a raggiungere il buffalo, cambiate l’indirizzo della vostra scheda di rete (per esempio a 192.168.1.2) e quindi ritentate.
Se volete accedere via linea di comando, tenete presente che ssh di default e’ disabilitato. Quindi fate
telnet 192.168.1.1
una volta ammirato il banner di benvenuto digitate
passwd
per cambiare la password di root e quindi
exit
da questo punto in poi ssh e’ attivo e telnet disabilitato per motivi di sicurezza.