Qualche settimana fa vi abbiamo parlato di NETCAT: il coltellino svizzero delle reti, soprannominato "il coltellino svizzero delle reti" per la sua versatilità e la possibilità di essere impiegato nelle più svariate situazioni. Abbiamo addirittura fatto esempi di come sia possibile usarlo per la creazione di applicazioni client-server. Questo fantastico programma ha però alcune limitazioni: lo sviluppo di Internet porterà a breve la sempre più massiccia diffusione di IPv6, protocollo non supportato da questo programma.
Per chi non fosse pratico di protocolli di rete forse sarebbe bene fare un passo indietro. La trasmissione dei dati su Internet si basa per lo più sul protocollo TCP/IP, che può essere interpretato come un'insieme di "regole" che garantiscono la comunicazione tra due host (come ad esempio un PC collegato a Internet da un ufficio e un sito Web) in maniera affidabile. Alla trasmissione dei pacchetti ci pensa il protocollo IP (che consente di tener traccia dell'indirizzo del mittente e del destinatario), sul quale si appoggia il TCP per la trasmissione vera e propria dei dati.
Attualmente il protocollo IP più utilizzato su scala mondiale è quello relativo alla versione 4 (detto appunto IPv4). Ma le cose sono destinate a cambiare a breve. Infatti gli indirizzi IPv4 ancora liberi e quindi disponibili iniziano seriamente a scarseggiare, nonostante un indirizzo IPv4 sia composto da 32 bit e per un totale quindi di oltre 4 miliardi di indirizzi rappresentabili. Stando a questi dati sembra che apparentemente non ci sia nulla di cui preoccuparsi: due abitanti del globo su tre potrebbero disporre di proprio indirizzo Internet personale.
Purtroppo però questo numero si riduce a causa della presenza di indirizzi "riservati". La pessima politica di gestione riguardo l'assegnazione di questi ha fatto il resto. In passato infatti, quando ancora non si immaginava che Internet avrebbe avuto il successo dei giorni nostri, si è assistiti a un grande sperpero nella distribuzione (ad esempio poteva capitare tranquillamente che chi avesse bisogno di 1000 IP, chiedesse un'intera classe B, equivalente a 65.534 indirizzi). Questo (e altri fattori) ha portato a una situazione critica che necessita assolutamente di una soluzione nell'immediato futuro, pena l'impossibile ulteriore sviluppo di Internet.
Per fortuna si è cercati di correre ai ripari con la creazione di IPv6, il successore del protocollo attualmente più usato ma destinato a essere sostituito nel prossimo futuro. Tra i vantaggi maggiori c'è proprio la grande disponibilità di IP, dovuta alla dimensione di bit con i quali è rappresentabile da 128 bit (distinguibile da IPv4 perché è nella forma X:X:X:X:X:X:X:X, dove ogni campo, di 16 bit, è espresso in base esadecimale). Questo significa che sono possibili 2^128 combinazioni di bit, per un totale di 3,4*10^38 (approssimati per difetto)!. Questo permetterà di soddisfare la richiesta di IP per almeno qualche decennio, considerando anche l'ipotesi che probabilmente in futuro anche un comune elettrodomestico potrà avere la possibilità di essere collegato alla Rete. La transizione è tutt'altro che semplice: la necessità di convertire il software attuale al nuovo protocollo o di sostituire o aggiornare dispositivi hardware, è un grosso ostacolo.
Dopo questa lunga introduzione, necessaria per far comprendere il problema, vi sarà più facile capire il limite di netcat: è necessario, come per gran parte del software disponibile, un "porting" in direzione del nuovo protocollo. Per questo alcuni membri del LUG di Ferrara (www.ferrara.linux.it) hanno dato il via al progetto chiamato "Project6" (project6.ferrara.linux.it), con lo scopo di favorire la ricerca e lo sviluppo di programmi per Linux in direzione IPv6, aiutare chi ne avesse bisogno a implementare il nuovo protocollo, fornendo tutto il supporto necessario.
Fiore all'occhiello di questo progetto è proprio la riscrittura di netcat (chiamato nc6) in chiave IPv6, sviluppata da Mauro Tortonesi con il contributo di Simone Piunno. Il progetto è agli inizi (ha poco più di 9 mesi di vita), ma promette decisamente bene. Tra gli obiettivi raggiunti c'è già il pieno supporto a IPv6 e al protocollo UDP (l'originario netcat è abbastanza carente in questo), ovviamente ampie migliorie e nuove feature oltre che a una gestione avanzata dell' I/O e dei buffer interni e una maggiore leggibilità del codice rispetto a netcat (molto utile per chi voglia comprendere il funzionamento di questo programma).
In futuro si punta all'inclusione di funzionalità di portscanning (non esiste tuttora un portscanner IPv6 del livello di nmap), supporto SSL, funzionalità di logging ascii, e source-routing (non disponibile nella versione IPv4). Tutto il codice, completamente scritto sotto licenza GPL, non riutilizza in nessuna parte quello scritto per il progetto originario. Si è trattato quindi di una riscrittura da zero, che ha permesso, e permetterà in futuro, di apportare delle modifiche e aggiunte interessanti. I sistemi operativi supportati per ora sono oltre che Linux anche FreeBSD (grazie al porting effettuato da Filippo Natali) e OpenBSD.
Credo che l'uso di questo programma da parte di chiunque abbia interesse verso IPv6 (interesse che diventerà sempre più una necessità con il trascorrere del tempo), possa aiutare la comprensione di questo "nuovo" protocollo. Inoltre permetterà agli autori di questo progetto di avere sempre maggiore feedback da parte dei propri utenti, per non parlare di aiuti nello sviluppo del programma. Sul sito http://project6.ferrara.linux.it/sections/lists.php è anche possibile iscriversi alla mailing list del progetto, medium "virtuale" di comunicazione tra gli utenti e sviluppatori. Nc6 è scaricabile dall'URL http://project6.ferrara.linux.it/sections/sources.php, oppure è possibile collegarsi al CVS via Web (http://cvs.ferrara.linux.it).