Network Address Translation (NAT) |
Sabato 15 Dicembre 2012 17:24 |
Nel campo delle reti telematiche, il network address translation o NAT, ovvero traduzione degli indirizzi di rete, conosciuto anche come network masquerading, native address translation, è una tecnica che consiste nel modificare gli indirizzi IP dei pacchetti in transito su un sistema che agisce da router all'interno di una comunicazione tra due o più host.
Sono molto note anche alcune tipologie specifiche di NAT, come l'IP masquerading e il port forwarding.
Tipi di NAT
Il NAT è spesso implementato dai router e dai firewall.
Si può distinguere tra source NAT (SNAT) e destination NAT (DNAT), a seconda che venga modificato l'indirizzo sorgente o l'indirizzo destinazione del pacchetto che inizia una nuova connessione.
I pacchetti che viaggiano in senso opposto verranno modificati in modo corrispondente, in modo da dare ad almeno uno dei due computer che stanno comunicando l'illusione di parlare con un indirizzo IP diverso da quello effettivamente utilizzato dalla controparte.
Per implementare il NAT, un router ha quindi bisogno di effettuare il tracciamento delle connessioni, ovvero di tenere traccia di tutte le connessioni che lo attraversano. Per "connessione" in questo contesto si intende un flusso bidirezionale di pacchetti tra due host, identificati da particolari caratteristiche a livelli superiori a quello di rete (IP):
Source NAT
Nel source NAT, le connessioni effettuate da uno o più computer vengono alterate in modo da presentare verso l'esterno uno o più indirizzi IP diversi da quelli originali. Quindi chi riceve le connessioni le vede provenire da un indirizzo diverso da quello utilizzato da chi effettivamente le genera.
Motivazioni
Storicamente il NAT si è affermato come mezzo per ovviare alla scarsità di indirizzi IP pubblici disponibili, soprattutto in quei paesi che, a differenza degli USA, hanno meno spazio di indirizzamento IP allocato pro-capite.
IP masquerading
Viene detto IP masquerading (a volte NAT dinamico) un caso particolare di source NAT, in cui le connessioni generate da un insieme di computer vengono "presentate" verso l'esterno con un solo indirizzo IP. La tecnica è detta anche Port Address translation (PAT), IP Overloading o NAPT (Network Address and Port Translation), in quanto vengono modificati non solo gli indirizzi IP ma anche le porte TCP e UDP delle connessioni in transito.
Questo metodo prevede di individuare una rete "interna" (che tipicamente utilizza indirizzi IP privati) ed una "esterna" (che tipicamente utilizza indirizzi IP pubblici), e permette di gestire solo connessioni che siano originate da host della rete "interna".
Ciascuna connessione TCP o UDP viene gestita individualmente: quando la connessione viene iniziata, la porta sorgente originale può essere modificata, e il router NAT mantiene una tabella di corrispondenze tra porte sull'indirizzo esterno e corrispondenti porte e indirizzi IP privati. Quando riceve un pacchetto TCP o UDP sull'indirizzo IP esterno, consulta la tabella per sapere a quale host interno e su quale porta inviarlo. Il router NAT deve quindi tenere traccia di tutte le connessioni TCP e UDP attive tra la rete interna e quella esterna (e preoccuparsi di eliminare le voci inutilizzate da questa tabella mediante un meccanismo di scadenza). Alcune implementazioni modificano sistematicamente le porte sorgente di tutte le connessioni, utilizzando tipicamente numeri di porte molto alti (tipicamente sopra 61000), altre tendono a mantenere i numeri di porta originali, e li modificano solo se un numero di porta sorgente è utilizzato da due host contemporaneamente.
Un esempio di comunicazione mascherata.
Questa tecnica è spesso usata per collegare le Intranet (reti private sviluppate sul modello di Internet) ad Internet, permettendo di mantenere un piano di indirizzamento IP che non permetterebbe la connessione diretta ad internet, di risparmiare indirizzi IP pubblici e di "nascondere" all'esterno una rete privata. In una intranet, gli host utilizzano normalmente indirizzi IP privati, e necessitano di un dispositivo che possa effettuare la traduzione da indirizzo IP privato (valido nella sola Intranet) ad indirizzo IP pubblico (quindi utilizzabile in Internet), questo dispositivo può essere un host multicollegato che effettui relaying a livello 3 oppure un tipico router.
Alcuni host possono, però, avere la necessità di utilizzare un proprio ben determinato indirizzo pubblico in uscita pur conservando il proprio indirizzo privato. In questo caso tramite il NAT statico si può fare una mappatura 1:1 in cui è garantito il mascheramento ma l'unicità dell'host in uscita permette di tradurre solamente l'indirizzo IP sorgente lasciando inalterata la porta TCP/UDP.
Destination NAT
Nel destination NAT, le connessioni effettuate da uno o più computer vengono alterate in modo da venire redirette verso indirizzi IP diversi da quelli originali. Quindi chi effettua le connessioni si collega in realtà con un indirizzo diverso da quello che seleziona.
Possibili usi del destination NAT
Double NAT
Talvolta è necessario far comunicare tra loro due LAN, entrambe connesse ad Internet tramite IP masquerading (ad esempio, due sedi di una stessa azienda). In questi casi viene generalmente utilizzata una VPN (Virtual Private Network) tra i due router che connettono le reti ad Internet, indirizzando sulla VPN il traffico tra le due LAN.
In alcuni casi però capita che le LAN utilizzino gli stessi range di indirizzi IP, quindi non è possibile collegarle direttamente, ma sarebbe necessario rinumerare una delle due reti, ovvero riassegnare indirizzi IP in una diversa sottorete a tutti gli host. Questa operazione è normalmente faticosa, comporta disservizi e spese, per cui spesso si preferisce ricorrere a configurazioni di "double NAT", che nascondono reciprocamente le due reti, permettendo loro di comunicare come se non usassero indirizzi IP sovrapposti.
Le configurazioni di double NAT possono essere descritte come combinazioni di Source e Destination NAT.
NAPT
I Network Address and Port Translation o NAPT sono simili ai Network Address Translation, ai quali viene aggiunta la funzione di tradurre anche le porte e, quindi, dare una diversa mappatura delle porte rispetto a quella vista dall'esterno.
Quando un software chiede l'uso di una determinata porta, che risulta chiusa, il NAPT entra in funzione traducendola e reindirizzandola su una seconda porta aperta.
Con questa mappatura ci si riserva la possibilità di utilizzare un software anche da remoto senza aprire porte che potrebbero essere soggette ad eventuali attacchi di virus o Hacker.
Problematiche
Il NAT non è ben visto dai puristi delle reti, in quanto mina profondamente la semplicità di IP, e in particolare viola il principio della comunicazione "da qualsiasi host a qualsiasi host" (any to any). Questa critica "filosofica" si ripercuote in conseguenze pratiche:
Collegamenti esterni
|
Ultimo aggiornamento Sabato 15 Dicembre 2012 17:32 |