Network address translation
Da Wikipedia, l'enciclopedia libera.
Nel campo delle reti telematiche, il network address translation o NAT, ovvero traduzione degli indirizzi di rete, è una tecnica che consiste nel modificare gli indirizzi IP dei pacchetti in transito su un sistema.
Il NAT è spesso implementato dai router e dai firewall.
Si può distinguere tra source NAT (SNAT) e destination NAT (DNAT), a seconda che vengano 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.
Indice |
[modifica] 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 le genera.
[modifica] IP masquerading
Viene detto IP masquerading 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. A ciascuna connessione viene assegnata una diversa porta TCP o UDP, e il dispositivo che effettua il NAT associa ciascuna porta una connessione generata da un particolare host "interno". Per questo, la tecnica è detta anche Port Address translation (PAT) o IP Overloading.
Questa tecnica è spesso usata per collegare le Intranet (reti private sviluppate sul modello di Internet) ad Internet.
In una intranet, gli host collegati alla subnet utilizzano normalmente indirizzi IP privati (del tipo 192.168.x.x, 172.16.x.x o 10.x.x.x) 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.
Questa tecnica viene ampiamente usata per risparmiare indirizzi IP pubblici e per "nascondere" dall'esterno una rete privata.
[modifica] 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..
[modifica] Possibili usi del destination NAT
- Port forwarding: in una configurazione di Masquerading, può essere necessario che alcuni host o servizi di rete ospitati sulla rete "mascherata" siano accessibili dall'esterno. Per ottenere questo, viene utilizzata una configurazione detta Port forwarding, per cui le connessioni verso una determinata porta TCP o UDP dell'indirizzo esterno vengono redirette verso un particolare host della rete interna.
- Bilanciamento del carico di lavoro: tramite il destination NAT si può realizzare un sistema in cui una connessione destinata ad un indirizzo IP viene reindirizzata a un altro indirizzo scelto tra quelli di un insieme di server che si hanno a disposizione. Questo permette di distribuire il carico di lavoro tra diversi server, migliorando così le prestazioni del servizio di rete offerto dal sistema.
- Gestione dei fallimenti: il destination NAT può essere usato per realizzare un sistema ad alta disponibilità. Un sistema di questo tipo deve essere sempre in grado di offrire il servizio di cui è responsabile. Tutti i server sono soggetti a possibili fallimenti. Se si fa uso di un router con destination NAT, il router può rilevare il fallimento del server principale e reindirizzare le connessioni a un server secondario, mantendo così il servizio attivo.
- Trasparenza del servizio di proxy: il destination NAT può reindirizzare le connessioni (ad esempio HTTP) a un server speciale, chiamato proxy, che ha a disposizione una memoria temporanea in cui memorizza il contenuto di siti web visitati in precedenza. Se la connessione richiesta da un client è verso un indirizzo di cui il proxy ha già a disposizione il contenuto, esso invierà al client i dati richiesta senza la necessità di effettuare una vera connessione a Internet. Questa tecnica è usata dagli Internet Service Provider per ridurre l'uso della banda di trasmissione senza richiedere ai client di configurare il loro browser per il supporto del proxy, anche se ci sono delle controindicazioni.
[modifica] 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.
[modifica] 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:
- Le configurazioni NAT possono diventare molto complesse e di difficile comprensione.
- L'apparato che effettua il NAT ha bisogno di mantenere in memoria lo stato delle connessioni attive in ciascun momento. Questo a sua volta viola un principio insito nella progettazione di IP, per cui i router non devono mantenere uno stato relativo al traffico che li attraversa.
- Possono essere necessarie grandi quantità di memoria sul router
- I protocolli di alta disponibilità del router, come HSRP, diventano molto più complessi da realizzare, perché è necessario che il router di backup mantenga sempre aggiornata una copia della tabella NAT del principale.
- Alcune applicazioni inseriscono nel carico pagante dati relativi al livello IP o TCP/UDP. Questo rende difficile attraversare un NAT, ed è necessario che il dispositivo NAT analizzi il traffico di controllo riscrivendo queste informazioni.
[modifica] Voci correlate
- Port forwarding: un tipo particolare di DNAT.
- Port Address Translation
- iptables: il programma per configurare il NAT sui sistemi Linux.
- STUN : acronimo di Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs).