NAT (network address translation)

Il network address translation o NAT, ovvero traduzione degli indirizzi di rete, è una tecnica che consiste nel modificare gli indirizzi IP contenuti negli header dei pacchetti in transito su un sistema che agisce da router all’interno di una comunicazione tra due o più host.

Nella  rete in figura, abbiamo due reti LAN con indirizzi privati che accedono a internet collegandosi tramite modem ADSL ad un ISP.

Schermata 2018-03-03 alle 18.04.20

L’uso di indirizzi privati (non univoci) non permette agli host della rete, di comunicare con la rete pubblica. Viene così definita una tecnicaper cui un processo operante su un router è in grado di sostituire gli indirizzi IP nei pacchetti che giungono da una interfaccia in indirizzi IP differenti e poi inoltrati su un’altra interfaccia (per esempio, su una rete pubblica). Questa tecnica è detta NAT (Network Address Translation), cioè una traduzione di indirizzi tra due reti che avviene solitamente nel router.  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”). Quando un dispositivo di rete con un indirizzo IPv4 privato deve accedere a un indirizzo IP pubblico su Intenet. 

 Tipi di NAT

Traslazione statica

Il principio del NAT statico associa un indirizzo IP pubblico ad un indirizzo IP privato interno alla rete. Il gateway permette quindi di associare ad un indirizzo IP privato (ad esempio 192.168.0.1) un indirizzo IP pubblico, modificando l’indirizzo nel pacchetto IP. 

Schermata 2018-03-03 alle 18.14.04
 
 

rete 192.168.1.0 Rete 1.0.0.0
pc 192.168.1.100 1.0.0.6
pc 192.168.1.101  1.0.0.7

 

NAT con router CISCO

Per prima cosa per abilitare le funzioni di NAT sul router bisogna configurare i ruoli delle interfacce del router

  • R1(config)# int fa0/0
  • R1(config-if)# ip nat inside.   
  • R1(config-if)# exit
  • R1(config)# int se2/0
  • R1(config-if)# ip nat outside
  • R1(config-if)# exit

Questi comandi definiscono che la porta Fa0/0 è interna alla zona sottoposta a NAT e quella seriale Se2/0 è verso l’esterno del NAT. Successivamente gli effettivi settaggi di NAT sono effettuabili e visibili tramite i comandi

  • R1(config)# ip nat inside source static 192.168.1.100 1.0.0.6
  • R1(config)# ip nat inside source static 192.168.1.101 1.0.0.7
  • R1(config)# ip nat inside source static 192.168.1.101 1.0.0.8

Il router R1 cambia l’indirizzo sorgente dei pacchetti che escono dal NAT e, di conseguenza, l’indirizzo di destinazione dei pacchetti che vanno verso  la zona di NAT. Questa operazione simmetrica è ovviamente necessaria, in quanto i pacchetti che arrivano all’interfaccia seriale del router R1 hanno indirizzi di destinazione (ritorno), pubblici quindi translati, ed essidevono essere ritradotti.

tabella nat
 

NAT dinamico (many to many)

Il NAT dinamico associa gli indirizzi IP della rete interna a degli indirizzi pubblici compresi in un determinato range di IP (pool). Le associazioni saranno dinamiche, nel senso che ogni host interno che accede a Internet sarà traslato nel primo IP pubblico disponibile all’interno del range di IP pubblici disponibili.

Router(config)#ip nat pool nome_pool ip_iniziale ip_finale netmask maschera
Router(config)#access-list numero_ACL permit ip_rete maschera-wildcard
Router(config)#ip nat inside source list numero_ACL pool nome_pool

  1. Con il primo comando si definisce un NAT pool, ossia un gruppo di IP “outside” da usare per la translation.
  2. Con il secondo comando si definisce, tramite una ACL, il gruppo di IP “inside” che verranno traslati.
  3. Il terzo comando applica la NAT.

Esempio:

R1(config)#ip nat pool TEST-POOL 1.0.0.2 1.0.0.10 netmask 255.255.255.0

R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255

R1(config)#ip nat inside source list 1 pool TEST-POOL

 NAT Overload PAT (Port Address Translation)

Il NAT overload associa una lista di ip sulla rete “inside” all’unico IP dell’interfaccia “outside”. E’ la funzione di NAT più utilizzata, da abilitare quando si ha a disposizione un solo indirizzo IP pubblico, o comunque quando si vuole che tutti gli host si presentino su Internet sempre con lo stesso IP.

In questo caso  la tabella di traduzione NAT diviene dinamica e le sue voci durano un tempo molto breve (pochi secondi), dopodichè vengono eliminate, inoltre in questa tabella iniziano a fare la loro comparsa indicazioni che oltre al numero di IP, segnano anche numeri di porta. Tali numeri di porta nel caso di traduzione dell’indirizzo sorgente registrano il numero di porta sorgente. Nel caso tale numero di porta sia unico nelle voci registrate nella tabella di NAT, non c’è motivo di traslarlo. 

Schermata 2018-03-03 alle 18.52.25

Il numero di porta in questa situazione,  diviene la discriminante per capire a quale indirizzo IP interno corrisponda un certo pacchetto. Essendo unico l’IP su cui su basa il NAT, quando c’è una coincidenza del numero di porta tra pacchetti in transito provenienti da diversi IP della rete locale, è necessario distinguere i pacchetti translando la porta.Con questo meccanismoanche il numero di porta deve essere oggetto di traduzione da parte del NAT, assieme al numero di IP.Si parla infatti di PAT (Port and Address Translation). 

Schermata 2018-03-03 alle 18.52.37

Settaggi per il NAT overloadPer attivare il NAT overload si dovranno dare i seguenti comandi (ovviamente adattati alle necessitàcaso per caso).

  1. Si definisce un insieme di indirizzi (access-list) dai quali sarà ammesso richiedere il NAT.

access-list 1 permit 192.168.1.0 0.0.0.255

  1. ip nat inside source list 1 interface Se0/0 overload: che indica che la access list 1 dovrà essere tradotta in NAT in base all’ indirizzo IP della interfaccia se0/0 del router in modalità overload (ossia utilizzando qual solo numero di IP, e quindi se necessario facendo la traslazione delle porte).In questa sintassi inside indica che gli indirizzi tradotti inizialmente sono quelli interni (inside) allasottorete privata. 

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). Quando il router riceve un pacchetto avente come indirizzo di destinazione il suo indirizzo e come porta P, inoltra questo pacchetto al web server.

Schermata 2018-03-03 alle 18.52.47
 

R1(config)#ip nat inside source static tcp 192.168.0.1 80 1.0.0.1 80

Leave a Reply


Latest Posts

AAA