Linux/Un pinguino a dirigere il traffico (di rete)

Grazie al Linux Router Project i vecchi PC messi in soffitta possono ritrovare un insperato ruolo di primo piano: quello di router/firewall di una rete locale. Costosi router addio?


Una delle tante doti di Linux è sempre stata quella di poter girare egregiamente anche su macchine poco potenti. Oggi che le distribuzioni Linux si sono fatte sempre più grosse, pesanti e piene di grafica, la flessibilità e la totale configurabilità di questo sistema operativo rendono comunque possibile eseguire installazioni “su misura” per le proprie esigenze.

Non è detto, infatti, che le più recenti distribuzioni debbano per forza di cose essere installate su di un PC con caratteristiche simili a quelle richieste dall’esoso Windows NT: basterà infatti procedere ad una attenta selezione dei pacchetti da installare e, successivamente, ad un’ottimizzazione del kernel, per ritrovarsi in mano nuovamente quel sistema operativo “leggero” ed amico del nostro portafogli che tanti proseliti ha fatto in tutto il mondo.

Dato che in questo articolo parleremo di Linux come sostituto dei tradizionali router, la premessa appena fatta mi sembrava necessaria per far capire che qualsiasi utente di buona volontà potrebbe arrivare a costruirsi un Linux piccolo piccolo per svolgere unicamente i compiti di instradatore e filtro di pacchetti TCP/IP. Ma perché perdere tempo se su Internet già si trova l’ottima mini-distribuzione del Linux Router Project (LRP)?

Il LRP è un progetto totalmente free, pertanto privo di supporto, in grado di mettere nelle mani degli amministratori di rete o di utenti con un minimo di esperienza, una distribuzione ai minimi termini di Linux (che d’ora in avanti abbrevierò con LP, Linux Router) capace di svolgere, fra gli altri, il ruolo di router, firewall, web server e proxy server: il tutto in 1,44 MB, la capacità di un singolo floppy.

Naturalmente l’abbinata PC+Linux, specie dal lato dell’affidabilità, non può competere alla pari con un prodotto studiato ad hoc: i tempi fra un guasto ed il successivo, in un PC, sono certamente più frequenti che in un dispositivo router, inoltre quest’ultimo può contare su di un sistema operativo embedded molto compatto e super ottimizzato per svolgere pochi compiti e al meglio.

Tuttavia la soluzione proposta dal LRP presenta alcuni aspetti che contribuiscono a fornirgli un certo valore aggiunto rispetto alle distribuzioni tradizionali: il primo è dato dalla modularità della distribuzione, molto essenziale e compatta nella sua versione base ma capace di adeguarsi alle esigenze dell’utente; il secondo è dato dal fatto che il LR funziona interamente nella memoria di sistema (RAM) di un PC, una componente assai più affidabile e duratura di un disco magnetico.

Comunque non dimentichiamo che prima dell’avvento dei router Cisco, la casa che in pratica ha anticipato di svariati anni il concetto di network appliance, l’instradamento dei pacchetti sulla rete era affidato a computer su cui girava una qualche versione di Unix: solo che allora un computer abbastanza potente per svolgere tale funzione costava ben più di un PC di oggi.

C’è poi il discorso del supporto tecnico: gli autori del LRP, essendo il loro un progetto totalmente free, non offrono nessuna assistenza. A riguardo stanno però nascendo le prime soluzioni commerciali di cui il LRP, all’interno delle sue FAQ, fornisce alcuni indirizzi: www.compound.se, www.n-h.net, www.strongcrypto.com.

In definitiva, sebbene il LR difficilmente potrà impensierire il mercato dei “veri” router, dominato da Cisco, può però offrire una combinazione tale di funzionalità e ad un prezzo così basso (basta un vecchio PC da ufficio con una scheda di rete) che potrebbe interessare molte aziende dal budget poco compatibile con i prezzi dei router commerciali. Come vedremo più avanti, poi, il LR è adatto a fare anche “da spalla” al nostro router e incaricarsi, ad esempio, del filtraggio dei pacchetti, delle politiche più avanzate di firewalling o della gestione di altri servizi di rete, il tutto in un ambito più stabile e sicuro di quello offerto dalle distribuzioni “general purpose”.


Il LRP è nato principalmente come progetto per trasformare gli economici PC, magari riciclati, in efficienti router per reti di qualsiasi dimensione, dalle LAN (Local Area Network) alle WAN (Wide Area Network). La sua grande flessibilità, unita al fatto di essere, alla fin fine, null’altro che una distribuzione Linux, fa sì che il LR sia adatto anche per funzionare su access server, thin server, thin client, network appliance ed altri sistemi embedded specializzati. A tal proposito nelle FAQ del LRP si trovano gli indirizzi di alcuni produttori di embedded PC, computer ai minimi termini molto adatti per l’utilizzo come network appliance.

La mini-distribuzione open source nata dal LRP necessita solo di un disco dal quale fare il boot del kernel e degli eventuali altri pacchetti opzionali (dall’estensione .LRP), scomprimere il tutto in un ramdrive (ovvero nella memoria RAM del computer) e montare il dispositivo /dev/ram0 come root. Naturalmente ogni qual volta si abbia la necessità di apportare modifiche al contenuto del ramdrive, come ad esempio l’aggiornamento di una configurazione, si dovrà, tramite una procedura a menu, fare il backup sul disco di boot: questo consentirà di preservare i cambiamenti apportati anche in seguito al reboot della macchina.

Un floppy disk da 1,44 MB può già contenere tutto ciò che serve per fare routing, firewalling e proxy, tuttavia se la dimensione dei pacchetti opzionali supera tale capacità, o più semplicemente si desidera affidarsi ad un mezzo più efficiente, il kernel di LR supporta, eventualmente tramite l’applicazione di una patch, tutti i media previsti da Linux: hard disk EIDE o SCSI, LS-120, Iomega ZIP e DiskOnChip (memorie a stato solido che emulano la presenza di un hard disk). Il loader di default di LR è Syslinux, ma un utente esperto può sempre utilizzarne altri, come il ben noto LILO.

Oltre alle funzionalità essenziali di instradamento (IP forwarding) e filtro (packet filtering) dei pacchetti TCP/IP, il LR offre una qualsiasi combinazione di servizi quali firewall, web server, switch, server per terminali Radius, server X, rescue system e, in generale, qualsiasi funzionalità supportata da Linux che si riesca ad infilare dentro al disco di boot (che, come abbiamo visto, non deve necessariamente essere un floppy disk).

Restando comunque sulle funzionalità che più interessano in questo articolo, ovvero quelle di routing e di firewalling, possiamo dire che il LR supporta tutti i principali protocolli di routing (RIP, BGP, IP-IP, OSPF), reti IPX, token ring, reti sicure VPN (Virtual Private LAN), il tunneling (compreso il PPTP, Point-To-Point Tunneling Protocol), le politiche di gestione e limitazione del traffico e della banda, tutte le politiche di firewalling e di IP control inserite nel kernel 2.x di Linux (IP Masquerade, bilanciamento del carico, transparent proxy, interface aliasing, ecc.) il monitoraggio SNMP (Simple Network Manage Protocol), la compatibilità futura con l’IPv6, la sicurezza SSH (Secure Shell) e Secure Copy.

La configurazione di un router, un firewall od anche di un banale proxy è normalmente un lavoro da esperti, tuttavia il LR cerca di rendere accessibili gran parte delle principali configurazioni del sistema attraverso una comoda interfaccia a menu, utile soprattutto per chi non conosce a fondo Linux.

In effetti nelle FAQ del LRP si legge che non è necessaria, sebbene possa senz’altro aiutare, la conoscenza di Linux per utilizzare LR: grazie all’astrazione fornita dall’interfaccia a menu, fondamentale diviene conoscere i concetti, più che i comandi, ed in particolare il funzionamento di base di un sistema Unix, lo stack TCP/IP e gli script di shell.
Quelli del LRP promettono comunque che mano a mano che il loro progetto maturerà la curva di apprendimento per utilizzare la loro distribuzione scenderà sempre più: del resto configurare LR è già ora molto più facile che configurare i comuni router, sebbene le cose stiano rapidamente cambiando con l’arrivo dell’ultima generazione di network appliance.


Sulla pagina principale del LRP si trova una tabellina dove, a seconda del tipo di rete e dei compiti svolti, vengono indicate le risorse hardware necessarie per il PC che fa girare LR. Si parla di un arcaico 486 con 12 MB di RAM per fare il routing su di una rete Ethernet da 10 Mbps, di un Pentium 100 con 32 MB di RAM per una rete Ethernet da 100 Mbps, fino ad arrivare ad un Pentium 166 o superiore per una rete WAM.

Temo che nessuno, almeno per il momento, abbia anche soltanto preso in considerazione l’idea di mettere LRP a gestire il routing di una rete geografica, già più credibile la gestione di una rete metropolitana. E’ indubbio, comunque, che la vasta maggioranza dei potenziali utenti di LR siano interessati alle reti locali, piccole o grandi che siano. E’ proprio qui, infatti, che con poco lavoro ed un PC economico, meglio ancora se “riciclato”, è possibile ottenere i risultati migliori.

Si può utilizzare LRP a vari livelli: da banale instradatore di pacchetti fino a complesso sistema di firewalling e/o traduttore di indirizzi (NAT).

Configurare LRP come semplice router dir reti Ethernet da 10 o 100 Mbps è abbastanza banale: si prepara il dischetto di boot con l’immagine del kernel, si fa partire la macchina, si configura l’indirizzo IP della scheda di rete e della sottomaschera, ed il gioco, dal lato server, è praticamente fatto. Anche per un utilizzo così “banale”, e considerando di aver rimesso in sesto un vecchio 486 o Pentium, il risparmio rispetto ad un router commerciale può già arrivare ad un paio di milioni: naturalmente si dovrà preventivare anche l’acquisto di un hub, visto che la scheda di rete del PC ha una sola uscita.

Salendo di un gradino, possiamo pensare di far assegnare automaticamente al server LRP un indirizzo IP alle macchine della rete locale tramite DHCP (Dynamic Host Configuration Protocol): in questo modo si eviterà lo spreco o la sovrapposizione di indirizzi IP facilitando nel contempo la connessione alla rete di computer portatili o stazioni di lavoro temporanee.

Ma LRP, a dispetto di tanti router presenti sul mercato, può fare ben di più, sebbene questo implichi un maggior grado di esperienza da parte dell’utente. La funzionalità più interessante è quella offerta dall’IP masquerading, anche conosciuto come NAT: con questa tecnica è possibile assegnare indirizzi IP “fasulli” (privati) alle stazioni di lavoro e convertirli in un indirizzo IP “reale” (pubblico) al momento della connessione verso l’esterno (Internet). Esistono tre tipi di NAT: statico, condiviso (pooled) e a livello di porta (detto anche PAT, Port Address Translation). Il primo associa staticamente ad ogni indirizzo IP privato uno pubblico, il secondo fa la stessa cosa ma in modo dinamico, il terzo, e più conosciuto, utilizza invece un solo IP pubblico associando ad ogni connessione verso l’esterno due coppie di informazioni formate da e : in quest’ultimo caso un solo indirizzo IP può servire teoricamente migliaia di client e far risparmiare parecchio sui costi degli IP pubblici, oggi peraltro concessi davvero col contagocce (attendiamo con ansia IPv6 che dovrebbe espandere notevolmente lo spazio d’indirizzamento).

La spiegazione è molto frettolosa, ma richiederebbe solo questa un articolo a parte. Basti sapere che il PAT è senz’altro il tipo di IP masquerade più utilizzato in ambito SOHO, quindi in piccole e medie reti locali. Con LRP è possibile utilizzare ad esempio un semplice modem ISDN (altrimenti occorrerebbe un ben più costo modem/router) per “tirare su” la connessione solo quando c’è una richiesta dall’interno delle rete locale, risparmiando quindi sulla bolletta, e fare al volo la conversione di tipo PAT. Questa tecnica è ideale anche per connessioni fisse, come CDA, CDN o ADSL, e dovunque vi sia la necessità di condividere l’accesso ad Internet fra più stazioni di lavoro disponendo di un solo IP pubblico.

Un’altra possibilità interessante offerta da LRP è quella del bilanciamento del carico, una tecnica sempre basata sul NAT utilizzata per venire in soccorso a server sovraccarichi. In questo caso l’obiettivo è quello di suddividere il traffico di rete fra più server: in pratica si assegna ad un certo numero di IP privati un singolo IP pubblico: in questo modo le connessioni dirette dall’esterno a quel dato IP pubblico vengono ripartite in modo sequenziale fra il pool di IP privati.
Il bilanciamento del carico è molto spesso preferibile al DNS round-robin, una tecnica simile alla precedente ma che richiede la modifica delle tabelle DNS e può venire in parte vanificata dall’effetto di caching effettuato da tutti i client IP. Ma anche questa, è un’altra storia.

Per finire, LRP può fungere da ottimo sistema di firewalling, un’insieme di tecniche per la protezione delle reti private da numerose forme di attacco provenienti dall’esterno. Le politiche di firewalling e di filtraggio dei pacchetti, però, richiedono una conoscenza approfondita del problema: in poche parole, bisogna sapere con esattezza quello che si sta facendo. Persino il NAT può introdurre qualche forma di protezione da una parte, ma aprire dei grossi varchi dall’altra, senza un’attenta modifica delle politiche di sicurezza del router. Nelle FAQ del LRP si trova un esempio di configurazione di un firewall che può essere riadattato sulle esigenze di ognuno.

Gli esempi d’utilizzo del LR sono limitati solo dall’esperienza, dalla volontà e dalla creatività dell’utente: ogni servizio che qui ho citato, insieme ai molti altri che purtroppo non ho proprio lo spazio di trattare, possono naturalmente tutti girare sulla stessa macchina: un Pentium è spesso già più che sufficiente. Come suggerimento posso dire, per coloro che prevedono di utilizzare LR in una rete ad alto traffico, di non risparmiare sulla scheda di rete: un componente di marca, in condizioni limite, può fare la differenza rispetto ad un pezzo da supermercato.

La versione stabile corrente del LR è la 2.9.5pre che adotta il kernel 2.0.36, un po ‘ vecchiotto ma unanimemente riconosciuto come uno dei kernel più stabili di Linux. La versione 3.0 adotta invece un kernel molto più recente, il 2.2.14, ma trattandosi di una versione alpha gli autori ne sconsigliano l’uso per scopi diversi da quelli di testing.

Alessandro Del Rosso

La tua email sarà utilizzata per comunicarti se qualcuno risponde al tuo commento e non sarà pubblicato. Dichiari di avere preso visione e di accettare quanto previsto dalla informativa privacy

Chiudi i commenti