NAT : traduction d’adresse réseau dans le routeur

Depuis juin 2012, la sixième version du protocole Internet IPv6 apporte une solution à la pénurie croissante d’adresses IP. Toutefois, la transition vers le nouveau standard Internet progresse relativement lentement.

En effet, selon une statistique de Google d’octobre 2016, plus de 85 pourcent des utilisateurs d’Internet du monde entier utilisaient encore l’ancien protocole réseau IPv4. Cependant, avec près de 4,3 milliards d’adresses, ce dernier ne suffit plus à approvisionner le grand nombre de périphériques et de dispositifs Internet avec des adresses IP uniques. Il n’y a pas seulement les ordinateurs, tablettes ou smartphones qui ont besoin d’un accès en ligne. Désormais, dans le cadre de l’Internet des objets (IdO), même les réfrigérateurs, les balances ou encore les machines à café deviennent des appareils connectés au réseau.

IPv4 compense le problème de pénurie d’adresses depuis le début des années 90 en établissant une distinction claire entre les adresses privées et publiques. Dans les réseaux locaux (ou LAN), les appareils Internet dotés d’adresses IP privées sont adressés localement et connectés à Internet via une adresse IP publique commune. Le routeur est l’intermédiaire entre les adresses publiques et privées. C’est ici que la traduction d’adresse réseau (NAT) est effectuée.

Qu’est-ce que NAT ?

L’abréviation NAT signifie Network Address Translation, soit une traduction d’adresse entre deux réseaux, qui se fait généralement dans le routeur. A noter qu’il est fréquent de trouver aussi l’expression « translation d’adresses », a tort puisqu’il s’agit d’une confusion linguistique. L’objectif de cette procédure est de connecter les réseaux locaux à Internet. Il existe deux types de traduction d’adresses réseau : le NAT de source (SNAT) et le NAT de destination (DNAT).

NAT source

Les utilisateurs privés entrent en contact avec la traduction d’adresse réseau principalement sous la forme de NAT de source. La procédure est utilisée dans les réseaux domestiques et d’entreprises, lorsqu’un périphérique réseau avec une adresse IPv4 privée doit accéder à Internet via une adresse IP publique. Dans le langage courant, cependant, le terme NAT est utilisé même si sa signification n’est pas claire.

Définitions des termes : NAT vs. PAT

Une distinction doit être faite entre l’attribution d’une adresse IP publique distincte (1:1 translation), à chaque adresse IP privée individuelle dans un réseau local, ou si tous les périphériques réseau partagent la même IP publique (n:1 translation).

Strictement parlant, seule la traduction 1:1 est une traduction d’adresse réseau au sens littéral du terme, car dans ce cas, seules les adresses réseau sont réécrites. La traduction n :1, par contre nécessite un réglage supplémentaire du numéro de port. Cette méthode est donc appelée PAT (Port and Address Translation soit en français traduction d’adresse de port) ou NAPT (Network Address Port Translation).

Étant donné que le concept PAT est la norme dans les réseaux domestiques et d'entreprise basés sur IPv4, cette procédure est souvent appelée à tort NAT. Des termes courants tels que routeur NAT ou table NAT sont également utilisés dans le cadre des concepts PAT. Ainsi, quand on parle de NAT aujourd'hui,  il s'agit généralement de PAT ou encore de NAPT. 

Fonctionnement du PAT (Port and Address Translation)

En règle générale, la traduction d’adresse réseau est utilisée sous forme de PAT pour connecter plusieurs appareils locaux à Internet via une adresse IP commune.

Comme les adresses IP ne sont pas routables (elles n’ont donc aucune signification sur Internet), les paquets de données envoyés par un ordinateur (client) dans le réseau local à un serveur sur Internet, doivent être pourvus d’une adresse IP publique par le routeur. Pour cela, le client échange l’adresse IP privée du client stockée dans l’en-tête du paquet de données avec sa propre adresse IP publique.  De plus, le numéro de port interne utilisé est remplacé par un port libre du routeur. Cela signifie que le serveur agit en tant qu’expéditeur de tous les paquets de données envoyés du réseau local aux serveurs sur Internet.

Toutes les informations de connexion (adresses IP, ports et timeouts) sont stockées dans la table NAT (il faudrait aussi ici parler d’une table PAT). Si le serveur adressé répond à la requête de l’ordinateur local avec un paquet de données, il est d’abord renvoyé au port correspondant du routeur. La tâche de ce dernier est donc d’assigner le paquet de données entrant au périphérique réseau correspondant qui a lancé la requête. Le routeur nécessite simplement les informations de connexion qui sont stockées dans la table NAT. Ce qui peut ressembler à l’exemple expliqué ci-dessous.

Nous supposons qu'un routeur a reçu l'adresse IP publique 217.229.111.18 d'un fournisseur d’accès Internet (FAI ou en anglais ISP pour Internet service provider) et agit par défaut comme passerelle pour un réseau local. Ceci fournit donc pour les périphériques réseau la plage d'adresses IP privées 192.168.168.0.0.0/24 (toutes les adresses de 192.168.0.0 à 192.168.0.0.24). Si l’un de ces périphériques (par exemple un ordinateur avec l’adresse IP privée 192.162.0.2) souhaite établir une connexion à Internet (par exemple à un serveur Web avec l’IP publique 71.123.239.82 à son numéro de port 80), il réserve un port interne (ex. 22433) et transmet la demande de connexion au routeur répertorié par défaut comme passerelle. Elle peut être adressée en interne via l’IP 192.168.0.1 privée et communique en externe avec l’IP publique 217.229.111.18.

Le routeur obtiendra ainsi les informations suivantes : l’appareil 192.168.0.2 veut établir une connexion sur le port 22433 à 71.123.239.82 sur le port 80. Pour cette requête, le routeur doit remplacer l’adresse source de l’appareil ou périphérique LAN (adresse IP et numéro de port) par l’adresse de l’expéditeur. Pour cela, Il réserve donc un port libre arbitraire (par exemple 61001) et transmet la traduction d’adresse réseau : 192.168.0.2:22433 devient 217.229.111.18:61001. Toutes les informations pertinentes sont stockées dans la table NAT du routeur.

IP privée du client Port du client IP publique du routeur Port public du routeur  
192.168.0.2 22433 217.229.111.18 61001  

Dès qu’elle est reçue par le serveur Web, la requête est traitée et, si possible,  avec le paquet de données demandé (par exemple les données d'un site Web). Cette réponse atteint d'abord le routeur et est transmise ensuite par le routeur à l'aide des informations de connexion stockée. Selon la table NAT, le port externe 61001 est réservé aux paquets de réponse envoyés au port 22433 du périphérique réseau 192.168.0.2.

En plus des adresses IP et des numéros de port, les routeurs enregistrent aussi un marqueur de temps pour chaque connexion dans la table NAT. Ceci sert de timeout et indique quand l'entrée correspondante peut alors être supprimée. Cela garantit le fait que les ports ne restent pas en permanence ouverts notamment lorsqu'ils sont inactifs pour empêcher qu’ils deviennent des portes d'entrée d’attaques venant de la Toile.

NAT de destination

Tandis que le NAT de source permet les connexions entre le réseau local (LAN) et Internet, le NAT de destination est utilisé pour rendre un périphérique local accessible en permanence pour les connexions entrantes d’Internet. Pour cela, un port public est relié en permanence à l’adresse IP d’un périphérique du réseau local via la configuration du routeur. Tous les paquets de données qui arrivent au port correspondant sont automatiquement transférés à l’adresse de destination locale. C’est ce que l’on nomme la redirection de port (ou port forwarding en anglais). 

Cette procédure est utilisée, par exemple si un serveur doit apporter des services à partir du réseau local sur Internet. Cependant, les ports ainsi ouverts posent un risque pour la sécurité. Il est donc conseillé de protéger le réseau local du trafic Internet en isolant les périphériques qui peuvent être adressés par redirection de port dans des zones démilitarisées (ou DMZ).

NAT : caractéristique de sécurité ou vulnérabilité ?

La traduction d’adresse réseau dans le routeur est parfois considérée comme une caractéristique de sécurité en raison de la stricte séparation entre le réseau local et Internet. Cependant la fonction présumée de protection n’est qu’un effet secondaire. PAT et NAT ont été développés pour pallier à la pénurie d’adresses IPv4. Et la procédure n’apporte pas les fonctions d’un pare-feu ou d’un filtre de paquets. 

Toutefois, NAT et PAT offrent toujours un certain degré de confidentialité aux utilisateurs des réseaux privés. En effet, comme tous les périphériques locaux d’un LAN IPV4 sont connectés via la même adresse IP publique, les utilisateurs surfent sur le Net plus ou moins anonymement. L’hôte individuel derrière le routeur du réseau ne peut pas être adressé directement via Internet, à moins que la redirection de port n’ait été configurée à cet effet. Pour les observateurs externes, toutes les requêtes du réseau local (LAN) semblent donc émaner du routeur.

En outre, la méthode comporte une fonction de protection qui garantit que toutes les tentatives de connexion initiées de l’extérieur sont automatiquement rejetées à moins que vous ne les désactiviez avec les déblocages de port. Les paquets de réponse provenant du Web ne sont acceptés que si les réponses du serveur sont attendues sur un port spécifique du routeur. Cependant, le serveur Web qui répond n’est pas vérifié dans NAT ou PAT. Si un port routeur a été ouvert dans le cadre d'une configuration de connexion initiée en interne, cela représente une faille de sécurité. Il est donc recommandé de mettre en place des mécanismes de sécurité supplémentaires tels que pare-feu et filtres de paquets.

Il ne faut pas oublier les faiblesses de la traduction d’adresse réseau via NAT ou PAT, qui résultent principalement de la stricte séparation des espaces d’adresses privés et publics. Il s’agit d’une rupture dans le principe de bout en bout de l’architecture du réseau Internet. La NAT devient donc un problème pour les applications Internet basées sur ce principe d’architecture.

Les protocoles comme FTP reposent sur le fait que les hôtes sur Internet communiquent directement entre eux sans qu’un nœud intermédiaire ne change les adresses IP ou les numéros de port. Ainsi, les réseaux IPv4 basés sur NAT ne peuvent être utilisés qu’à l’aide de technologies de contournement.  Cependant, chaque mécanisme supplémentaire nécessaire accroît la complexité et la vulnérabilité aux erreurs d’un système informatique. La mise en œuvre cohérente du principe de bout en bout est donc l’objectif central du nouveau standard Web IPv6.

IPv6 : la fin de NAT ?

Avec la sixième version du protocole Internet, le nombre d’adresses IP disponibles a été décuplé. Au lieu de 4,3 milliards d’adresses IPv4, il existe en théorie 340 sextillions d’adresses IPv6 disponibles pour connecter les périphériques réseau à Internet. En d’autres termes, chaque machine à café peut ainsi avoir son adresse IP unique. La traduction d’adresse réseau via NAT est donc obsolète, mais peut encore être utilisée dans les réseaux IPv6 pour protéger les plages d’adresses privées du réseau public.