Un routeur, comme son nom l'indique, redirige les paquets qu'il reçoit en fonction d'une table de routage vers le routeur suivant jusqu'à atteindre le réseau local de destination. Chaque paquet comporte l'adresse d'origine et l'adresse de destination. Dans le cas d'adresses privées, l'adresse d'origine est une adresse privée inconnue de l'Internet. Le destinataire ne pourra pas répondre. Il faut donc remplacer l'adresse privée d'origine par une adresse publique. C'est le travail du routeur NAT (Network Address Translation) qui effectue la transformation des adresses. Pour pouvoir configurer correctement un routeur NAT, il faut comprendre la notion de port.
Le protocole TCP/IP utilise des ports (un nombre de 0 à 65535) comme le moyen de nommer les bouts d'une connexion logique, une conversation qui comporte plusieurs échanges. Les ports permettent de réaliser simultanément des milliers de connexions logiques sur la même adresse IP. Ils permettent de partager la liaison Internet entre des programmes différents et des machines différentes à la maison. Comme pour les adresses IP, l'IANA a classé les ports en 3 catégories. De 0 à 1023, les "Well Known" ports utilisables seulement par le système ou des fonctions associées, de 1024 à 49151 les "Registered" ports utilisables par les programmes utilisateurs, de 49152 à 65535 les ports dynamiques ou privés. Par défaut, le protocole http utilise le port 80, le POP3 le port 110, etc...
Lorsqu'une machine du réseau local envoie des paquets à un serveur à l'extérieur, l'adresse d'origine est une adresse privée. Le destinataire ne pourra pas répondre à cette adresse. Pour résoudre ce problème, le routeur NAT remplace l'adresse et le port d'origine par l'adresse Internet publique du routeur et un numéro de port libre choisi au hasard en notant adresse et port associés à la machine locale (voir sur le dessin ci-après).
La machine de destination renvoie la réponse sur l'adresse et le port visible de l'Internet au routeur NAT. Celui-ci fait alors la transformation inverse pour renvoyer les paquets vers la machine locale. Dans ce cas de figure, il n'y a rien de spécial à configurer. C'est comme cela que fonctionnent les messageries instantanées. Le logiciel de la machine sur le réseau privé se connecte au serveur de messagerie qui connaît ainsi l'adresse externe et le numéro de port du routeur qui permet de contacter cette machine.
En revanche, une machine qui appelle depuis l'Internet pour atteindre une adresse privée n'a aucun moyen d'y arriver puisque le routeur ne sait pas sur quelle machine du réseau Interne, il faut router l'appel. Il existe un moyen qui s'appelle port forwarding.