Port Address Translation
# Port Address Translation

In informatica il Port Address Translation (PAT) è una particolare tecnica di Network address translation che permette di effettuare una 'mappatura' (stabilire una corrispondenza) tra più indirizzi IP di una rete privata (ad es. una LAN o di una rete protetta da un firewall) e un singolo indirizzo IP di una rete pubblica (ad es. Internet).

## Principio di funzionamento

Il PAT permette quindi di utilizzare un singolo indirizzo IP pubblico per accedere a numerosi servizi da una rete locale che utilizza indirizzi IP privati. Un indirizzo IP pubblico può gestire oltre 64000 connessioni contemporanee sul lato interno della rete.

Nella configurazione tipica di un firewall, la rete esterna è costituita dalla rete Internet e quella interna è definita con il nome di LAN.

Nella configurazione tipica DMZ, la rete esterna è costituita dalla rete Internet e quella interna è la DMZ.

Il dispositivo che funziona da PAT cancella periodicamente le varie assegnazioni dalla propria tabella man mano che esse non sono più utilizzate. Il numero della porta è un intero senza segno a 16 bit (0-65535), quindi è molto ridotta la probabilità che un computer dall'interno non riesca ad effettuare l'operazione desiderata.

### Esempio pratico

Supponiamo di avere due PC, con indirizzo IP 192.168.0.1 e 192.168.0.2, rispettivamente. Essi necessitano di connettersi ad uno stesso server remoto ad una determinata porta: assumiamo che il server sia un server web (WS) posto all'indirizzo 102.20.30.40 in ascolto sulla porta standard 80. La rete locale dispone di un Default Gateway (DG), un router, con IP 192.168.0.254. Entrambi i client contatteranno il DG perché instradi le loro richieste verso 102.20.30.40:80. La connessione effettiva si avrà allora tra il DG e il WS.

Le quintuple che definiscono la connessione, ovvero il socket, ricordiamo sono costituite da:

* Protocollo (TCP per entrambe, nell'esempio)
* IP di destinazione (identico per entrambe nell'esempio, quello del WS)
* Porta di destinazione (identico per entrambe nell'esempio, quello del WS)
* IP sorgente (identico per entrambe nell'esempio, in particolare quello del DG)
* Porta sorgente, non è fissata a priori

Si sa che dovendo distinguere le due richieste, per instradare correttamente la risposta di WS, il DG abbia bisogno di distinguere le due connessioni. E ciò avviene proprio sfruttando l'informazione contenuta nel quinto campo.

In particolare, se per la richiesta del primo client il DG utilizza la porta 1024, e per il secondo la porta 1025, le risposte che dal WS gli arrivano alla porta 1024 dovranno essere instradate verso il primo client e quelle che dal WS arrivano alla porta 1025 dovranno essere instradate verso il secondo client.

Ecco che allora, di fatto si realizza la "traduzione" di una porta in un indirizzo. Ovviamente tale "mapping" è effimero e dinamico.

