Depuis juin 2012, la sixième version du protocole Internet IPv6 apporte une solution à la pénurie crois­sante d’adresses IP. Toutefois, la tran­si­tion vers le nouveau standard Internet progresse re­la­ti­ve­ment lentement. En effet, selon une sta­tis­tique de Google d’octobre 2016, plus de 85 pourcent des uti­li­sa­teurs d’Internet du monde entier uti­li­saient encore l’ancien protocole réseau IPv4. Cependant, avec près de 4,3 milliards d’adresses, ce dernier ne suffit plus à ap­pro­vi­sion­ner le grand nombre de pé­ri­phé­riques et de dis­po­si­tifs Internet avec des adresses IP uniques. Il n’y a pas seulement les or­di­na­teurs, tablettes ou smart­phones qui ont besoin d’un accès en ligne. Désormais, dans le cadre de l’Internet des objets (IdO), même les ré­fri­gé­ra­teurs, les balances ou encore les machines à café de­vien­nent 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 éta­blis­sant une dis­tinc­tion 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 lo­ca­le­ment et connectés à Internet via une adresse IP publique commune. Le routeur est l’in­ter­mé­diaire entre les adresses publiques et privées. C’est ici que la tra­duc­tion d’adresse réseau (NAT) est effectuée.

Qu’est-ce que NAT ?

L’abré­via­tion NAT signifie Network Address Trans­la­tion, soit une tra­duc­tion d’adresse entre deux réseaux, qui se fait gé­né­ra­le­ment dans le routeur. A noter qu’il est fréquent de trouver aussi l’ex­pres­sion « trans­la­tion d’adresses », a tort puisqu’il s’agit d’une confusion lin­guis­tique. L’objectif de cette procédure est de connecter les réseaux locaux à Internet. Il existe deux types de tra­duc­tion d’adresses réseau : le NAT de source (SNAT) et le NAT de des­ti­na­tion (DNAT).

NAT source

Les uti­li­sa­teurs privés entrent en contact avec la tra­duc­tion d’adresse réseau prin­ci­pa­le­ment sous la forme de NAT de source. La procédure est utilisée dans les réseaux do­mes­tiques et d’en­tre­prises, lorsqu’un pé­ri­phé­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 sig­ni­fi­ca­tion n’est pas claire.

Dé­fi­ni­tions des termes : NAT vs. PAT

Une dis­tinc­tion doit être faite entre l’at­tri­bu­tion d’une adresse IP publique distincte (1:1 trans­la­tion), à chaque adresse IP privée in­di­vi­duelle dans un réseau local, ou si tous les pé­ri­phé­riques réseau partagent la même IP publique (n:1 trans­la­tion).

Stric­te­ment parlant, seule la tra­duc­tion 1:1 est une tra­duc­tion d’adresse réseau au sens littéral du terme, car dans ce cas, seules les adresses réseau sont réécrites. La tra­duc­tion n :1, par contre nécessite un réglage sup­plé­men­taire du numéro de port. Cette méthode est donc appelée PAT (Port and Address Trans­la­tion soit en français tra­duc­tion d’adresse de port) ou NAPT (Network Address Port Trans­la­tion).

Étant donné que le concept PAT est la norme dans les réseaux do­mes­tiques et d'en­tre­prise 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 au­jour­d'hui,  il s'agit gé­né­ra­le­ment de PAT ou encore de NAPT. 

Fonc­tion­ne­ment du PAT (Port and Address Trans­la­tion)

En règle générale, la tra­duc­tion 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 sig­ni­fi­ca­tion sur Internet), les paquets de données envoyés par un or­di­na­teur (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’ex­pé­di­teur de tous les paquets de données envoyés du réseau local aux serveurs sur Internet.

Toutes les in­for­ma­tions 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’or­di­na­teur local avec un paquet de données, il est d’abord renvoyé au port cor­res­pon­dant du routeur. La tâche de ce dernier est donc d’assigner le paquet de données entrant au pé­ri­phé­rique réseau cor­res­pon­dant qui a lancé la requête. Le routeur nécessite sim­ple­ment les in­for­ma­tions de connexion qui sont stockées dans la table NAT. Ce qui peut res­sem­bler à l’exemple expliqué ci-dessous.

Nous supposons qu'un routeur a reçu l'adresse IP publique 217.229.111.18 d'un four­nis­seur d’accès Internet (FAI ou en anglais ISP pour Internet service provider) et agit par défaut comme pas­se­relle pour un réseau local. Ceci fournit donc pour les pé­ri­phé­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é­ri­phé­riques (par exemple un or­di­na­teur 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é­per­to­rié par défaut comme pas­se­relle. Elle peut être adressée en interne via l’IP 192.168.0.1 privée et com­mu­nique en externe avec l’IP publique 217.229.111.18.

Le routeur obtiendra ainsi les in­for­ma­tions 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é­ri­phé­rique LAN (adresse IP et numéro de port) par l’adresse de l’ex­pé­di­teur. Pour cela, Il réserve donc un port libre ar­bi­traire (par exemple 61001) et transmet la tra­duc­tion d’adresse réseau : 192.168.0.2:22433 devient 217.229.111.18:61001. Toutes les in­for­ma­tions per­ti­nentes 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 in­for­ma­tions 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é­ri­phé­rique réseau 192.168.0.2.

En plus des adresses IP et des numéros de port, les routeurs en­re­gistrent aussi un marqueur de temps pour chaque connexion dans la table NAT. Ceci sert de timeout et indique quand l'entrée cor­res­pon­dante peut alors être supprimée. Cela garantit le fait que les ports ne restent pas en per­ma­nence ouverts notamment lors­qu'ils sont inactifs pour empêcher qu’ils de­vien­nent des portes d'entrée d’attaques venant de la Toile.

NAT de des­ti­na­tion

Tandis que le NAT de source permet les con­nexions entre le réseau local (LAN) et Internet, le NAT de des­ti­na­tion est utilisé pour rendre un pé­ri­phé­rique local ac­ces­sible en per­ma­nence pour les con­nexions entrantes d’Internet. Pour cela, un port public est relié en per­ma­nence à l’adresse IP d’un pé­ri­phé­rique du réseau local via la con­fi­gu­ra­tion du routeur. Tous les paquets de données qui arrivent au port cor­res­pon­dant sont au­to­ma­ti­que­ment trans­fé­rés à l’adresse de des­ti­na­tion locale. C’est ce que l’on nomme la re­di­rec­tion de port (ou port for­war­ding 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é­ri­phé­riques qui peuvent être adressés par re­di­rec­tion de port dans des zones dé­mi­li­ta­ri­sées (ou DMZ).

NAT : ca­rac­té­ris­tique de sécurité ou vul­né­ra­bi­lité ?

La tra­duc­tion d’adresse réseau dans le routeur est parfois con­si­dé­rée comme une ca­rac­té­ris­tique de sécurité en raison de la stricte sé­pa­ra­tion entre le réseau local et Internet. Cependant la fonction présumée de pro­tec­tion n’est qu’un effet se­con­daire. PAT et NAT ont été dé­ve­lop­pé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 con­fi­den­tia­lité aux uti­li­sa­teurs des réseaux privés. En effet, comme tous les pé­ri­phé­riques locaux d’un LAN IPV4 sont connectés via la même adresse IP publique, les uti­li­sa­teurs surfent sur le Net plus ou moins ano­ny­me­ment. L’hôte in­di­vi­duel derrière le routeur du réseau ne peut pas être adressé di­rec­te­ment via Internet, à moins que la re­di­rec­tion de port n’ait été con­fi­gu­rée à cet effet. Pour les ob­ser­va­teurs externes, toutes les requêtes du réseau local (LAN) semblent donc émaner du routeur.

En outre, la méthode comporte une fonction de pro­tec­tion qui garantit que toutes les ten­ta­tives de connexion initiées de l’extérieur sont au­to­ma­ti­que­ment rejetées à moins que vous ne les dé­sac­ti­viez avec les dé­blo­cages 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é­ci­fique 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 con­fi­gu­ra­tion de connexion initiée en interne, cela re­pré­sente une faille de sécurité. Il est donc re­com­mandé de mettre en place des mé­ca­nismes de sécurité sup­plé­men­taires tels que pare-feu et filtres de paquets.

Il ne faut pas oublier les fai­blesses de la tra­duc­tion d’adresse réseau via NAT ou PAT, qui résultent prin­ci­pa­le­ment de la stricte sé­pa­ra­tion des espaces d’adresses privés et publics. Il s’agit d’une rupture dans le principe de bout en bout de l’ar­chi­tec­ture du réseau Internet. La NAT devient donc un problème pour les ap­pli­ca­tions Internet basées sur ce principe d’ar­chi­tec­ture.

Les pro­to­coles comme FTP reposent sur le fait que les hôtes sur Internet com­mu­ni­quent di­rec­te­ment entre eux sans qu’un nœud in­ter­mé­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 tech­no­lo­gies de con­tour­ne­ment.  Cependant, chaque mécanisme sup­plé­men­taire né­ces­saire accroît la com­plexité et la vul­né­ra­bi­lité aux erreurs d’un système in­for­ma­tique. 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 dis­po­nibles a été décuplé. Au lieu de 4,3 milliards d’adresses IPv4, il existe en théorie 340 sex­til­lions d’adresses IPv6 dis­po­nibles pour connecter les pé­ri­phé­riques réseau à Internet. En d’autres termes, chaque machine à café peut ainsi avoir son adresse IP unique. La tra­duc­tion 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.

Aller au menu principal