OpenWrt su 3Com 3CRWER200-75

Un bel giorno la rete qua impazzì. I ping andavano a caso, i pacchetti si duplicavano, non arrivavano a destinazione, robe così. Un gran putiferio. Alla fine, dopo mille prove, siamo arrivati a dare la colpa ad un vecchio router 3com che usavamo come access point. Tolto questo affare dalla rete e tutto è tornato a funzionare regolarmente.

Questo affare poi è stato riposto in un armadio tra la roba non funzionante. A me dispiace vedere questi aggegi dimenticati e, visto che sono un fanatico di OpenWrt, ho provato a mettercelo visto che, nel sito, c’era la procedura per il modello 3CRWER100-75. In realtà io avevo un 3CRWER200-75, non so cosa cambi esattamente, so solo che la procedura ha funzionato regolarmente. Ed ecco quello che ho fatto io.

Innanzitutto tenetevi aprire la pagina apposita sul wiki, scaricatevi il kernel e il root fs, poi dovete installarvi un server tftp, io ho usato tftpd-hpa e ho installato anche putty. Di solito putty lo usavo su windows, ma ho scoperto che esiste anche per Linux. Putty serve semplicemente come terminale telnet, non ho usato il normale telnet già compreso in linux per motivi che spiegherò più avanti.

A questo punto dovete resettare il router per riportarlo alle impostazioni di fabbrica. Per fare questo basta tenere premuto il solito bottoncino e poi gli si da corrente e lo si tiene premuto per circa 10 secondi. Non so perchè ma l’ho dovuto rifare 3 volte.

Adesso il router torna all’impostazione di default e ha l’indirizzo 192.168.1.1, un ping ve lo confermerà, sempre che non abbiate in rete già un altro dispositivo con lo stesso indirizzo.

Ora non dovete fare altro che spegnere e riaccendere il router e lanciare il telnet sulla porta 9000 in un lasso di tempo indefinito in cui redboot ascolta su quella porta e vi da accesso al prompt. Facendolo a mano richiede culo e tempismo, roba che ci becchi tipo 1 volta su 10. Appena avuto accesso bisogna premere CTRL+C. Ed è proprio qua l’inceppo, pare che il telnet non riesco a mandare CTRL+C al prompt per qualche strambo motivo di tabella di caratteri o roba del genere, c’è in giro anche un hack usando netcat ma ho provato e non ha funzionato.

Ed ecco la mia elegante soluzione:

Innanzitto lanciate putty e configuratelo come in questa schermata

In pratica dovete settargli l’indirizzo ip, 192.168.1.1, la porta 9000, dirgli di usare il protocollo telnet e infine salvate la sessione. Io l’ho chiamato telnet9000.

A questo punto aprite il terminale e scrivete questo barbatrucco:

arping -f 192.168.1.1; putty -load telnet9000

Questo fa in modo che appena arping si accorge che l’ho desiderato, l’192.168.1.1, diventa attivo, lancia putty caricandogli, -load telnet9000, la sessione che abbiamo salvato prima: il succo del discorso è che fa il telnet sulla porta 9000 al momento giusto.

A questo punto dovreste avere una schermata di questo tipo:

ovvero siete arrivati al prompt di RedBoot, che è quello che ci interessa.

Ora, pre trasferire l’immagine del kernel e del rootfs, abbiamo bisogno di un server tftp da cui attigente.

Installate, come me, tftpd-hda, non perchè sia meglio di altri ma solo perchè sono riuscito a farlo funzionare alla svelta. Quindi

sudo apt-get install tftpd-hpa

(sudo perchè tanto lo so che usate tutti Ubuntu) poi create una directory per la root del server tftp, io per comodità l’ho creata nella root del file system, quindi /tftpboot, e gli date tutti i permessi del mondo di lettura e scrittura, sennò poi non il client non è contento.

Poi editate il file /etc/default/tftpd-hpa e fatelo diventare più o meno come questo:

# /etc/default/tftpd-hpa

TFTP_USERNAME=”tftp”
#TFTP_DIRECTORY=”/var/lib/tftpboot”
TFTP_DIRECTORY=”/tftpboot”
TFTP_ADDRESS=”192.168.1.101:69″
#TFTP_OPTIONS=”–secure”

L’indirizzo ip 192.168.1.101 non è casuale. Se tornate a putty e al prompt di RedBoot e scrivete

fsconfig -l

vi apparirà una roba tipo questa:

Praticamente RedBoot viene già di default con delle impostazioni sue: l’ip, il gateway e le altre robe. A noi interessa la riga:

Default server IP address: 192.168.1.101

che, praticamente, vuol dire che lui si aspetta che il server tftp sia su quell’indirizzo. Ora noi potremo andarci a leggere la documentazione di redboot e di fsconfig perchè un modo per cambiare quella voce c’è sicuramente, ma chi ce lo fa fare? Basta cambiare l’indirizzo ip della propria macchina che è molto più semplice :) Da qui spiegato il motivo del file di configurazione tftpd-hpa.

A questo punto siamo già un pezzo avanti e possiamo seguire pedissequamente la guida di OpenWrt. Quindi:

fis init

e premete y, poi, al prompt, scrivete:

load -r -b %{FREEMEMLO} /tftproot/openwrt-atheros-vmlinux.lzma
fis create -r 0×80041000 -e 0×80041000 vmlinux.bin.l7
load -r -b %{FREEMEMLO} /tftproot/openwrt-atheros-root.squashfs
fis free
fis create -l 0x2E0000 rootfs
fis list
reset

i due comando load hanno bisogno comunque del percorso assoluto, mistero, altrimenti se la prende a male e non trova il file. Se load ritorna errori di lettura vuol dire che non avete dati abbastanza permessi alla directory /tftproot, provate anche a dargli un chown -R nobody eventualmente.

Dopo il reset il router si riavvia e farà il boot con OpenWrt. Attenzione che il boot sarà un po’ più lento rispetto al firmware originale.

Per accedere telnettate l’192.168.1.1 e avrete accesso al prompt di OpenWrt, leggete le robe scritte, settando la password, con passwd, si imposta la password e si attiva automaticamente il server ssh.

Ora avete un router con OpenWrt e potete farci un po’ quello che vi pare

About these ads

»

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...