Agli albori di internet, i “padri” progettisti di Internet pensarono di utilizzare 32 bit per ciascun indirizzo IP, pensando che 4,2 miliardi di indirizzi disponibili bastassero a coprire qualsiasi host nel globo terrestre. In effetti, negli anni 80 Internet non era poi cosi esteso. Si pensi, ad esempio, che in Italia la prima connessione ad Internet tramite un computer avvenne solamente nel 1986. Dagli anni 90 in poi, Internet ha visto un incremento sempre costante di nuove connessioni grazie allo sviluppo del WWW e dei device mobili e le connessioni dati. Gli indirizzi IPv4 non erano più sufficienti a coprire il numero sempre più vasto di dispositivi in rete. Inoltre, la disponibilità di 4.294.967.296 (ovvero 2^32) è solamente un numero teorico, poichè esistono delle combinazioni di indirizzi IP riservati per usi specifici che gli ISP non potevano utilizzare.
Il motivo principale per cui è stata sviluppata la tecnologia NAT è stato quello di prevenire il rapido esaurimento degli indirizzi IPv4. NAT (Network Address Translation) consente a un dispositivo di rete (come un router, un firewall o un server che esegue sistemi operativi di rete come Windows 2008, Windows 2012, GNU Linux o Unix) di tradurre gli indirizzi tra Internet pubblico e una rete privata locale LAN.
In che modo questa traduzione può salvare gli indirizzi IPv4 in costante esaurimento? La risposta è l’uso di un intervallo privato di indirizzi IPv4. Esistono intervalli predefiniti di indirizzi IPv4 privati che possono essere utilizzati per configurare dispositivi per uso privato (es. All’interno di una rete aziendale, all’interno di una rete domestica, all’interno di una rete alberghiera ecc.).
In altre parole il traffico originato o destinato a indirizzi IPv4 privati non può “uscire” dalla rete privata. Questo è il lavoro svolto essenzialmente dal router. Ciò consente la riutilizzabilità di indirizzi IPv4 privati in diverse reti private. Non vi è alcun conflitto di indirizzi IPv4 tra due indirizzi IPv4 privati separati da dispositivi router NAT, perché gli indirizzi IPv4 privati vengono tradotti in indirizzi IPv4 pubblici univoci a livello globale, quando escono dalla propria rete.
NAT quindi consente a un solo indirizzo IPv4 unico a livello globale di rappresentare un’intera rete per il mondo esterno.
Diamo i numeri: intervalli privati di indirizzi IPv4
I seguenti intervalli di indirizzi IPv4 sono riservati per le reti private (esempio: una rete locale (LAN) aziendale o una rete domestica).
Ogni rete o subnet ha un indirizzo di broadcast riservato, che consente a tutti i partecipanti della rete di inviare un broadcast corrispondente. Se tutti i bit dell’host sono impostati sul valore binario 1, si tratta di un indirizzo di broadcast. Se invece tutti i bit dell’host sono impostati sul valore 0, si tratta dell’indirizzo della corrispondente subnet.
Classe A, prefisso intervallo: 10.0.0.0/8.
- Gli indirizzi IPv4 privati di classe A iniziano da 10.0.0.0 a 10.255.255.255.
- 10.0.0.0/8 è l’indirizzo IPv4 della rete e 10.255.255.255 è l’indirizzo IPv4 di broadcast.
- È composto da un totale di 16.777.216 indirizzi IPv4. L’intervallo di classe A di indirizzi IPv4 privati viene utilizzato per reti di grandi dimensioni che necessitano di indirizzi IPv4 di pool più grandi.
Classe B, prefisso intervallo: 172.16.0.0/12.
- Gli indirizzi IPv4 privati di classe B iniziano da 172.16.0.0 a 172.31.255.255.
- 172.16.0.0 è l’indirizzo IPv4 della rete (per la rete 172.16.0.0/16) mentre 172.31.255.255 è l’indirizzo IPv4 di broadcast per la rete 172.31.0.0/16.
- È composto da un totale di 1.048.576 indirizzi IPv4. L’intervallo di classe B di indirizzi IPv4 privati viene utilizzato per reti di medie dimensioni.
Classe C, prefisso intervallo: 192.168.0.0/16
- Indirizzi IPv4 privati di classe C iniziano da 192.168.0.0 a 192.168.255.255.
- 192.168.0.0 è l’indirizzo IPv4 della rete 192.168.0.0/24 mentre 192.168.255.255 è l’indirizzo IPv4 di broadcast per la rete 192.168.255.0/24.
- È composto da un totale di 65.536 indirizzi IPv4. L’intervallo di classe C di indirizzi IPv4 privati viene utilizzato per reti di piccole dimensioni.
SNAT
Static Network Address Translation o NAT statico: è il mapping uno a uno tra gli indirizzi IPv4 privati e gli indirizzi IPv4 pubblici. Il NAT statico richiede di avere un indirizzo IPv4 pubblico per ogni indirizzo IPv4 privato nella rete interna. Pertanto, la conservazione dell’indirizzo IPv4 non è possibile utilizzando NAT statico. Il vantaggio principale di NAT statico è che il NAT statico consente a un computer di una rete remota di avviare una connessione a un server all’interno della rete, configurato con un indirizzo IPv4 privato.
Il NAT statico consente di raggiungere un server dall’interno della rete (configurato con un indirizzo IPv4 privato), come un server Web o un server di posta, su Internet.
Il concetto di traduzione dell’indirizzo di NAT statico e NAT dinamico è simile. Sia NAT statico che NAT dinamico traducono gli indirizzi IPv4 di origine / destinazione. La differenza è solo che il NAT statico è una traduzione uno-a-uno e il NAT dinamico è una traduzione molti-a-uno.
DNAT
Dynamic Network Address Translation o NAT dinamico: può essere definito come mappatura di un indirizzo IP privato su un indirizzo IP pubblico da un gruppo di indirizzi IP pubblici chiamato pool NAT (è un insieme di indirizzi IP contigui, specificato con un indirizzo IP iniziale, un indirizzo IP finale e la sua maschera di sottorete). Il NAT dinamico stabilisce un mapping uno a uno tra un indirizzo IP privato e un indirizzo IP pubblico. Qui l’indirizzo IP pubblico viene preso dal pool di indirizzi IP configurati sul router NAT finale. Il mapping da pubblico a privato può variare in base all’indirizzo IP pubblico disponibile nel pool NAT.
Quando un computer della rete privata invia un datagramma IP alla rete esterna, il dispositivo DNAT traduce l’indirizzo IP di origine con un indirizzo IP pubblico e viene inoltrato alla rete pubblica.
PAT
Port Address Translation: è un altro tipo di NAT dinamico che può mappare più indirizzi IPv4 privati a un singolo indirizzo IP pubblico utilizzando una tecnologia nota come Port Address Translation. La traduzione dell’indirizzo di porta è anche chiamata sovraccarico NAT. Port Address Translation (PAT / NAT Overload) è la tecnologia NAT che impedisce l’esaurimento dell’indirizzo IPv4 .
La traduzione dell’indirizzo della porta (sovraccarico PAT / NAT) può mappare più indirizzi IPv4 privati su un singolo indirizzo IP pubblico utilizzando diverse porte di origine.
Nel sovraccarico NAT, quando un computer da una rete interna (configurato con un indirizzo IPv4 privato) comunica con un altro computer in Internet, il dispositivo NAT (router) cambia il numero di porta di origine (TCP o UDP) con un altro numero di porta. Questi mapping delle porte TCP o UDP sono conservati in una tabella nella memoria del router. Successivamente, quando il dispositivo NAT (router) riceve una risposta da Internet, il router può utilizzare la tabella in cui vengono conservati i mapping delle porte e inoltrare il pacchetto di dati IPv4 al mittente originale.
Vantaggi e svantaggi delle NAT
La tecnologia Network Address Translation (NAT) presenta molti vantaggi e svantaggi.
Vantaggi della NAT
- può impedire l’esaurimento degli indirizzi IPv4 (vantaggio principale).
- può fornire un ulteriore livello di sicurezza rendendo nascosti gli indirizzi di origine e di destinazione originali.
- offre una maggiore flessibilità durante la connessione a Internet pubblica.
- consente di utilizzare il proprio sistema di indirizzamento IPv4 privato e impedire la modifica dell’indirizzo interno se si cambia fornitore di servizi.
Svantaggi della NAT
- è una tecnologia che consuma risorse e memoria, poiché NAT (Network Address Translation) deve tradurre gli indirizzi IPv4 per tutti i datagrammi IPv4 in entrata e in uscita e mantenere in memoria i dettagli della traduzione.
- può causare ritardi nella comunicazione IPv4.
- causa la perdita della tracciabilità IP del dispositivo finale
- alcune tecnologie e applicazioni di rete non funzioneranno come previsto in una rete configurata NAT (Network Address Translation) .