Network Address Translation

To the non-french speaker, note that you can translate the articles using the Google Trad widget situated at the bottom of all pages.


Avant de commencer cet article je voudrais avoir une courte réflexion avec vous. Aujourd’hui les adresses IP les plus utilisées sont les adresses IPv4. Ipv6 est en cours de déploiement et sera sûrement totalement adopté d’ici quelques années.

Les adresses IPv4 sont codées sur 32 bits (4*8 octets) soit 2^32 adresses possibles. En comptant les plages d’adresses privées ainsi que les plages réservées, on arrive à un total de 4,2 milliards d’adresses IP disponibles. Sur Terre il y a environ 7,5 milliards d’habitants. Selon les chiffres du site population mondiale, il y aurait 2,8 milliards de personnes qui sont abonnées à internet.

En partant du principe qu’une personne connectée à Internet a au moins un ordinateur et un smartphone alors on arrive a un nombre d’adresses IP nécessaires de 5,6 milliards. Hors avec IPv4 nous n’en avons que 4,2. Problématique non ?

Observons ce schéma, chaque rectangle correspond à un réseau privé (typiquement un réseau domestique) et l’ovale correspond au réseau publique (Internet).

natschema.png

Rien ne vous choque? Tous les ordinateurs sur chaque réseau ont la même adresse IP soit 192.168.0.1 soit 192.168.0.2. Or une adresse IP est censée être unique non ?! Eh bien oui, une adresse IP est unique sur un réseau public. Sauf qu’ici nous parlons de réseaux privés ! Un réseau privé c’est un réseau qui utilise des plages d’adresses IP privées. Ces plages d’adresses peuvent être utilisées par plusieurs machines en même temps. En revanche elles ne sont pas utilisables sur le réseau public (on dit qu’elles sont non routables).

Voici les plages d’adresses privées :

Classe A 10.0.0.0 – 10.255.255.255
Classe B 172.16.0.0 – 172.31.255.255
Classe C 192.168.0.0 – 192.168.255.255

Sur ce schéma nous avons donc quatre réseaux privés. En partant du principe que ces réseaux sont des réseaux domestiques alors on peut affirmer que les routeurs ont chacun une adresse IP publique qui leur permet de communiquer sur le réseau public :

natwithpubicIP.png

OK mais du coup comment ça fonctionne tout ça ? Nan parce que c’est bien beau de parler d’adresses IP privées et publiques mais ça n’explique pas pourquoi un PC avec une IP privée peut communiquer sur le réseau public 😒😒 ! Eh bien ça nous le devons au protocole NAT.

I/ Le protocole NAT

Le protocole NAT (pour Network Address Translation) est utilisé afin de permettre à un matériel présent sur un réseau privé de communiquer avec les matériels présents sur le réseau public (Internet).

Reprenons une partie de notre schéma :

partieschema.png

Lorsque le PC d’IP privée 192.168.0.2 va vouloir envoyer une trame à un matériel qui n’est pas présent sur son réseau, il va passer par la gateway du routeur. Il va donc envoyer son paquet à l’adresse IP 192.168.0.254. Étant donné que l’adresse du destinataire du paquet n’est pas privée, le routeur va comprendre qu’il doit envoyer cette trame sur le réseau public (Internet). Or comme nous l’avons vu, les adresses IP privées sont inutilisables sur le réseau public.

« Qu’à cela ne tienne » se dira le routeur, « tout ce que j’ai à faire c’est de modifier l’adresse IP de l’expéditeur du paquet en mettant mon adresse IP publique ! Ensuite j’envoie le paquet sur le réseau public ».

natalle.png

C’est aussi simple que ça !

Mais il y a encore un autre problème qui se pose. Comment le routeur va savoir à qui il doit envoyer la réponse venant d’Internet ? En effet l’adresse IP destinataire de la réponse est l’adresse IP du routeur et pas celle du PC émetteur :

reponses.png

Eh bien la question ne se poserait pas si je vous avais d’emblée tout dit sur le protocole NAT ! En fait, à chaque translation d’IP, le routeur (qui effectue la translation) stocke dans sa table NAT plusieurs adresses IP.

-L’adresse locale interne : c’est l’adresse IP de la source vu du réseau privée
-L’adresse globale interne : c’est l’adresse IP de la source vu du réseau public
-L’adresse globale externe : c’est l’adresse IP du destinataire vu du réseau privé
-L’adresse locale externe : c’est l’adresse IP du destinataire vu du réseau public

Généralement les adresses globales externes et locales externes sont identiques puisque ce sont des serveurs mis en exposition sur le réseau public.

Du coup une table NAT ressemble plus ou moins à ça :

tablenat

En se servant de cette table, le routeur va être en mesure de renvoyer les réponses du serveur vers les bonnes machines sur le réseau privé :

natinverse.png

Et c’est ainsi qu’avec une seule adresse IP publique, plusieurs milliers de matériels peuvent communiquer en même temps !

II/ Configuration du NAT

Dans cette deuxième partie nous allons voir comment configurer le NAT sur Cisco Packet Tracer. Pour cela nous utiliserons cette architecture :

departnat.png

La partie en bleu correspond au réseau public tandis que la partie en rouge correspond au réseau privé. Le but du jeu va être de faire pinger le PC0 et le PC1 avec le serveur présent dans le réseau public.

Première chose à faire (comme d’habitude) : configurer les interfaces de nos machines. Pour le réseau privé on utilisera l’adresse de réseau 192.168.0.0/24. Une fois toutes les interfaces configurées nous obtenons ceci :

postinterface

A ce stade, les ordinateurs peuvent pinger le routeur, le serveur peut pinger le routeur, mais les ordinateurs ne peuvent pas pinger le serveur. Il ne nous reste donc plus qu’à configurer le NAT. Et pour cela il suffira juste d’indiquer aux deux interfaces de notre routeur si elles communiquent à l’intérieur du réseau privé ou à l’extérieur. Pour cela on utilisera ces lignes de commande :

Pour l’intérieur :

inside

Et pour l’extérieur :

outside.png

Dernière chose, il faudra créer une règle ACL qui autorise le trafic sortant vers le réseau public

acl

Et ajouter une règle de routage dynamique vers le réseau public :

networkrip

Nos ordinateurs pourront dorénavant pinger le serveur :

ping

Ici NAT a deux intérêts. Premièrement, il permet d’éviter le gaspillage d’adresses IP en n’en utilisant qu’une seule. Mais le plus important, c’est qu’il rend invisible les utilisateurs présents sur le réseau privé. En effet, même si on interceptait le trafic sortant par l’adresse IP publique 85.1.1.1, on saurait que quelqu’un communique vers Internet mais on ne pourrait pas savoir si c’est le PC1, le PC2, un smartphone ou encore votre frigo connecté.

Depuis l’internet nous n’avons donc pas accès aux réseaux privées. Mais du coup, comment faire pour communiquer avec un serveur présent dans un réseau privé si on ne connait pas son adresse IP privée ?

Eh bien ça c’est le protocole PAT qui s’en charge.

Un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s