Router Wireless – La personalizzazione dei router wireless: VxWorks con WRT54G

Router wireless - VxWorks con WRT54G. I router wireless sono divenuti molto economici e hanno trovato largo impiego nei piccoli uffici (i cosiddetti SOHO, small office - home office) e nelle reti wi-fi pubbliche. Le prestazioni di molti router wireless possono essere notevolmente migliorate mediante l’uso di diverse distribuzioni del firmware ed il loro aggiornamento. Un router wireless rappresenta inoltre la piattaforma ideale per prendere confidenza con l’embedded linux.

Recentemente mi sto dedicando alla realizzazione di un mio hot spot con un router wireless. Mi rendo conto che non sia un’idea originale, ma sto cercando di valutare le differenti soluzioni open-source allo scopo di creare una guida passo-passo che sia realmente di aiuto per un utente comune nella realizzazione della propria rete wireless. I requisiti per realizzare un server back end (vale a dire non direttamente connesso con l’esterno) ad autenticazione diretta possono essere svariati. La soluzione più semplice prevede l’uso di NoCatSplash e richiede una singola pagina HTML sul server web o su un disco locale JFFS2. Quella più complessa necessita invece di PHP 5 e di un database Postgre SQL, che è disponibile solo su pochi host virtuali (dato che My SQL è il tipo di database più diffuso).

La più classica delle soluzioni consiste nell’affittare un intero host per potere avere il pieno controllo del server, ed avere il totale controllo dell’installazione dei protocolli RADIUS, LAMP e CA ed ottenere la loro certificazione. La parte relativa ai server, comunque, esula dall’ambito del nostro articolo. Focalizziamo, invece, la nostra attenzione sull’impiego di Linux sui router.

Distribuzioni Hardware e Firmware off-the-shelf

La maggior parte dei router wireless impiega Linux o VxWorks. Linksys ha pubblicato i propri codici sorgente sul suo sito web dopo essere stata citata in giudizio dalla GPL (General Public License) in merito al suo WRT54G. E’ possibile leggere l’intera vicenda su Wikipedia - Linksys WRT54G series

WRT54G è un router wireless 802.11g, originariamente progettato per essere impiegato con Linux. E’ diventato comunque il modello più diffuso da quando la Linksys ha reso noto i codici sorgente per ogni singolo dispositivo ed ogni singola versione. Persino oggi che Linksys ha abbandonato Linux in favore di VxWorks, la versione open-source, WRT 54GL, è ancora reperibile per gli appassionati di Linux.

Il WRT54G e la sua famiglia sono diventati uno standard industriale per la realizzazione di router wireless destinati al mercato SOHO. Molti modelli di Asus, Buffalo, Netgear, Belkin, Accton vengono detti “WRT54G compatibili”. Dunque anche se Linksys cerca di allontanarsi dal mercato degli hobbisti fai da te, sono disponibili modelli compatibili costruiti da altri produttori con hardware simile o persino più potente. Ad esempio, Buffalo e Asus producono alcuni modelli con maggior memoria e con porte USB. Questo consente di modificare il loro firmware per trasformarli in un client Bit Torrent (connettendo un hard disk USB) o in un gateway VoIP (tramite il software asterisk), in un sistema di video sorveglianza (connettendo una webcam USB) o in un router wireless mobile (connettendo un cellulare 3G).

Parallelamente alla release ufficiale di Linksys, numerose comunità open-source hanno dato vita a nuove distro Linux per la piattaforma WRT54G.

OpenWRT (che introduce il supporto dei pacchetti JFFS2 e ipkg, in modo da renderlo assai versatile ed adattabile, con LUA e la biblioteca opzionale UI X- WRT)

DDWRT (in origine un progetto di Sveasoft, basato su chipset MIPS e sviluppato per Alchemy; dalla v.23 diventato OpenWRT)

HyperWRT (un progetto che tenta di affinare il firmware originario con caratteristiche semi-industriali)

Tomato (un progetto derivato da HyperWRT, con supporto AJAX e SVG web UI)

La maggior parte delle distribuzioni di terze parti per router wireless sono progettate per il chipset MIPS di Broadcom; alcune di esse sono state esportate verso altre piattaforme, quali: Atheros (ARM9), Intel IXP (XScale), PowerPC, Alchemy, AVR32, MikroTik (x86), RDC(x86). A tutt’oggi, alcuni driver per la parte WLAN usano ancora moduli non open-source.

Il punto di vista di uno sviluppatore

Fissiamo ora la nostra attenzione su OpenWRT. In qualità di sviluppatore è possibile usare questo protocollo in sistemi di controllo industriali: piccoli robot, sensori di rete, soluzioni domotiche, sistemi VoIP, reti, sia cablate che wireless, e molto altro ancora. E’ possibile effettuare il download dell’immagine pre-compilata o effettuare la verifica dei codici sorgente tramite Subversion.

Per tradizione lo sviluppatore deve raccogliere da solo tutti gli elementi necessari, dai cross-compiler, al kernel o le patch, per poi costruirsi da solo il proprio embedded Linux. Un’altra complicazione da “mal di testa” è la verifica delle compatibilità tra le varie versioni.

Apparentemente OpenWRT ha un approccio molto più semplice. Usa Buildroot per rendere visibile all’utente (o sviluppatore) il processo di costruzione. Gli interessati possono fare riferimento alla pagina “'An introduction to Buildroot-ng”di OpenWRT.

Possiamo dunque riassumere l’intero processo nelle fasi:

    Download di OpenWRT (viene usato Subversion per la verifica del tutto)

    Costruzione della struttura della directory (la verifica delle sorgenti: toolchain, relativi target e package)

    Costruzione di OpenWRT (usando make menuconfig per la configurazione della propria distro e poi il comando “make”. Il “makefile” si riferisce solo ai processi “high-level”).

    Creazione dei pacchetti (usando definizioni di pacchetti “high-level” : saranno poi abilitati nel successivo “make menuconfig”

    Verifica degli errori (usare sempre “make v=99 per vedere le informazioni dettagliate durante il processo di costruzione)

    Salvare il firmware (aprire le web UI di Linksys per scaricare il firmware: potrebbe essere necessario modificare i primi bytes del firmware per effettuare il download).

L’ ultimo passo, quello del fissare il firmware sulla memoria flash, è quello più rischioso: una programmazione sbagliata farà inchiodare il vostro router. Prima di ciò leggete molto attentamente tutte le avvertenze ! Sarete altrimenti costretti a realizzare un cavo JTAG per effettuare il download del firmware.

Se tutto è filato liscio, avrete ora un router wireless con notevoli caratteristiche ed assai divertente ! Potrete accedere al router tramite web UI o tramite Telnet/SSH. Se disponete di sufficiente memoria flash (almeno 4 MB) è inoltre possibile effettuare il mount di un disco virtuale JFFS2 ed installare pacchetti extra o salvare altri contenuti sul router stesso. Naturalmente per raggiungere lo stesso scopo potrete aggiungere memoria esterna, ad esempio tramite periferiche di massa NFS, CIFS o USB.

Soluzioni per gli hot spot

Una soluzione completa per un hot spot con captive portal è composto da un Wireless Access Point, da un Access Controller (o Network Access Server), da un server di autenticazione (o da un server Radius per l’autenticazione, autorizzazione e accounting), da un server web e dal software necessario per amministrare il tutto. Un router wireless generalmente può fungere da WAP e da AC.

DD-WRT offre la maggior parte delle soluzioni per hot spot, tra cui: Sputnik, ChilliSpot, WiFidog, NoCatSplash. OpenWRT offre CoovaChilli ed altre soluzioni tramite l’ipkg manager.

La più comune soluzione completa adottata per un sistema hot spot è costituita da un sistemaOpenWRT/DDRT con firmware ChilliSpot, FreeRadius e LAMP. In ogni caso il progetto ChilliSpot è stato abbandonato dal suo autore, dunque gli interessati dovranno faticare ore senza avere il supporto ufficiale. Oltretutto credo che ChilliSpot sia più adatto per chi voglia costruire un sistema con un server centrale Radius per controllare più access point. Per un singolo access point, generalmente la soluzione più semplice consiste nel trovare un service provider in grado di fornire un accesso back-end onde agevolare il compito delle autorizzazioni ed autenticazioni. Nel caso si voglia creare un access point aperto allo scopo, ad esempio, di attirare clienti per il Vostro ristorante, NoCatSplash potrebbe essere la soluzione ottimale. Naturalmente sarà necessario creare una pagina HTML più attraente, da ospitare sul server web. La pagina creata per default è troppo semplice per risultare attrattiva verso i Vostri potenziali clienti: è formata dal solo pulsante “login”.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend