# Redirection de port

Le réacheminement de port (port forwarding ou port mapping en anglais) consiste à rediriger des paquets réseaux reçus sur un port donné d'un ordinateur ou un équipement réseau vers un autre ordinateur ou équipement réseau sur un port donné. Cela permet entre autres de proposer à des ordinateurs extérieurs à un réseau d'accéder à des services répartis sur plusieurs ordinateurs de ce réseau.

## Prérequis

Avec le développement de l'Internet haut débit, la majorité des internautes ont abandonné leur modem 56k qu'ils ont remplacé par un adaptateur ADSL ou câble faisant également office de routeur.
Avec l'émergence du Wi-Fi et le développement de ces boîtiers ADSL, la majorité des adaptateurs ADSL sont configurés par défaut en mode routeur, ce qui signifie que les ordinateurs reliés au modem ADSL ne sont pas directement "visibles" depuis l'extérieur du réseau, à savoir l'Internet.
Un routeur relie deux réseaux (au moins) entre eux. De même, ce type d'adaptateur ADSL fait communiquer deux réseaux bien distincts :
* Un entre l'adaptateur ADSL et Internet (ou plus précisément le Fournisseur d'accès à Internet FAI).
* Celui entre l'adaptateur ADSL et les ordinateurs locaux qui y sont reliés.
Ce que donne :
* Le réseau 1 est le réseau interne (intranet).
* Le réseau 2 est le réseau externe (internet).

## Le principe du NAT

On nomme NAT, acronyme de Network Address Translation (traduction d'adresses réseau), un mécanisme de traduction d'adresses mis au point pour répondre à la pénurie d'adresses IP de classe A et B avec le protocole IPv4. En effet, non seulement l'adressage IPv4, sur 4 octets seulement, était incapable de prendre en charge plus de quelques milliards d'adresses, mais ce nombre était fortement réduit par l'attribution de domaines dont la taille était toujours une puissance de 2 moins deux (l'adresse formée de 0 dans un domaine le désignant comme réseau, et l'adresse formée de 1 étant celle de broadcast s'adressant à toutes les machines en même temps). Les choses étaient encore aggravées par une segmentation arbitraire en classes A, B et C dont les tailles n'étaient plus adaptées aux besoins, bien que le système de routage sans classe CIDR ait assoupli quelque temps le système.
Le principe du NAT consiste à utiliser une passerelle de connexion à internet, possédant au moins une interface réseau connectée sur le réseau interne et au moins une interface réseau connectée à Internet (possédant une adresse IP routable), pour connecter l'ensemble des machines du réseau.
C'est le modem routeur qui fait office de passerelle de connexion internet ; il doit effectuer au vol la traduction d'adresses pour permettre à toute machine d'accéder à internet. Tout individu distant peut seulement connaître l'adresse IP du modem ADSL, mais pas celles des ordinateurs au sein du réseau, ceux-ci sont donc semi-protégés : il est en effet toujours possible de retrouver le couple (IP, port) d'une machine à partir du numéro (IP, port) externe, mais seulement pour l'ingénieur réseau pouvant consulter fichiers journaux du réseau (log files), et uniquement pendant la durée de conservation de ceux-ci.

## L'utilité des ports

Sur votre ordinateur, de nombreux programmes peuvent utiliser le réseau. Pour communiquer avec un programme réseau de ce type, il faut donc autre chose que l'adresse IP, c'est là qu'interviennent les ports. Chaque programme qui fonctionne en réseau utilise un port particulier (les ports d'un ordinateur sont numérotés de 0 à 65535) sur votre ordinateur.
Pour faire une comparaison grossièrement, l'adresse IP peut être apparentée à l'adresse postale d'un immeuble. Un port peut être apparenté à une boîte à lettres de cet immeuble. Et nous avons besoin de ces deux données pour que quelque chose puisse arriver à son destinataire.

## Le réacheminement de port

Mais alors, si une application d'un utilisateur distant (individu connecté à internet) doit communiquer spécifiquement avec mon ordinateur qui est "caché" derrière mon modem ADSL routeur, comment faire ?
Le réacheminement de port permet ce type de communications en créant une sorte de voie de communication bien précise.
* Le modem routeur se situe à la jonction des deux zones, le réseau interne et le réseau externe (Internet via le FAI) c'est lui qui effectue la traduction d'adresses réseaux (Network Address Translation).
* Le client 1 (un ordinateur du réseau interne) souhaite se connecter à un serveur externe au réseau, il émet une trame depuis le port 1024.
Le client 2 (un second ordinateur du réseau interne) fait de même.
* Le routeur applique les règles de NAT et lance deux communications au serveur concerné, l'une sur un port bien précis (2028) pour le client 1, l'autre sur un autre (2027) pour le client 2.
Dès lors, lorsque le serveur répondra en émettant depuis le port 2027, cela signifiera pour le routeur que le message est adressé au client 2, s'il s'agit du port 2028, alors il faut transmettre le message au client 1.
Cela est valable dans les deux sens réseau interne ↔ externe.
La traduction d'adresse est effectuée par la NAT (Network Address Translation).
Le réacheminement de ports consiste en 2 étapes : il faut d'abord configurer le port à ouvrir (numéro de début et de fin des ports à ouvrir, protocole utilisé) et ensuite le rediriger vers la machine sur laquelle le port doit être ouvert.
Typiquement, les logiciels qui ont besoin de connexion directe entre divers ordinateurs à travers le monde nécessitent un réacheminement de port. Exemples : jeux, logiciels de poste à poste.
Des programmes comme MSN messenger/IRC ne nécessitent pas de réacheminement de port car il ne s'agit pas d'une connexion directe entre utilisateurs. Chaque trame transmise passe par un intermédiaire : le serveur.
<utilisateur A>---<modem>-----------------<Serveur>-----------------<modem>---<utilisateur B>
Chaque utilisateur ne parle qu'au serveur. Et c'est le serveur qui parle à tous les utilisateurs. Il retransmet les messages de tout le monde à chaque client connecté.
Dans le cas d'un réseau p2p, les clients se parlent directement entre eux, il faut donc préciser sur quel port précis le réacheminement s'applique afin que les logiciels communiquent correctement entre eux. Remarque : les serveurs de type eMule sont utilisés uniquement pour l'indexation et la recherche de fichiers sur le réseau.