Il NAT (Network Address Translation)

Il NAT, definito dalla RFC 1631, è il processo che cambia un indirizzo IP con un altro indirizzo IP nell’header del pacchetto IP. In pratica, il NAT è usato per permettere a degli host che hanno un indirizzo IP privato di accedere a una rete con diverso indirizzamento, spessissimo usato per accedere a reti con indirizzamento pubblico come internet.


Un elaboratore abilitato a NATtare, ovvero a tradurre un indirizzo con un altro, può essere un computer Unix o un router che opera al confine di un dominio
STUB (una internetwork che ha un solo collegamento verso il mondo esterno). Quando un host nel dominio STUB vuole colloquiare con un host che si trova fuori da questo dominio, spedisce un pacchetto di dati con l’indirizzo IP di origine (Source Address) all'elaboratore abilitato a NATtare. Questo elaboratore NAT, ricevuto il pacchetto, lo processa ispezionando l’header IP e, se l’indirizzo IP sorgente corrisponde ad un indirizzo IP della sua NAT Table, sostituisce l’indirizzo IP sorgente (Inside Local IP Address) con un altro indirizzo IP globalmente unico (Inside Global IP Address). Questo nuovo indirizzo è l’ IP con il quale l’host viene mappato all’esterno. Tipicamente su internet, ma non solo.

In origine il NAT é nato per affrontare il problema dell’esaurimento degli indirizzi IP della rete pubblica, massimizzando quindi l'uso degli indirizzi IP pubblici assegnati. La traduzione di un indirizzo IP, è una soluzione che permette di utilizzare lo stesso indirizzo IP per l’accesso ad Internet di piú sottoreti interne all’organizzazione, riducendo di conseguenza la necessitá di utilizzare degli indirizzi IP registrati. In sintesi il NAT compie la traduzione degli Indirizzi IP Locali interni in Indirizzi IP Globali esterni e viceversa.

Indirizzi IP interni ed esterni

L’IETF ha definito, all’interno dello spazio di indirizzamento IP, alcuni range di indirizzi che sono riservati all’uso privato, da utilizzare cioè solamente in ambito privato (RFC 1918). Gli indirizzi privati sono indirizzi che non sono instradabili sulla rete pubblica ovvero, se un router pubblico riceve un pacchetto destinato ad un indirizzo IP privato, il pacchetto viene scartato.

Indirizzi IP per uso privato

(Classe A) da 10.0.0.0 a 10.255.255.255

(Classe B) da 172.16.0.0 a 172.31.255.255

(Classe C) da 192.168.0.0 a 192.168.255.255

Inoltre la rete 127.0.0.0 (di classe A) è normalmente usata dai sistemi operativi Unix come rete di “loopback”, per esempio il comando << ping 127.0.0.1 >> effettua un test sul funzionamento della rete ( e dei dispositivi di rete locali all’host come la NIC card) senza utilizzare realmente la rete.

Tipi di traduzioni NAT

La traduzione effettuata utilizzando il NAT può essere di due tipi: statica o dinamica.

Traduzione statica
La Traduzione Statica avviene quando il gestore della rete configura manualmente sulla macchina abilitata ad effettuare il NAT gli indirizzi in una tabella di NAT (NAT Table). Uno specifico indirizzo interno viene mappato uno specifico indirizzo esterno e viceversa in modalitá uno-a-uno. Gli indirizzi interni ed esterni sono configurati staticamente uno per uno.

Traduzione dinamica
La Traduzione Dinamica prevede che i router di confine NAT siano configurati con un elenco di indirizzi interni che devono essere tradotti, e con un elenco di indirizzi pubblici detto “pool” che può essere utilizzato per assegnare gli indirizzi esterni. Ci possono essere piú pool di indirizzi esterni. Quando un host interno accede alla rete pubblica, viene allocato per la traduzione del suo indirizzo privato uno degli indirizzi del pool. Questi indirizzi poi vengono disallocati (diciamo rilasciati) con un meccanismo di timeout. In questo modo piú host interni possono condividere un singolo indirizzo IP esterno in momenti diversi. Questa procedura permette di sfruttare al massimo lo spazio di indirizzamento pubblico.

I componenti del NAT

Il NAT viene effettuato dal router di confine (attenzione che il confine è un termine usato per la segmentazione “border”. Spesso si segmentano reti locali in diverse dmz o altri meccanismi e quindi il nat serve a far colloquiare host diversi ma appartenenti a una stessa struttura amministrativa come la LAN) . A questo router si assegna un indirizzo IP Globale pubblico sulla interfaccia verso la rete esterna, e un indirizzo IP privato sulla interfaccia verso la rete interna.

La funzionalità di NAT era disponibile inizialmente solo utilizzando dei firewall. Dalla versione di Cisco IOS 11.2 in poi questa funzionalitá è disponibile su tutti i router Cisco dotati di IOS di tipo IP-Plus. Dalla versione IOS 12.0 in poi questa funzionalitá è disponibile nella versione base IP-Only di tutti i modelli di router.


Terminologia usata

Vediamo nel seguito la terminologia utilizzata nell’ambito del NAT:

Inside Local IP address – Si tratta degli indirizzi assegnati agli host della rete interna privata (STUB network). Questi indirizzi sono di norma inseriti in una parte della tabella NAT e precisamente nella parte riguardante la rete privata interna. Questi indirizzi sono unici all’interno della rete interna.

Inside Global IP address – Si tratta di un indirizzo IP che rappresenta in un certo momento uno o piú indirizzi locali interni sulla rete pubblica. Questi indirizzi fanno parte della tabella NAT del router e piú precisamente della colonna corrispondente agli indirizzi IP pubblici. Si tratta di un indirizzo pubblico assegnato da uno spazio di indirizzi globalmente unico dal provider di servizi Internet (ISP).

Outside global IP address – Si tratta di un indirizzo IP che è stato assegnato ad un host sulla rete Internet. É un indirizzo pubblico instradabile su Internet.

Simple translation – Traduzione semplice di un indirizzo IP verso un altro indirizzo IP (uno-a-uno).

Extended translation – Traduzione di tipo esteso. Ad una coppia composta da un indirizzo IP (inside local) e da un numero di porta viene associato un altro indirizzo IP (inside global) e un altro numero di porta. Questa modalitá serve come vedremo nel seguito ad effettuare il cosiddetto “overload”.


Quando si deve utilizzare il NAT?

Si utilizza il NAT se:

* Si ha la necessità di connettersi ad Internet ed i propri host non hanno indirizzi IP globalmente unici (pubblici).
* Si cambia il proprio ISP con uno nuovo che costringe a rinumerare di nuovo la propria rete.
* Bisogna fondere due intranet che hanno gli stessi indirizzi IP.
* Si vuole nascondere all’esterno la numerazione interna della rete.

Il NAT risolve i problemi di indirizzamento

La tecnologia NAT permette ad una internetwork privata che usa indirizzi IP privati a connettersi ad una rete pubblica come Internet. Un router NAT è posizionato sul confine tra un dominio STUB (rete interna) ed una rete pubblica (rete esterna), e traduce gli indirizzi locali interni in indirizzi IP globalmente unici prima di spedire pacchetti alla rete esterna.

Il NAT approfitta del fatto che relativamente pochi host, in un dominio STUB, comunicano fuori del dominio in un determinato periodo di tempo. Perciò, solamente un sottoinsieme degli indirizzi IP in un dominio STUB deve essere tradotto in un indirizzo IP globalmente unico per comunicare con l’esterno in un dato momento.

Esempi di utilizzo del NAT
Il NAT puó essere impiegato anche quando due società che hanno identici schemi di indirizzamento interno si fondono, oppure quando una società cambia il suo Internet Service Provider (ISP) ma non vuole cambiare il suo schema di indirizzamento interno.

Nessun commento: