Indirizzi IP privati e pubblici, Nat e Pat

di | 22 Aprile 2019

Indirizzi IP pubblici e indirizzi IP privati

Gli indirizzi IP pubblici, sono utilizzati in internet, quelli privati, sono invece utilizzati nelle lan.

I primi, sono univoci a livello mondiale, i secondi possono essere uguali ad altri nodi in altre lan

La foto sopra ci chiarisce meglio la questione e ci permette di fare 2 osservazioni:

  • Nel Router0 sono presenti 2 interfacce di rete e, quindi, 2 indirizzi IP: quello esposto verso internet (201.4.22.5) è pubblico, questo significa che, in tutto il mondo esisterà solo un nodo con quell’indirizzo e che sarà raggiungibile direttamente da internet. L’indirizzo IP 192.168.1.1 è invece privato e quindi sarà raggiungibile soltanto all’interno della Lan A.
  • Possiamo poi vedere che, il Router1, oltre ad avere un IP pubblico diverso da quello di Router0, ha assegnato anche un IP privato identico a quello di Router0.

Vediamo di capire meglio il meccanismo, supponiamo che PC1 voglia mandare un messaggio a PC2, che è sulla sua stessa rete. Il pacchetto IP conterrà nel campo “source address” 192.168.1.10 e nel campo “destination address” 192.168.1.11.

Essendo i due nodi sulla stessa rete, non è necessario fare altro.

Vediamo ora il caso più complicato in cui PC1 vuole mandare un messaggio a PC3.

Qui dobbiamo dividere il processo in più fasi:

  • PC1 scrive nel campo “source address” il valore 192.168.1.10 e nel campo “destination address” l’indirizzo ip pubblico del router collegato alla Lan B e, cioè, 140.6.3.2
  • Essendo il destinatario del pacchetto esterno alla Lan A, questo verrà mandato al default gateway, cioè 192.168.1.1
  • il Router0 quindi, dopo averlo ricevuto sull’interfaccia a cui è assegnato l’indirizzo ip privato “passa” il pacchetto all’interfaccia a cui è assegnato l’indirizzo ip pubblico, cambiando però il campo “source address” con il valore “201.4.22.5”.
  • A questo punto il messaggio arriverà a Router1 che lo manderà dall’interfaccia con ip pubblico 140.6.3.2 all’interfaccia con indirizzo ip privato 192.168.1.1 che, a sua volta lo girerà a PC3.


Abbiamo detto che i Router “traducono” gli indirizzi ip privati in indirizzi ip pubblici e, viceversa, gli indirizzi ip pubblici in indirizzi ip privati, vediamo nel dettaglio come questa funzione viene implementata.

NAT, PAT e Port Forwarding

NAT sta per Network Address Translation: è il meccanismo che si occupa di “tradurre” gli indirizzi ip privati in pubblici e viceversa utilizzando una tabella apposita, vediamo come riprendendo l’esempio di cui sopra in cui PC1 manda un messaggio a PC3, supponendo che su PC3 sia in esecuzione un web server in ascolto sulla porta 80.

Per semplicità ci limiteremo a guardare le cose solo dal punto di vista della lan A.

  • PC1 manda il messaggio con destinatario 140.6.3.2:80 (vedi socket per maggiori dettagli su questa sintassi) e mittente 192.168.1.10:2000
  • Non trovandosi l’ip pubblico sulla sua stessa rete, questo giungerà al default gateway, nell’esempio il Router0.
  • Router0 prima di mandare il messaggio su internet, cambierà il mittente in 201.4.22.5:3000 e salverà in una tabella la corrispondenza 192.168.1.10:2000 <—-> 201.4.22.5:3000
  • La risposta del server web conterrà come destinatario 2014.22.5:3000
  • Una volta che Router0 riceverà la risposta, consulterà la tabella, rileverà la corrispondenza 192.168.1.10:2000 <—-> 201.4.22.5:3000 cambierà il destinatario in 192.168.1.10:2000 spedirà il messaggio a PC1

Il limite di questo approccio è che è possibile traslare un solo ip per volta, quindi se dovesse arrivare da PC2 una richiesta identica, questo creerebbe dei problemi.

Per risolvere questa limitazione è stata sviluppata la tecnica PAT che sta per Port Address Translation.

PC1 ha fatto la sua richiesta e il suo indirizzo è stato traslato come sopra. Ora anche PC2 manda una richiesta con indirizzo 140.6.3.2:80 e mittente 192.168.1.11:2000

In caso utilizzassimo la tecnica NAT questa traslazione non sarebbe possibile, invece con la tecnica PAT, semplicemente, viene aggiunta nella tabella delle corrispondenze la riga 192.168.1.11:2000 <—-> 201.4.22.5:3001

Quando il destinatario risponderà, quindi invierà due risposte diverse, rispettivamente a 201.4.22.5:3000 e 201.4.22.5:3001.

Router0 consulterà la tabella PAT e sostituirà i destinatari rispettivamente in 192.168.1.10:2000 e 192.168.1.11:2000

Infine, come dicevamo sopra, supponiamo che PC3 sia un web server, in ascolto sulla porta 80 (HTTP), bisogna fare in modo che, quando arriva una richiesta su IP pubblico e porta 80 (140.6.3.2:80) questa venga mandata direttamente, da Router1 a PC3; questo è il Port Forwarding.