NAT: la traduzione degli indirizzi di rete sul router

Da giugno 2012 con la sesta versione del protocollo Internet (IPv6) viene messa a disposizione una soluzione per la crescente carenza di indirizzi IP. Ma il passaggio al nuovo standard Internet procede lentamente.

Secondo una statistica di Google, ad ottobre 2016 più dell’85 % degli utenti in tutto il mondo utilizzavano ancora il sorpassato standard Internet IPv4. Ma i 4,3 miliardi di indirizzi non bastano più da tempo a garantire la connessione a Internet con IP univoci per la moltitudine di dispositivi presenti. Non solo i computer, ma anche i tablet e gli smartphone richiedono un accesso al mondo online. Se poi si guarda al fenomeno emergente di Internet of Things (IoT) sono i frigoriferi stessi, le bilance e le macchinette per il caffè a trasformarsi in apparecchi intelligenti.

L’IPv4 compensa il problema della scarsità degli indirizzi già dai primi anni ’90 tramite una chiara divisione tra spazi di indirizzi privati e pubblici. Nelle reti locali (LAN) i dispositivi che si connettono a Internet vengono indirizzati con gli indirizzi IP privati in locale e collegati alla rete delle reti tramite un IP pubblico comune. Il router è quello che svolge il ruolo di interfaccia principale tra lo spazio di indirizzamento pubblico e privato. Qui avviene la Network Address Translation, abbreviata in NAT.

Che cos’è il NAT?

L’acronimo NAT sta per Network Address Translation, cioè una traduzione di indirizzi tra due reti che avviene solitamente nel router. Lo scopo di questo procedimento è quello di collegare le reti locali a Internet. Così si distingue tra due tipi diversi di traduzione degli indirizzi: source NAT (SNAT) e Destination NAT (DNAT).

Source NAT

Gli utenti privati entrano in contatto con la traduzione degli indirizzi di rete per la maggior parte sotto forma di source Nat (tradotto letteralmente in italiano: “sorgente NAT”). Il procedimento si applica sia nelle reti domestiche sia in quelle aziendali, quando un dispositivo di rete con un indirizzo IPv4 privato deve accedere a un indirizzo IP pubblico su Intenet. Nell’uso linguistico il termine NAT non viene però sempre usato in maniera restrittiva.

Spiegazione del termine: NAT vs. PAT

Essenzialmente si deve distinguere se ogni singolo indirizzo IP privato viene assegnato in una rete locale a un proprio indirizzo IP pubblico (traduzione 1:1) o se tutti i dispositivi di rete si dividono lo stesso IP pubblico (traduzione n:1).

In realtà si parla di Network Address Translation solo in una traduzione 1:1 in senso letterale, visto che in questo caso vengono riscritti solo gli indirizzi di rete, invece la traduzione n:1 richiede in aggiunta un adattamento del numero della porta. Questo procedimento viene perciò indicato come PAT (Port Address Translation) o NAPT (Network Address and Port Translation).

Visto che il concetto di PAT si presenta come caso standard nelle reti domestiche e aziendali, questo procedimento viene indicato spesso nell’uso linguistico generale in modo inesatto come NAT. I termini comuni come router NAT o tabella NAT vengono utilizzati anche per i concetti PAT. Quindi quando si parla di NAT oggi si intende la maggior parte delle volte la tecnica PAT o NAPT.

Funzionamento del Port Address Translation (PAT)

Di norma la traduzione dell’indirizzo di rete viene usata sotto forma di PAT per collegare a Internet più dispositivi locali tramite un indirizzo IP comune.

Visto che gli IP privati non sono instradabili (quindi non hanno alcuna importanza su Internet), i pacchetti che un computer (client) nella LAN invia a un server su Internet vengono dotati dal router di un IP pubblico. Per fare ciò questo scambia l’indirizzo IP del client contenuto nell’header del pacchetto con il proprio indirizzo IP pubblico. Inoltre il numero di porta usato internamente viene sostituito con una porta libera del router che risulta così per i server su Internet il mittente di tutti i pacchetti, inviati dalla rete locale.

Tutte le informazioni di connessione (indirizzi IP, porte o timeout) vengono memorizzati nella cosiddetta tabella NAT (in realtà si dovrebbe parlare anche qui di una tabella PAT). Se il server indirizzato risponde alla richiesta del computer locale con un pacchetto, questo viene inviato alla porta relativa del router che ha ora il compito di assegnare al pacchetto in entrata il relativo dispositivo di rete il quale ha avviato la richiesta. Tutto quello che serve al router sono le informazioni di connessione memorizzate nella tabella NAT. Chiariamo con un esempio:

prendiamo il caso che a un router sia stato assegnato da un Internet Service Provider (ISP) un indirizzo IP pubblico 217.229.111.18 e funge così da standard gateway per una rete locale. Questa rete mette a disposizione dei dispositivi di rete lo spazio di indirizzamento IP privato 192.168.0.0/24 (quindi tutti gli indirizzi da 192.168.0.0 fino a 192.168.0.24). Se ora uno di questi dispositivi (ad esempio un computer con l’indirizzo IP privato 192.168.0.2) instaura una connessione a Internet (ad esempio a un web server con l’IP pubblico 71.123.239.82 al numero di porta 80), questo occupa una porta interna (ad esempio la 22433) e trasmette il comando di instaurare la connessione al router inserito come standard gateway. Il router è indirizzabile internamente con l’IP privato 192.168.0.1 e comunica all’esterno con l’indirizzo IP pubblico 217.229.111.18.

Il router riceve così le seguenti informazioni: il dispositivo 192.168.0.2 vuole stabilire una connessione con la porta 22433 a 71.123.239.82 sulla porta 80. Per venire incontro a questo desiderio, il router deve sostituire l’indirizzo sorgente del dispositivo LAN (indirizzo IP e numero di porta) con il proprio indirizzo del mittente. Occupa perciò una qualsiasi porta libera (ad esempio la 61001) e inizia la traduzione degli indirizzi di rete: quindi 192.168.0.2:22433 viene convertito in 217.229.111.18: 61001. Tutte le informazioni importanti vengono memorizzate nella tabella NAT sul router.

IP privato del client Porta del client IP pubblico del router Porta pubblica del router
192.168.0.2 22433 217.229.111.18 61001

Una volta giunta al web server, la richiesta viene elaborata e, se possibile, risposta con il pacchetto richiesto (ad esempio vengono inviati i dati di un sito). Questa risposta raggiunge prima di tutto il router e viene inoltrato grazie alle informazioni di connessione memorizzate: secondo la tabella NAT, la porta esterna 61001 è riservata per i pacchetti di risposta che sono da inviare alla porta 22433 del dispositivo di rete 192.168.0.2.

Accanto agli indirizzi IP e ai numeri di porta, i router annotano nella tabella NAT una marca temporale per ogni connessione. Ciò serve come timeout e indica quando la voce coinvolta può essere eliminata. Così si può assicurare che le porte non rimangano aperte costantemente in caso di inattività e si trasformino possibilmente in uno spiraglio per gli attacchi hacker.

Destination NAT

Mentre il source NAT permette le connessioni dalla LAN a Internet, il destination NAT viene utilizzato per rendere raggiungibile permanentemente un dispositivo locale per delle connessioni in entrata da Internet. Perciò una porta pubblica viene collegata tramite la configurazione router permanentemente con l’indirizzo IP di un dispositivo di rete locale. Tutti i pacchetti che arrivano dalla relativa porta vengono così inoltrati automaticamente all’indirizzo di destinazione locale. Si parla in questo caso di port forwarding.

Questo procedimento viene ad esempio utilizzato quando devono essere messi a disposizione i servizi server dalla LAN verso l’esterno su Internet. Le porte aperte rappresentano però un rischio per la sicurezza. Si consiglia perciò di proteggere la rete locale dal traffico dati proveniente da Internet facendo in modo che i dispositivi indirizzabili tramite port forwarding vengano isolati in zone demilitarizzate (DMZ).

NAT: segno distintivo di sicurezza o vulnerabilità?

La traduzione degli indirizzi di rete sul router viene discussa per via della netta separazione tra LAN e Internet come segno distintivo di sicurezza. La presunta funzione di protezione è però solo un effetto collaterale. Le tecniche NAT e PAT sono state sviluppate per contrastare la carenza di indirizzi IPv4, quindi il procedimento non può sostituire le funzioni di un firewall o di un filtro di pacchetti.

Ciò nonostante NAT e PAT offrono agli utenti nelle reti private un sufficiente grado di protezione della sfera privata. Visto che tutti i dispositivi locali di una LAN IPv4 passano dallo stesso indirizzo IP pubblico in rete, gli utenti navigano più o meno in modo anonimo. Il singolo host dietro il router di rete non è direttamente indirizzabile tramite Internet, a meno che per questo motivo non sia stato configurato un port forwarding. Per degli osservatori esterni tutte le richieste provenienti dalla LAN sembrano partire dal router.

Inoltre il procedimento comprende una funzione di protezione che si occupa del fatto che tutti i tentativi di connessione avviati dall’esterno vengano respinti automaticamente, a patto che le porte non siano sbloccate. I pacchetti di risposta provenienti da Internet vengono accettati solo quando si attendono delle risposte del server da una precisa porta del router. Con le tecniche NAT o PAT non viene però verificato quale web server risponda. Infatti l’apertura di una porta del router durante l’avvio di una connessione interna è fonte di vulnerabilità. Si consiglia perciò di implementare meccanismi di sicurezza aggiuntivi come firewall e filtri di pacchetto.

Da non tralasciare sono però le vulnerabilità della traduzione degli indirizzi di rete tramite NAT o PAT che risultano soprattutto dalla netta separazione tra gli spazi di indirizzamento privati e pubblici. Ciò rappresenta una rottura del principio end-to-end auspicato all’interno della struttura di Internet. Il NAT diventa quindi un problema nelle applicazioni Internet che sono state concepite sulla base di questo principio di creazione.

L’ipotesi alla base dei protocolli, come quello FTP, è che gli host su Internet comunichino direttamente tra di loro senza che un nodo interposto tra gli indirizzi IP o i numeri di porta cambi. Nelle reti IPv4 basate su NAT questi si possono perciò impiegare solo ricorrendo a tecnologie di aggiramento. Ogni meccanismo necessario aggiuntivo aumenta però la complessità e la possibilità di errori di un sistema informatico. La realizzazione conseguente del principio end-to-end è perciò un obiettivo primario del nuovo web standard IPv6.

IPv6: la fine di NAT?

Con la sesta versione del protocollo Internet si è moltiplicato il numero degli indirizzi IP messi a disposizione nel mondo. Al posto di 4,3 miliardi di indirizzi IPv4 oggi teoricamente sono messi a disposizione 340 triliardi di indirizzi IPv6 per collegare i dispositivi di rete a Internet. Detto in altre parole: ogni macchinetta del caffè riceve un proprio indirizzo IP unico al mondo e instradabile. Così la traduzione degli indirizzi di rete tramite NAT diventa essenzialmente superflua, ma può venire utilizzata ancora nelle reti IPv6 per proteggere gli spazi di indirizzamento privati dalla rete pubblica.