NAT Overloading o Port Address Translation (PAT) è una forma modificata di NAT dinamico dove il numero di indirizzi locali interni è maggiore del numero di indirizzi globali interni. Per lo più, c’è solo un singolo indirizzo IP globale interno che fornisce l’accesso a Internet a tutti gli host interni. NAT Overloading è l’unico tipo di NAT che effettivamente conserva gli indirizzi IP ed è anche la forma più popolare di NAT.
Figura 10-4 Port Address Translation (PAT)
PAT permette l’overloading o la mappatura di più di un indirizzo locale interno allo stesso indirizzo globale interno. Ma questo significa anche che i pacchetti di ritorno avrebbero tutti lo stesso indirizzo di destinazione quando raggiungono il router NAT. Come farebbe il router a sapere a quale indirizzo locale interno appartiene ogni pacchetto di ritorno? Per affrontare questo scenario, le voci NAT nella tabella di traduzione sono voci estese; le voci non solo tracciano i relativi indirizzi IP, ma anche i tipi di protocollo e le porte. Traducendo sia l’indirizzo IP che il numero di porta di un pacchetto, fino a 65535 indirizzi locali interni potrebbero teoricamente essere mappati su un singolo indirizzo globale inisde (basato sul numero di porta a 16 bit).
Ma tenete a mente che una singola voce NAT usa circa 160 byte di memoria del router, quindi 65535 voci richiederebbero più di 10 MB di memoria e anche grandi quantità di potenza della CPU. Nelle configurazioni pratiche PAT, non vengono mappati neanche lontanamente questo numero di indirizzi, ma è sicuramente un limite teorico.
Ecco un esempio di configurazione per il sovraccarico NAT o PAT secondo la Figura 10-4.
R1>
R1>enable
R1#configure terminal
Entrare i comandi di configurazione, uno per linea. Terminare con CNTL/Z.
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 ?
netmask Specificare la maschera di rete
prefix-length Specificare la lunghezza del prefisso
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 netmask 255.255.255.0
R1(config)#access-list 1 permit 192.168.1.0 0.0.255
R1(config)#ip nat inside source list 1 pool MyPool overload
R1(config)#interface FastEthernet0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#ip nat inside
R1(config-if)#interfaccia FastEthernet0/1
R1(config-if)# indirizzo IP 67.210.97.1 255.255.255.0
R1(config-if)#ip nat outside
R1(config-if)#end
R1#
La configurazione sopra può sembrare molto simile alla configurazione per il NAT dinamico, tuttavia ci sono importanti differenze. Primo, il pool di indirizzi IP è stato ridotto ad un singolo indirizzo IP assegnato all’interfaccia esterna del router R1.
Secondo, la lista di accesso 1 corrisponde all’intera rete di classe C 192.168.1.0/24 che significa che qualsiasi indirizzo locale interno da questa rete sarà tradotto. Se volete che uno specifico host di questa rete non sia tradotto, dovete specificarlo esplicitamente aggiungendo una dichiarazione di rifiuto alla lista di accesso. Supponiamo di voler negare la traduzione ad un singolo host 192.168.1.2 mentre consentiamo tutti gli altri host:
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
C’è anche un’aggiunta della parola chiave overload con il comando ip nat inside source list 1 pool MyPool.
Iniziamo la nostra solita verifica dando il comando show ip nat translations:
R1#show ip nat translations
R1#
Non ci sono mappature statiche e quindi l’output vuoto sopra. Generiamo un po’ di traffico dagli host interni al server ed eseguiamo nuovamente il comando show ip nat translations:
Pro Inside global Inside local Outside local Outside global
icmp 67.210.91.1:18 192.168.1.2:18 173.194.67.102:18 173.194.67.102:18
icmp 67.210.91.1:19 192.168.1.3:19 173.194.67.102:19 173.194.67.102:19
icmp 67.210.91.1:20 192.168.1.4:20 173.194.67.102:20 173.194.67.102:20
Come puoi vedere nell’output sopra, tutti gli indirizzi locali interni sono tradotti nello stesso indirizzo globale interno, che è l’essenza del sovraccarico NAT o PAT. Potreste aver notato che il router ha conservato i numeri di porta sorgente come gli indirizzi locali interni sono stati tradotti in indirizzi globali interni. Questo è il solito comportamento, ma quando il router crea una nuova voce di traduzione tale che il numero di porta sorgente è già in uso, anche il numero di porta viene tradotto in un numero diverso. L’occorrenza di due host interni che scelgono lo stesso numero di porta sorgente non è molto comune, ma può ancora accadere specialmente quando il numero di connessioni dall’interno all’esterno è significativo.
Facciamo anche il comando show ip nat statistics:
Totale traduzioni attive: 3 (0 statico, 3 dinamico; 3 esteso)
Interfacce esterne:
Serial1/0
Interfacce interne:
FastEthernet0/0
Hits: 135 Misses: 15
CEF Pacchetti tradotti: 150, pacchetti puntati CEF: 0
Traduzioni scadute: 12
Mappature dinamiche:
– Inside Source
access-list 1 pool MyPool refcount 3
pool MyPool: netmask 255.255.255.0
start 67.210.91.1 end 67.210.91.1
tipo generico, indirizzi totali 1, allocati 1 (100%), miss 0
Pacchetti Queued: 0
Si dovrebbero tenere a mente due cose. Primo, il sovraccarico NAT è utile in ogni situazione in cui il numero di host interni è maggiore degli indirizzi pubblici che avete. In molte situazioni hai solo un singolo indirizzo IP pubblico che è assegnato all’interfaccia esterna del tuo router rivolto a Internet. In questo caso il tuo pool consisterebbe in un singolo indirizzo IP come mostra la configurazione sopra. Tuttavia, potresti avere più di un indirizzo IP pubblico disponibile, uno dei quali potrebbe essere assegnato all’interfaccia Internet del tuo router. In tal caso, il tuo pool NAT potrebbe consistere in più di un indirizzo IP usando ancora il NAT overload per ospitare un maggior numero di host interni che vogliono connettersi a Internet. In breve, puoi avere un singolo indirizzo pubblico sovraccaricato o puoi avere più di un indirizzo pubblico sovraccaricato.
NAT Overload o PAT è la configurazione NAT più prevalente per l’ovvia ragione che è il gusto del NAT che effettivamente preserva gli indirizzi IP globali, la ragione principale per l’uso del NAT.