Perché serve il NAT

Il NAT (Network Address Translation) nasce per un problema concreto: gli indirizzi IPv4 pubblici sono una risorsa scarsa, ma ogni rete aziendale usa spazi private (RFC 1918: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) che non sono instradabili su Internet. Il router di bordo traduce questi indirizzi privati in uno o più indirizzi pubblici, permettendo agli host interni di raggiungere l’esterno. In CCNA il NAT è quasi sempre implementato su un router IOS/IOS-XE al confine tra la rete interna e il provider.

La terminologia inside/outside

Questo è il punto che fa cadere più candidati. Cisco definisce quattro categorie, combinando due assi: dove si trova l’host (inside = rete interna, outside = Internet) e quale indirizzo stiamo guardando (local = come appare all’interno, global = come appare all’esterno).

Termine Significato
Inside Local Indirizzo privato dell’host interno, come lo vede la LAN
Inside Global Indirizzo pubblico che rappresenta l’host interno su Internet
Outside Global Indirizzo pubblico reale dell’host esterno (es. un server web)
Outside Local Come l’host esterno appare alla rete interna (di norma uguale a Outside Global)

Regola mnemonica: local = punto di vista interno, global = punto di vista esterno. Nel NAT sorgente classico ci concentriamo sulla coppia Inside Local → Inside Global.

Le tre modalità

NAT statico

Mappatura 1-a-1 permanente tra un inside local e un inside global. Serve quando un host interno (tipicamente un server) deve essere raggiungibile dall’esterno con un indirizzo pubblico stabile.

ip nat inside source static 192.168.1.10 203.0.113.10

NAT dinamico con pool

Un pool di indirizzi pubblici viene assegnato a rotazione agli host interni, selezionati da una ACL. La mappatura è 1-a-1 ma temporanea: se il pool ha 10 indirizzi, solo 10 host per volta possono uscire. Esaurito il pool, i nuovi host ricevono un drop del pacchetto.

PAT (NAT overload)

È la modalità dominante nel mondo reale: molti host interni condividono un solo indirizzo pubblico. Il router distingue le sessioni usando le porte sorgente (Layer 4), realizzando una mappatura many-to-one. Ogni flusso è identificato dalla tupla completa.

ip nat inside source list 1 interface GigabitEthernet0/1 overload

La parola chiave overload è ciò che trasforma il NAT in PAT.

Host interno Src interno Src tradotto (PAT)
PC-A 192.168.1.10:1050 203.0.113.1:1050
PC-B 192.168.1.11:1050 203.0.113.1:1051
PC-C 192.168.1.12:3000 203.0.113.1:3000

Se due host usano la stessa porta sorgente, il router ne riscrive una per mantenere l’univocità.

Marcare le interfacce

Nessuna traduzione avviene se non si dichiara quale interfaccia è inside e quale outside. È un passo obbligatorio e spesso dimenticato:

interface GigabitEthernet0/0
 ip nat inside
interface GigabitEthernet0/1
 ip nat outside

Il NAT si applica ai pacchetti che attraversano il confine da un’interfaccia inside a una outside (e ritorno).

Verifica e troubleshooting

Il comando principe è:

show ip nat translations

Mostra le sessioni attive con le quattro colonne (Inside global, Inside local, Outside local, Outside global). Nel PAT vedrai le porte accanto agli indirizzi (Pro Inside global con :porta). Comandi complementari:

  • show ip nat statistics — hit/miss, interfacce inside/outside, pool in uso.
  • debug ip nat — traccia in tempo reale la traduzione di ogni pacchetto (usare con cautela in produzione).
  • clear ip nat translation * — svuota la tabella per ripartire pulito.

Trappole tipiche d’esame

  • Nessuna traduzione nonostante la config sia corretta → verificare che le interfacce abbiano ip nat inside e ip nat outside. Senza questi comandi il router non traduce nulla, anche se ACL e pool sono perfetti.
  • Alcuni host escono, altri no, con NAT dinamico → il pool è esaurito (mappatura 1-a-1). La risposta giusta è aggiungere overload per passare a PAT e condividere l’indirizzo tra molti host.
  • Domanda sulla terminologia → l’indirizzo privato dell’host interno è l’Inside Local; quello pubblico dopo la traduzione è l’Inside Global. Il server Internet è Outside Global. Non invertire local/global.
  • Come confermo che il NAT funziona?show ip nat translations; la presenza di righe con la coppia inside local/inside global (e le porte, nel PAT) prova che le sessioni sono tradotte.
  • La ACL del NAT usa permit per selezionare il traffico → un deny non blocca ma esclude l’host dalla traduzione. Un traffico non “permesso” dalla ACL esce senza NAT (e viene scartato a valle se ha indirizzo privato).