Il NAT (Network Address Translation) è un meccanismo che permette di modificare l'indirizzo IP dei pacchetti in transito attraverso apparati di rete, come router o firewall, all'interno di una comunicazione in corso tra due o più nodi della rete.
Il meccanismo del NAT è diventato fondamentale nel momento in cui gli indirizzi IP del protocollo IPv4 hanno cominciato a scarseggiare. Il NAT è stato quindi utilizzato per poter nascondere dietro un unico indirizzo pubblico decine e decine di indirizzi privati (e quindi altrettanti host). Nonostante l'introduzione del protocollo IPv6, questa tattica di "mascheramento" degli indirizzi privati è molto utilizzata sia per semplice comodità sia perché capace di garantire dei vantaggi in termini di sicurezza.
Il NAT richiede la presenza di un gateway con almeno un'interfaccia connessa alla rete interna e almeno un'interfaccia di rete connessa a Internet. Grazie al gateway, tutti gli host connessi alla LAN possono accedere a Internet utilizzando un singolo indirizzo IP pubblico: quello del gateway stesso.
In questo caso il gateway si occupa di fare una traslazione degli indirizzi IP dei pacchetti in transito attraverso il router stesso: quando un host della rete interna effettua una richiesta verso Internet, l'indirizzo IP di navigazione risultante dopo l'attraversamento del gateway sarà quello pubblico del gateway stesso e non quello privato dell'host che effettua la richiesta; nel caso di pacchetti in entrata, invece, il gateway si occupa di reindirizzare il traffico verso l'host di destinazione appartenente alla LAN, modificando l’IP di destinazione di conseguenza.
Analizziamo ora i tre principali scenari che possono verificarsi in una LAN che adotta indirizzi privati e quindi utilizza il meccanismo di NAT:
un host della LAN che si connette ad Internet;
un host esterno alla LAN che cerca di comunicare con un host interno alla LAN;
due host della LAN che comunicano tra di loro.
Da LAN ad Internet
In questo caso il NAT effettua il "mascheramento" degli indirizzi dei pacchetti originati dalla LAN in modo che l'unico indirizzo ad apparire in Internet sia l'IP pubblico assegnato dall'ISP (Internet service provider) al router. Esistono più tecniche di traslazione possibili: il PAT (Port Address Translation) è quella più diffusa e che offre maggiore flessibilità.
Da Internet alla LAN
Con la tecnica del Port Forwarding si permette a dispositivi esterni alla LAN (siano essi dei server appartenenti ad Internet o host di altre LAN) di comunicare con alcuni nodi della rete locale.
Comunicazione interna alla LAN
In quest'ultimo caso non ci sono particolari difficoltà comunicative tra i vari host. Due generici host interni alla LAN che comunicano tra loro non avranno bisogno di traslare il proprio indirizzo; gli host potranno comunicare liberamente, scambiando i pacchetti in maniera diretta.
Il meccanismo di traslazione degli indirizzi
Le tecniche più utilizzate per la traslazione degli indirizzi, sia in entrata che in uscita, sfruttano l'indirizzamento introdotto dal livello Transport, basato sulle porte.
Come si vedrà in seguito, il livello Transport prevede che l'header dei segmenti TCP e dei datagram UDP includano due campi con i significati di porta sorgente e di porta di destinazione.
Da LAN ad Internet
Il PAT è un meccanismo di traslazione dei pacchetti in uscita, implementato su un gateway, che prende in esame l'indirizzo e la porta sorgenti e li altera introducendo l'indirizzo pubblico del gateway stesso e una porta sorgente libera (cioè una porta non coinvolta in altre comunicazioni).
Gli originari indirizzi IP e porta sorgente, vengono memorizzati nella NAT table (tabella di NAT) per consentire al meccanismo di traslazione di intervenire successivamente sui pacchetti di risposta inviati dall'host remoto e permettere a questi di raggiungere l'effettivo destinatario.
Questa metodologia di lavoro introduce, per l'utente della LAN, un livello di sicurezza. Gli indirizzi IP della rete privata non compariranno mai né nei pacchetti in uscita né in quelli in entrata (essendo questi sempre mascherati, ovvero modificati durante il passaggio attraverso il gateway): per il resto dalla rete tutte le richieste sembreranno pervenire dall'indirizzo IP del gateway, nascondendo di fatto il nodo della rete locale che effettivamente ha fatto richiesta di quella certa informazione.
Un osservatore esterno, quindi, non sarà mai in grado di determinare quale dispositivo della LAN abbia effettuato la richiesta, né quanti siano i dispositivi che compongono la LAN.
A meno di impostazioni di reindirizzamento particolari, un utente esterno alla LAN non riuscirà ad indirizzare direttamente un host interno alla LAN, ma sarà costretto a fermarsi in corrispondenza del gateway che risulterà insuperabile.
Da Internet alla LAN
Un host esterno alla LAN che vuole accedere ad una risorsa della LAN deve indirizzare la richiesta all'indirizzo IP pubblico del gateway specificando una precisa porta di comunicazione.
Il gateway, opportunamente configurato, reindirizza il traffico proveniente su quel canale di comunicazione verso l'host della LAN definito in configurazione.
Questa operazione è detta di port forwarding e permette di stabilire che tutti i dati transitanti attraverso una porta del gateway (ad esempio la porta 80, utilizzata dai browser per la navigazione nel web) siano destinati ad un host ben preciso facente parte della rete locale (individuato, nell'esempio, dall'IP 192.168.10.6). Il meccanismo entra in merito anche al protocollo di trasporto utilizzato (TCP o UDP).
Per mettere in atto questa tecnica è dunque necessario agire sul router, stabilendo una regola interna di reindirizzamento. Accedendo alle impostazioni del dispositivo (nella sezione NAT o port forwarding), si dovrà stabilire manualmente il percorso da seguire, indicando quale sia l'IP privato verso il quale indirizzare tutto il traffico che passa da una determinata porta di rete del router.
Questo tipo di comunicazione, però, espone la LAN a possibili attacchi. Una volta stabilita la regola, infatti, la porta resta aperta anche se non è in corso alcuna comunicazione telematica.
Esistono meccanismi più sofisticati per proteggere gli host accessibili da Internet, in modo da aumentare il livello di sicurezza per l'utente.
Altre tecniche di NAT
Il meccanismo di port forwarding di cui si è discusso richiede un intervento di configurazione specifico sul router che non è alla portata della maggior parte degli utenti.
Del resto molte applicazioni che sfruttano la rete in modo massivo e richiedono tempi di risposta rapidi (latenza), necessiterebbero di un canale di comunicazione entrante sempre disponibile.
Per cercare di rispondere a questa esigenza sono nati diversi meccanismi che cercano di automatizzare o semplificare l'apertura delle porte.
UPnP (Universal Plug and Play): è un protocollo progettato per automatizzare l'apertura delle porte, su richiesta delle singole applicazioni operanti nella LAN.
In sostanza il meccanismo di port forwarding viene attivato automaticamente e per un tempo limitato.
E' da tenere presente che questo meccanismo potrebbe introdurre delle vulnerabilità nella LAN perché un eventuale software malevolo presente nella LAN avrebbe la possibilità di creare canali entranti all'insaputa dell'utente.
Port triggering: in questo caso l'abilitazione del meccanismo richiede un intervento di configurazione sul router dovendo specificare la porta da utilizzare per il triggering e un range di porte da aprire.
Quando un'applicazione effettua la connessione verso un server remoto utilizzando la porta di triggering, le porte specificate vengono aperte e il traffico convogliato verso l'applicazione che ha attivato il meccanismo.
ALG (Application Layer Gateway): questa funzione opera in modo automatico riconoscendo il protocollo applicativo che si sta utilizzando, interpretando il l'header e predisponendo l'apertura delle porte laddove è necessario.
La funzione deve essere esplicitamente abilitata per ciascun protocollo gestito.
Sito: 7ecnologie
Sezione: 13. Reti
Capitolo: 03. La suite TCP/IP
Paragrafo: 02. Livello Internet
Approfondimento: 07. NAT
Indice dei capitoli: 00. Risorse - 01. Le telecomunicazioni - 02. Il modello OSI - 03. La suite TCP/IP - 04. Il cablaggio strutturato - 05. LAB - 07. Tutorial - 98. Esercizi
Indice dei paragrafi: 01. Network Access - 02. Livello Internet - 03. Livello Transport - 04. Livello Application
Indice degli approfondimenti: 01. Protocolli - 02. Classificazione degli indirizzi IP - 03. Subnetting - 04. Subnetting: esempi - 05. Ping e traceroute - 06. Routing - 07. NAT - 08. Autonomous System - 09. Carrier-Grade NAT - 10. NAT Traversal