Translations d'adresses réseaux (NAT) : Théorie

Formation Stormshield Network Security

Tutorial Thumbnail

Afin de faire face à la pénurie d'adresses IP publiques, des mécanismes de traduction d'adresses ont été développés. C'est alors que le mécanisme du NAT (pour Network Address Translation) va entrer en jeux. Le principe de base est d'utiliser des adresses IP privées - définies par l'IANA (Internet Assigned Numbers Authority) et notifiées par la RFC 1918 - au niveau du réseau local et de les connecter à des adresses Internet via une seule IP publique.


Dans ce cours, nous allons aborder dans un premier temps l'apport théorique du principe du NAT (Network Address Translation) afin de comprendre le mécanisme. Puis, nous allons ensuite au niveau de la configuration sur le pare-feu SNS du NAT.


Composition d'un paquet IP

Un paquet IP, Ă©galement appelĂ© datagramme IP, est l'unitĂ© de base de donnĂ©es utilisĂ©e pour transmettre des informations sur Internet. Il s'agit d'une structure de donnĂ©es qui contient Ă  la fois les donnĂ©es elles-mĂȘmes et les informations nĂ©cessaires pour acheminer de maniĂšre fiable les donnĂ©es d'un point du rĂ©seau Ă  un autre.



Un paquet IP se compose de deux parties principales : l'en-tĂȘte et les donnĂ©es.

  • L'en-tĂȘte contient des informations de base sur le paquet, telles que les adresses IP de l'expĂ©diteur et du destinataire, des informations de contrĂŽle pour gĂ©rer le routage et la gestion des erreurs, et des informations sur le type de protocole utilisĂ© pour les donnĂ©es contenues dans le paquet.
  • Les donnĂ©es proprement dites sont les informations rĂ©elles que l'expĂ©diteur souhaite transmettre au destinataire. Cela peut inclure, par exemple, des segments de texte, des images, des fichiers ou tout autre type de donnĂ©es.


Toute cette en-tĂȘte Ă©quivaut Ă  des mots de 4 octets (32 bits) au total. En moyenne, un paquet IP compte de 128 Ă  256 octets dont 20 octets et plus dans l'en-tĂȘte et au maximum 65535 octets moins (-) la taille de l'en-tĂȘte maximale dans la partie donnĂ©es. Actuellement sur le rĂ©seau, cela tourne aux Ă©quivaut de 1500 octets sur le rĂ©seau. ForcĂ©ment la taille de chaque octet est un multiple de quatre.


Dans cet en-tĂȘte de 20 octets, nous allons la partie "IP Options" qui va permettre de dĂ©finir l'ensemble des "options" qui nous intĂ©resse pour la partie NAT et pour l'analyse de flux. Elle peut avoir au maximum 24 octets, mais gĂ©nĂ©ralement cet en-tĂȘte n'est rarement utilisĂ©.


DĂ©taillons ensemble rapidement la composition d'un paquet IP en rappelant les usages de chacun :

  • Version : indique la version du paquet pour "4" si il s'agit d'un paquet IPv4 ou "6" s'il s'agit d'un paquet IPv6. Cela va permettre d'identifier le type du paquet transitĂ©.
  • IHL (Header Length) : va fournir Ă  l'Ă©quipement le nombre d'octets dans la partie de l'en-tĂȘte. De ce fait, il sera capable de sĂ©parer la partie en-tĂȘte et la partie des donnĂ©es.
  • TOS (Type of Service) : son rĂŽle va ĂȘtre d'indiquer aux Ă©quipement qui reçoivent ce paquet lui donne une prioritĂ© et un type de service particulier.
  • Total Length (Longueur totale) : taille du paquet en octet en prenant la taille de l'en-tĂȘte (Header) + la partie des donnĂ©es (Data).
  • Identification, Flags, Fragment Offset (Position du fragment) : pour faire simple, ces 4 mots sont prĂ©sents pour la fragmentation IP.
  • Etant donnĂ© qu'il n'est pas possible de transmettre sur un rĂ©seau un paque qui a une taille supĂ©rieure Ă  1500 octets.
  • Si un paquet se prĂ©sente avec un MTU (Taille totale) excĂšde cette limitation, le paquet IP sera alors dĂ©coupĂ© en plusieurs parties, puis seront envoyĂ©s en plusieurs parties (en fragments) sur le rĂ©seau.
  • Le rĂ©cepteur (routeur de destination) aura la charge de reconstituer les fragments qu'ils a reçus afin de reconstruire le paquet IP dans son entiĂšretĂ©.
  • TTL (Time To Leave) : durĂ©e de vie maximale d'un paquet IP.
  • Permets d'Ă©viter Ă©normĂ©ment de problĂšmes rĂ©seaux : imaginez un paquet qui tourne depuis des annĂ©es sur le rĂ©seau dans durĂ©e de vie... le rĂ©seau pourrais ĂȘtre saturĂ© !
  • Le rĂŽle du TTL dĂ©crĂ©mente de 1 par passage de routeur, en se comptant lui-mĂȘme.
  • Si le TTL vaut 0, le paquet est droppĂ© (dĂ©truit par le routeur qui Ă  le paquet TTL=0).
  • Protocole : dĂ©crit quel type de donnĂ©e nous allons transmettre : TCP, UDP, ICMP...
  • Somme de contrĂŽle (checksum) : permets de contrĂŽler les erreurs de transmissions du paquet, gĂ©rĂ© uniquement dans l'en-tĂȘte du paquet lui-mĂȘme.
  • Chaque octets du paquet IP aura une valeur et vont ĂȘtre additionnĂ©es.
  • La somme de tous les octets sera posĂ© dans le champ "Checksum", lors de l'envoi du paquet.
  • DĂšs rĂ©ception, le routeur de destination compte Ă©galement tous les octets de l'en-tĂȘte et si le rĂ©sultat qui a obtenu corresponds Ă  la valeur du champ Checksum, alors le paquet est valide, aucune erreur de transmission.
  • Dans le cas contraire, le paquet est droppĂ©. L'utilisateur ne sera pas informĂ© de l'erreur, l'action est rĂ©alisĂ©e au niveau 2 du modĂšle OSI, devra ĂȘtre gĂ©rĂ© par les couches supĂ©rieures. Il vĂ©rifie uniquement si le checksum est respectĂ© : il transmet, sinon il dĂ©truit !
  • Champs IP :
  • Source Address (Adresse source Internet) : il s'agit de l'adresse IP de l'Ă©quipement qui va Ă©mettre, envoyer le paquet IP. Prenez l'exemple qu'il s'agit de votre adresse postale et que vous souhaitez envoyer une lettre Ă  un ami.
  • Destination Address (Adresse de destination Internet) : il s'agit de l'adresse IP qui va recevoir sur le rĂ©seau votre paquet IP. L'exemple que vous avez envoyĂ© une lettre, et que cet ami reçois votre lettre Ă  son adresse postale.


ModĂšle TCP/IP

Au niveau de l'encapsulation de paquet, quand l'Ă©metteur part vers sa destination, il descend toutes les couches du modĂšles OSI (de la couche Applications vers la couche Physique) et rajoute les en-tĂȘtes nĂ©cessaires :



Lors d'un envoi d'une donnĂ©e de l'utilisateur (exemple : requĂȘte vers un site Web) :

  • On part de la couche "Application" : les donnĂ©es de l'utilisateur.
  • Tout en gardant bien Ă©videmment les donnĂ©es de l'utilisateurs, on va cumuler les en-tĂȘtes de chaque couche successives :
  • Couche Application : ajout de l'en-tĂȘte applicative.
  • Couche TCP : ajout de l'en-tĂȘte TCP, formant ainsi un segment TCP.
  • Couche IP : on rajoute l'en-tĂȘte IP, formant un paquet IP.
  • Couche Physique : enfin, on rajoute l'en-tĂȘte Ethernet, formant ainsi une trame Ethernet. Elle forme l'ensemble de notre donnĂ©e.


Il passe ensuite par le cĂąble Ethernet et arrive au routeur en effectuant le schĂ©ma inverse vers le haut et enlĂšve les en-tĂȘte ajoutĂ©es lors de l'envoi du paquet (de la couche Physique vers la couche Applications) :

  • Couche Physique : on supprime l'en-tĂȘte Ethernet de la trame Ethernet avec nos donnĂ©es.
  • Couche IP : on supprime l'en-tĂȘte IP du paquet IP.
  • Couche TCP : suppression de l'en-tĂȘte TCP du segment TCP.
  • Couche Application : suppression de l'en-tĂȘte applicative.

On conserve ainsi les données transmises envoyées par l'utilisateur.



En-tĂȘte TCP

Une en-tĂȘte TCP est une partie essentielle d'un segment TCP (Transmission Control Protocol) utilisĂ© pour le transfert de donnĂ©es sur Internet. Elle contient des informations cruciales permettant d'Ă©tablir, maintenir et terminer une connexion TCP entre un expĂ©diteur et un destinataire.



BasĂ© sur 4 octets (32 bits), l'en-tĂȘte TCP comprend plusieurs champs qui fournissent des informations spĂ©cifiques sur la transmission des donnĂ©e :

  • Port source & de destination : Ces champs indiquent les numĂ©ros de port source et de port de destination, qui permettent aux applications de communiquer entre elles.
  • N° de sĂ©quence : Il s'agit d'un numĂ©ro attribuĂ© Ă  chaque octet de donnĂ©es envoyĂ© :
  • Permet d'organiser les paquets dans le bon ordre lors de la rĂ©ception.
  • Assure ainsi la fiabilitĂ© du paquet au niveau de la couche TCP.
  • N° d'acquittement : Il indique le prochain octet attendu par l'expĂ©diteur. Lorsque le destinataire reçoit les donnĂ©es correctement :
  • Il renvoie un accusĂ© de rĂ©ception (ACK) avec ce numĂ©ro pour confirmer la rĂ©ception, assurant la fiabilitĂ© du paquet au niveau de la couche TCP.
  • Ce dernier s'assure que le destinataire ai bien reçu le paquet. Il peut le renvoyer si besoin.
  • Data Offset : ayant le rĂŽle d'indiquer oĂč commence les Data.
  • RĂ©servĂ© : pas utilisĂ©, les bits de cette partie sont Ă  0.
  • Drapeaux de contrĂŽle (Flag) : Ces drapeaux permettent de spĂ©cifier diverses options et indicateurs. Dans ce champ "Flag" on a des bits de contrĂŽles. Ils sont nĂ©cessaires afin de reconstruire le paquet de bout en bout. sont :
  • URG : indique qu'une partie des donnĂ©es est urgente, doit passer en prioritĂ© au niveau des routeurs.
  • ACK (Acknowledgement) : Acquitte que le le paquet a bien Ă©tĂ© reçu.
  • PSH : pour que celui qui rĂ©ceptionne mette en mĂ©moire les donnĂ©es.
  • RST (rĂ©initialisation de la connexion) : indique un arrĂȘt ou un refus de la connexion.
  • SYN (demande d'Ă©tablissement de connexion) : indique le numĂ©ro de sĂ©quence, notamment le "Sequence Number" lors d'un Handshake TCP.
  • FIN : indique la connexion, dernier paquet transmis donc plus de donnĂ©es Ă  transmettre.
  • Window (FenĂȘtre de rĂ©ception) : Ce champ indique la quantitĂ© d'espace disponible dans le tampon du destinataire pour l'acceptation des donnĂ©es.
  • Somme de contrĂŽle (checksum) : Il s'agit d'un mĂ©canisme utilisĂ© pour vĂ©rifier l'intĂ©gritĂ© des donnĂ©es du segment TCP.
  • Urgent Pointer : clairement utilisĂ© que si la valeur du bit de contrĂŽle "URG" est Ă  1, donne le numĂ©ro de l'octet Ă  partir de quand la donnĂ©e est urgente, dans la partie Data.
  • Options : pas utilisĂ© Ă  ce niveau Ă©galement.


L'en-tĂȘte TCP est ajoutĂ©e avant les donnĂ©es elles-mĂȘmes et permet aux systĂšmes de communication de comprendre comment traiter les segments TCP correctement. Il facilite un transfert fiable des donnĂ©es et c'est pour cela que nous l'utilisons aujourd'hui en fournissant des informations de contrĂŽle et de gestion nĂ©cessaires afin d'assurer une communication fiable entre les parties concernĂ©es.


L'important de présenter la composition d'un datagramme IP permets de mieux comprendre par la suite l'aspect du NAT et des rÚgles de filtrages des paquets.


Le NAT (Network Address Translation)

Nous avons vu précédemment la composition d'un paquet IP lors de sa transmission. Dans l'état des choses, pour que votre réseau, il n'est clairement pas possible d'accéder sur Internet à des adresses IP privée (ex : 192.168.0.1, 172.16.0.10). Uniquement les adresses IP publiques peuvent accéder au réseau Internet.


ConcrÚtement, le NAT est un mécanisme permettant de traduire les adresse privées IPv4 en adresses publiques. Il a été inventé par la pénurie des adresses IPv4 publiques, contrairement à l'IPv6 qui n'utilise pas le NAT. Le NAT va détecter qu'il s'agit d'une adresse IP locale et va effectuer la modification sur le paquet IP souhaitant accéder à Internet. Il va alors modifier les champs "Adresse source" et "Adresse de destination" par l'adresse IP publique de votre FAI (Fournisseur d'accÚs à Internet). Le NAT va ainsi permettre à un réseau local d'avoir un accÚs à Internet.


Pour mieux comprendre les choses. voici un réseau type avec une infrastructure type :

  • Une machine locale (adresse IP locale : 10.28.0.2) dans le rĂ©seau local
  • Routeur / firewall (routeur en 10.28.0.254) : passerelle d'accĂšs Ă  Internet
  • Site internet www.vemotech.fr (adresse IP publique : 28.0.8.202)
  • Adresse IP publique du FAI : 85.68.13.50



Voici le processus d'accĂšs Ă  un site internet, avec le NAT :


1. PremiÚrement, imaginons que je souhaite accéder au site internet "www.vemotech.fr" (adresse IP publique du site = 28.0.8.202) depuis ma machine locale. Je vais alors préparer mon paquet IP de l'adresse locale vers le serveur Web :

  • Source : 10.28.0.2/24
  • Destination : 28.0.8.202 (www.vemotech.fr)

👉 Étant donnĂ© qu'il est nĂ©cessaire d'avoir une passerelle par dĂ©faut pour changer de rĂ©seau, envoyer des paquets IP Ă  travers un autre rĂ©seau, nous devons configurer bien entendu l'adresse IP de passerelle par dĂ©faut sur l'ordinateur. Ce paquet IP va alors passer par notre routeur.



2. DeuxiĂšmement, au moment oĂč ma demande issue de mon PC local (10.28.0.2/24) vers www.vemotech.fr (28.0.8.202), le mĂ©canisme du NAT va faire la diffĂ©rence entre une adresse IP et publique et va modifier l'adresse source.

👉 C'est Ă  dire que notre adresse source actuelle 10.28.0.2 va ĂȘtre remplacĂ©e par l'adresse IP publique du FAI qui est 85.68.13.50, ainsi routable sur Internet. Le paquet va ensuite ĂȘtre transmis sur Internet Ă  destination du serveur WEB.

  • Source : 85.68.13.50
  • Destination : 28.0.8.202 (www.vemotech.fr)


3. Enfin, le serveur Web sur Internet va de ce fait recevoir une demande de la part de l'adresse IP du FAI (85.68.13.50) sur l'adresse IP de www.vemotech.fr (28.0.8.202). Ainsi, l'utilisateur a accÚs au site Web. Ainsi, l'ordinateur local a émis une demande d'accÚs au serveur Web, mais jamais le serveur, la machine distante, ne connaitra notre plan d'adressage IP privé.



Poursuite de la formation

Nous avons vu dans ce cours la composition d'un paquet IP en dĂ©taillant sa composition. Puis, nous avons vu ensuite le modĂšle OSI et une vue d'ensemble des paquets TCP/IP afin de voir clairement le dĂ©roulement de la transmission d'un paquet Ă  travers un rĂ©seau. Nous avons ainsi retenu que majoritairement le TCP/IP est nommĂ© ainsi car le terme IP est un transport trĂšs rapide mais non fiable et donc aucun contrĂŽle sur la transmission des donnĂ©es, tandis que le le TCP est situĂ© juste au dessus de la couche IP et que celui-ci rajoute la couche de contrĂŽle de transmission des paquets IP dans le cas oĂč ils sont perdus.


Ces différents éléments crucial pour la compréhension du fonctionnement d'un réseau, le mécanisme du NAT a ensuite été abordé afin de fournir l'accÚs à Internet et que nous avons compris qu'une adresse IP privée n'est pas accessible sur Internet et qu'il est nécessaire de créer un moyen à modifier notre paquet IP.

Niveau Intermédiaire

Technologie utilisée :

Proposer une modification
Antoine
Par Antoine
Rédigé le Mercredi 25 Octobre 2023