La NAT basa il suo funzionamento, come dice il termine, sulla
traduzione degli indirizzi di rete: nel router, in cui è abilitata la NAT, viene creata una tabella, detta appunto
NAT Table, che memorizza per ogni richiesta in uscita dalla rete LAN un set di porte, scelto in maniera casuale, e uno (o l'unico) degli indirizzi IP pubblici forniti dall'ISP.
In questo modo, ad esempio, un pacchetto in uscita dal nostro PC 192.168.0.12 verso l'indirizzo 1.2.3.4 sulla porta 80, verrà analizzato dal router, che provvederà a inserire un'apposita voce nella
NAT table, memorizzando tale richiesta; il router si occuperà quindi di
modificare l'indirizzo IP della richiesta, sostituendo all'indirizzo 192.168.0.12 il proprio indirizzo IP esterno, ossia 87.12.13.14, e attribuendo una diversa porta origine, ad esempio la porta 2048.
Quando il router riceverà un pacchetto dall'host 1.2.3.4, verificherà se nella
NAT table è presente la corrispondente voce relativa a una richiesta effettuata verso tale host: saprà così di dover indirizzare il pacchetto ricevuto all'host 192.168.0.12, che aveva originariamente effettuato la richiesta; se non viene trovata alcuna corrispondenza nella
NAT table, il pacchetto viene scartato.
La tecnica appena vista è detta
NAT dinamico o
IP masquerading, ed è un caso particolare di
Source NAT, ovvero di sostituzione dell'indirizzo IP sorgente; altri nomi utilizzati per tale tecnica sono
Port Address Translation (PAT) e
IP Overloading, in quanto oltre alla traduzione dell'indirizzo, viene effettuato anche un cambiamento della porta utilizzata ; ciò avviene perché, altrimenti, un solo host della rete per volta potrebbe effettuare richieste.
In questo esempio, però, non abbiamo ottenuto lo scopo che ci eravamo prefissi, ovvero di far sì che i client esterni alla nostra rete locale 192.168.0.0/16 possano collegarsi al programma
eMule, in esecuzione sul laptop all'indirizzo 192.168.0.12, in quanto come specificato, la tecnica utilizzata consente di effettuare una comunicazione dall'interno della rete LAN all'esterno, ma non viceversa.
Per ottenere il nostro scopo, occorre definire una
Static NAT: in pratica occorre popolare la
NAT table vista in precedenza, fornendo al router le indicazioni sulla destinazione, alla quale inoltrare i pacchetti in arrivo sull'interfaccia WAN a una determinata porta. Nel nostro caso, occorre indirizzare tutti i pacchetti TCP in arrivo sulla porta 4662, dell'interfaccia WAN del router, alla porta TCP 4662 del laptop all'indirizzo IP 192.168.0.12, e tutti i pacchetti UDP in arrivo sulla porta 4672 del router alla corrispondente porta UDP 4672 del laptop; in questo modo, i client
eMule remoti potranno inoltrare le richieste al nostro router, che le girerà in maniera trasparente al client
eMule in esecuzione sul nostro laptop.