Da giugno 2012 con la sesta versione del pro­to­col­lo Internet (IPv6) viene messa a di­spo­si­zio­ne una soluzione per la crescente carenza di indirizzi IP. Ma il passaggio al nuovo standard Internet procede len­ta­men­te. Secondo una sta­ti­sti­ca di Google, ad ottobre 2016 più dell’85 % degli utenti in tutto il mondo uti­liz­za­va­no ancora il sor­pas­sa­to standard Internet IPv4. Ma i 4,3 miliardi di indirizzi non bastano più da tempo a garantire la con­nes­sio­ne a Internet con IP univoci per la mol­ti­tu­di­ne di di­spo­si­ti­vi presenti. Non solo i computer, ma anche i tablet e gli smart­pho­ne ri­chie­do­no un accesso al mondo online. Se poi si guarda al fenomeno emergente di Internet of Things (IoT) sono i fri­go­ri­fe­ri stessi, le bilance e le mac­chi­net­te per il caffè a tra­sfor­mar­si in ap­pa­rec­chi in­tel­li­gen­ti. 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 di­spo­si­ti­vi che si con­net­to­no a Internet vengono in­di­riz­za­ti 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 in­ter­fac­cia prin­ci­pa­le tra lo spazio di in­di­riz­za­men­to pubblico e privato. Qui avviene la Network Address Trans­la­tion, ab­bre­via­ta in NAT.

Che cos’è il NAT?

L’acronimo NAT sta per Network Address Trans­la­tion, cioè una tra­du­zio­ne di indirizzi tra due reti che avviene so­li­ta­men­te nel router. Lo scopo di questo pro­ce­di­men­to è quello di collegare le reti locali a Internet. Così si distingue tra due tipi diversi di tra­du­zio­ne degli indirizzi: source NAT (SNAT) e De­sti­na­tion NAT (DNAT).

Source NAT

Gli utenti privati entrano in contatto con la tra­du­zio­ne degli indirizzi di rete per la maggior parte sotto forma di source Nat (tradotto let­te­ral­men­te in italiano: “sorgente NAT”). Il pro­ce­di­men­to si applica sia nelle reti do­me­sti­che sia in quelle aziendali, quando un di­spo­si­ti­vo di rete con un indirizzo IPv4 privato deve accedere a un indirizzo IP pubblico su Intenet. Nell’uso lin­gui­sti­co il termine NAT non viene però sempre usato in maniera re­strit­ti­va.

Spie­ga­zio­ne del termine: NAT vs. PAT

Es­sen­zial­men­te si deve di­stin­gue­re se ogni singolo indirizzo IP privato viene assegnato in una rete locale a un proprio indirizzo IP pubblico (tra­du­zio­ne 1:1) o se tutti i di­spo­si­ti­vi di rete si dividono lo stesso IP pubblico (tra­du­zio­ne n:1).

In realtà si parla di Network Address Trans­la­tion solo in una tra­du­zio­ne 1:1 in senso letterale, visto che in questo caso vengono riscritti solo gli indirizzi di rete, invece la tra­du­zio­ne n:1 richiede in aggiunta un adat­ta­men­to del numero della porta. Questo pro­ce­di­men­to viene perciò indicato come PAT (Port Address Trans­la­tion) o NAPT (Network Address and Port Trans­la­tion).

Visto che il concetto di PAT si presenta come caso standard nelle reti do­me­sti­che e aziendali, questo pro­ce­di­men­to viene indicato spesso nell’uso lin­gui­sti­co generale in modo inesatto come NAT. I termini comuni come router NAT o tabella NAT vengono uti­liz­za­ti anche per i concetti PAT. Quindi quando si parla di NAT oggi si intende la maggior parte delle volte la tecnica PAT o NAPT.

Fun­zio­na­men­to del Port Address Trans­la­tion (PAT)

Di norma la tra­du­zio­ne dell’indirizzo di rete viene usata sotto forma di PAT per collegare a Internet più di­spo­si­ti­vi locali tramite un indirizzo IP comune.

Visto che gli IP privati non sono in­stra­da­bi­li (quindi non hanno alcuna im­por­tan­za 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 in­ter­na­men­te viene so­sti­tui­to 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 in­for­ma­zio­ni di con­nes­sio­ne (indirizzi IP, porte o timeout) vengono me­mo­riz­za­ti nella co­sid­det­ta tabella NAT (in realtà si dovrebbe parlare anche qui di una tabella PAT). Se il server in­di­riz­za­to 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 di­spo­si­ti­vo di rete il quale ha avviato la richiesta. Tutto quello che serve al router sono le in­for­ma­zio­ni di con­nes­sio­ne me­mo­riz­za­te 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 di­spo­si­zio­ne dei di­spo­si­ti­vi di rete lo spazio di in­di­riz­za­men­to 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 di­spo­si­ti­vi (ad esempio un computer con l’indirizzo IP privato 192.168.0.2) instaura una con­nes­sio­ne 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 in­stau­ra­re la con­nes­sio­ne al router inserito come standard gateway. Il router è in­di­riz­za­bi­le in­ter­na­men­te 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 in­for­ma­zio­ni: il di­spo­si­ti­vo 192.168.0.2 vuole stabilire una con­nes­sio­ne con la porta 22433 a 71.123.239.82 sulla porta 80. Per venire incontro a questo desiderio, il router deve so­sti­tui­re l’indirizzo sorgente del di­spo­si­ti­vo 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 tra­du­zio­ne degli indirizzi di rete: quindi 192.168.0.2:22433 viene con­ver­ti­to in 217.229.111.18: 61001. Tutte le in­for­ma­zio­ni im­por­tan­ti vengono me­mo­riz­za­te 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 in­for­ma­zio­ni di con­nes­sio­ne me­mo­riz­za­te: secondo la tabella NAT, la porta esterna 61001 è riservata per i pacchetti di risposta che sono da inviare alla porta 22433 del di­spo­si­ti­vo 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 con­nes­sio­ne. Ciò serve come timeout e indica quando la voce coinvolta può essere eliminata. Così si può as­si­cu­ra­re che le porte non rimangano aperte co­stan­te­men­te in caso di inat­ti­vi­tà e si tra­sfor­mi­no pos­si­bil­men­te in uno spiraglio per gli attacchi hacker.

De­sti­na­tion NAT

Mentre il source NAT permette le con­nes­sio­ni dalla LAN a Internet, il de­sti­na­tion NAT viene uti­liz­za­to per rendere rag­giun­gi­bi­le per­ma­nen­te­men­te un di­spo­si­ti­vo locale per delle con­nes­sio­ni in entrata da Internet. Perciò una porta pubblica viene collegata tramite la con­fi­gu­ra­zio­ne router per­ma­nen­te­men­te con l’indirizzo IP di un di­spo­si­ti­vo di rete locale. Tutti i pacchetti che arrivano dalla relativa porta vengono così inoltrati au­to­ma­ti­ca­men­te all’indirizzo di de­sti­na­zio­ne locale. Si parla in questo caso di port for­war­ding. Questo pro­ce­di­men­to viene ad esempio uti­liz­za­to quando devono essere messi a di­spo­si­zio­ne i servizi server dalla LAN verso l’esterno su Internet. Le porte aperte rap­pre­sen­ta­no però un rischio per la sicurezza. Si consiglia perciò di pro­teg­ge­re la rete locale dal traffico dati pro­ve­nien­te da Internet facendo in modo che i di­spo­si­ti­vi in­di­riz­za­bi­li tramite port for­war­ding vengano isolati in zone de­mi­li­ta­riz­za­te (DMZ).

NAT: segno di­stin­ti­vo di sicurezza o vul­ne­ra­bi­li­tà?

La tra­du­zio­ne degli indirizzi di rete sul router viene discussa per via della netta se­pa­ra­zio­ne tra LAN e Internet come segno di­stin­ti­vo di sicurezza. La presunta funzione di pro­te­zio­ne è però solo un effetto col­la­te­ra­le. Le tecniche NAT e PAT sono state svi­lup­pa­te per con­tra­sta­re la carenza di indirizzi IPv4, quindi il pro­ce­di­men­to non può so­sti­tui­re le funzioni di un firewall o di un filtro di pacchetti.

Ciò no­no­stan­te NAT e PAT offrono agli utenti nelle reti private un suf­fi­cien­te grado di pro­te­zio­ne della sfera privata. Visto che tutti i di­spo­si­ti­vi 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 è di­ret­ta­men­te in­di­riz­za­bi­le tramite Internet, a meno che per questo motivo non sia stato con­fi­gu­ra­to un port for­war­ding. Per degli os­ser­va­to­ri esterni tutte le richieste pro­ve­nien­ti dalla LAN sembrano partire dal router.

Inoltre il pro­ce­di­men­to comprende una funzione di pro­te­zio­ne che si occupa del fatto che tutti i tentativi di con­nes­sio­ne avviati dall’esterno vengano respinti au­to­ma­ti­ca­men­te, a patto che le porte non siano sbloccate. I pacchetti di risposta pro­ve­nien­ti 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ò ve­ri­fi­ca­to quale web server risponda. Infatti l’apertura di una porta del router durante l’avvio di una con­nes­sio­ne interna è fonte di vul­ne­ra­bi­li­tà. Si consiglia perciò di im­ple­men­ta­re mec­ca­ni­smi di sicurezza ag­giun­ti­vi come firewall e filtri di pacchetto.

Da non tra­la­scia­re sono però le vul­ne­ra­bi­li­tà della tra­du­zio­ne degli indirizzi di rete tramite NAT o PAT che risultano so­prat­tut­to dalla netta se­pa­ra­zio­ne tra gli spazi di in­di­riz­za­men­to privati e pubblici. Ciò rap­pre­sen­ta una rottura del principio end-to-end auspicato all’interno della struttura di Internet. Il NAT diventa quindi un problema nelle ap­pli­ca­zio­ni Internet che sono state concepite sulla base di questo principio di creazione.

L’ipotesi alla base dei pro­to­col­li, come quello FTP, è che gli host su Internet co­mu­ni­chi­no di­ret­ta­men­te tra di loro senza che un nodo in­ter­po­sto tra gli indirizzi IP o i numeri di porta cambi. Nelle reti IPv4 basate su NAT questi si possono perciò impiegare solo ri­cor­ren­do a tec­no­lo­gie di ag­gi­ra­men­to. Ogni mec­ca­ni­smo ne­ces­sa­rio ag­giun­ti­vo aumenta però la com­ples­si­tà e la pos­si­bi­li­tà di errori di un sistema in­for­ma­ti­co. La rea­liz­za­zio­ne con­se­guen­te del principio end-to-end è perciò un obiettivo primario del nuovo web standard IPv6.

IPv6: la fine di NAT?

Con la sesta versione del pro­to­col­lo Internet si è mol­ti­pli­ca­to il numero degli indirizzi IP messi a di­spo­si­zio­ne nel mondo. Al posto di 4,3 miliardi di indirizzi IPv4 oggi teo­ri­ca­men­te sono messi a di­spo­si­zio­ne 340 triliardi di indirizzi IPv6 per collegare i di­spo­si­ti­vi di rete a Internet. Detto in altre parole: ogni mac­chi­net­ta del caffè riceve un proprio indirizzo IP unico al mondo e in­stra­da­bi­le. Così la tra­du­zio­ne degli indirizzi di rete tramite NAT diventa es­sen­zial­men­te superflua, ma può venire uti­liz­za­ta ancora nelle reti IPv6 per pro­teg­ge­re gli spazi di in­di­riz­za­men­to privati dalla rete pubblica.

Vai al menu prin­ci­pa­le