| |
|
|
|
|
NAT (Network Address Translation) |
|
Écrit par CHARGROS Alexandre
|
|
10-05-2009 |
La NAT (Network Address Translation) s’est imposée en 1994 sous la RFC 1631 pour faire face au futur manque d’adresse ip
v4. Ce mécanisme, et ses extensions permettent donc d’économiser le nombre d’adresses ip publiques (sur Internet) grâce à
une translation de plusieurs adresses ip privées (en local) en une ou plusieurs ip publiques.
Situations d’utilisation
Il est parfois nécessaire d'utiliser la NAT lorsque nous nous trouvons dans diverses situations, par exemple :
- Une entreprise dispose d’un important réseau local (un grand nombre d'ip privées) mais ne possède que
quelques adresses ip publiques déclarées. Dans ce cas la NAT est nécessaire pour permettre à toutes les adresses ip privées
d'accéder à Internet. Il est donc possible de configurer la NAT sur le
routeur d'accès Internet. Ainsi, il traduira les adresses du
réseau local en l'adresse ip publique.
- Une entreprise désire renouveler les adresses ip du réseau local. Une solution alternative consiste à les
traduire avec du NAT, par conséquent, on applique sur un routeur en interne la NAT qui traduira les adresses ip privées en
d'autre adresses ip privées à l'intérieur du réseau local.
- Une entreprise souhaite utiliser du Load Balancing (répartition de charge) pour ses serveurs Web. En effet, elle
possède plusieurs serveurs Web et souhaite que les requêtes soient distribuées de façon transparente pour les utilisateurs
entre les différents serveurs. La NAT va permettre de créer une adresse ip virtuelle commune à ces serveurs Web pour ensuite
rediriger les requêtes suivant différents critères.
- Une entreprise souhaite sécuriser son réseau interne, ou même les adresses ip des serveurs locaux : en
appliquant du NAT sur l'adresse ip des serveurs en question, les utilisateurs accèderont aux serveurs locaux via des adresses ip
NATées et plus via les adresses ip réelles.
Différents types de NAT
NAT Statique
Principe
La NAT statique constitue la plus simple application du NAT, en effet elle ne consiste qu'en l'association de n adresses
publiques avec n adresses privées. En d'autres termes, la NAT statique se contente de remplacer l'adresse source / destination
par une autre adresse définie dans la NAT.
Fonctionnement
Prenons par exemple une machine à l'intérieur du réseau local d'une entreprise. Elle possède donc une adresse ip privée(ex :
10.0.0.1). Cette adresse ip étant une adresse ip privée, la machine ne peut en aucun cas sortir sur Internet. Pour cela il lui faut
une adresse ip publique. Nous allons donc configurer la NAT sur le routeur d'accès Internet.
Par la suite lorsque la machine enverra des paquets sur Internet, le routeur d'accès Internet modifiera dans l'entête IP des
paquets, l'adresse source (10.0.0.1) par une adresse ip publique (routable sur Internet), par exemple 216.239.59.01. Le paquet
arrivera donc à destination.
Lorsque la destination enverra un paquet "réponse", c'est à dire un paquet à l'adresse ip 216.239.59.01, le routeur recevra ce
paquet et changera l'adresse ip de destination (216.239.59.01) par l'adresse ip de la machine associée, c'est à dire 10.0.0.1. La
machine du réseau local recevra donc le paquet qui lui était destiné.
Inconvénient
L'inconvénient majeur de la NAT statique est qu'elle ne résout en rien la pénurie d'adresse IP v4. En effet, elle se contente de
traduire une adresse ip privée en adresse ip publique, par conséquent il faut quand même n adresses ip publiques pour les n
adresses ip privées.
Nat Dynamique
Principe
La NAT dynamique (IP Masquerading) est une autre application de la NAT. En effet, contrairement à la NAT statique, la NAT
dynamique permet de résoudre le manque futur d'adresses ip publiques : la NAT dynamique permet d'associer une adresse ip
publique (ou un pool d'adresses ip publiques) à plusieurs adresses ip privées.
Fonctionnement
Le fonctionnement est un peu différent de celui de la NAT statique. Reprenons l'exemple précédent:
Dans le cas de la NAT dynamique, une adresse ip publique va permettre à plusieurs adresses ip privées d'accéder à Internet.
C'est l'adresse ip de l'interface externe du routeur qui va être utilisée. Rajoutons une machine en plus à l’exemple précédent.
Nous nommerons les machines : Machine1 (10.0.0.1), Machine2 (10.0.0.3). Lorsque les deux machines vont sur Internet elles
ont toutes les deux la même adresse ip publique : celle du routeur d'accès Internet.
Comment cela se passe-t-il au niveau du NAT et des paquets?
Prenons la Machine1 qui envoie un paquet vers www.google.fr.
Le paquet passe par le routeur d'accès Internet et ce dernier change l'adresse ip source par l'adresse ip de son interface
externe (90.5.223.209).
Une fois le paquet arrivé à destination chez www.google.fr. Un paquet "réponse" est crée, et envoyé à l'adresse NATée de la
Machine1 c'est à dire, 90.5.223.209 (adresse interface externe du routeur). Une fois que le paquet est envoyé, il est reçu par le
routeur. Comment le routeur parvient-il à retrouver le destinataire sachant que toutes les machines de réseau local
(Machine1, Machine2) possèdent la même adresse ip NATée ?
En réalité, le routeur sait quel est le destinataire grâce aux ports TCP/UDP. En effet, lorsque la Machine1 a envoyé sont paquet
au routeur, elle a spécifié un port source quelconque, par exemple le port 2356 (Port : 0 à 1023 réservés aux applications
publiques, Port 1023 à 65535 : attribués aux entreprises pour les applications commerciales et utilisés par le système
d’exploitation pour l’attribution dynamique des ports source). Ainsi le routeur sait, grâce au port source à quelle machine est
destiné le paquet entrant (sachant que le port source devient le port de destination dans le paquet "réponse").
En revanche, comment le routeur sait-il vers quelle machine rediriger un paquet lorsque deux machines du réseau local ont
envoyé un paquet depuis le même port source ?
Le routeur va en fait, effectuer une modification de port source sur les paquets qu'il gardera en mémoire (dans une table
NAT). Pour rester dans le même exemple, reprenons les Machine1 et Machine2 qui envoient chacune un paquet vers www.google.fr
avec comme port source 2356. Lorsque les paquets passent par le routeur, ces derniers se voient remplacés le port source par
un nouveau choisi par le routeur, ainsi il ne choisira pas deux ports identiques. Une fois ces modifications faites, le routeur
garde en mémoire (dans la table NAT) les associations des ports.
Passé le routeur, le paquet de la Machine1 possède par exemple un port 10000, et celui de la Machine2, 10001. Une fois les
paquets "réponse" envoyés par www.google.fr, le routeur établit le port de destination réel via la table de NAT, le paquet avec
port de destination 10000 se voit donc redirigé vers la Machine1.

Etant donné que l'on peut "cacher" un grand nombre de machines derrière une seule adresse publique, cela permet de
répondre à notre problème de pénurie d'adresses.
Inconvénient
La NAT statique qui associe une ip privée avec une ip publique, permet de l'extérieur d'accéder à une machine locale.
A contrario, la NAT dynamique ne permet pas d'accéder à une machine locale depuis l'extérieur sans qu'elle n’ait au préalable
initialisé de connexion. En effet, le routeur se servant du port TCP/UDP source pour faire l'association entre l'ip NATée et l'ip
privée: sans port source, aucune translation d’adresse ip n'est possible.
La NAT dynamique est donc utile pour partager un accès Internet, mais pas pour rendre un serveur accessible depuis
l’extérieur.
Extensions de la NAT
Port Forwarding
Pour pallier au problème précédemment rencontré de la NAT dynamique concernant l'accès extérieur impossible, il existe le
Port Forwarding / Port Mapping (en français "redirection de port"). Cette extension du NAT consiste à configurer sur le routeur
d'accès Internet des règles de redirection de port : par exemple tous les paquets avec comme port de destination 80 seront
redirigés vers telle ou telle adresse ip. Ainsi aucun NAT n’est disponible, seul le port à rediriger et l’adresse ip privée de la
machine sont nécessaires.
La Twice-NAT
La Twice NAT est une technique de double translation d'adresses et de port. Ainsi, les paramètres de source et de destination
sont tous deux remplacés. La Twice-NAT est nécessaire quand un réseau privé et un réseau public possèdent une collision
d’adresse. Le plus souvent cela se produit lorsqu’un site a attribué en local une adresse ip publique qui a déjà été assignée à
une autre organisation.
La Twice-NAT permet de résoudre ces problèmes de collisions en modifiant les 2 adresses du paquet.
La Twice-NAT fonctionne de la façon suivante : Prenons un Hôte-A, situé dans un réseau local mais qui possède une ip
publique, souhaitant initialiser une session avec un Hôte-X, qui lui se trouve soit sur Internet soit dans un autre réseau local
mais qui possède une adresse ip publique (la même que l’Hôte-A). Lorsque l’Hôte-A initialise la connexion, une requête DNS
est faite concernant l’Hôte-X.
Un DNS-ALG (sorte de proxy DNS) intercepte cette requête DNS et retourne à l’Hôte-A, une
adresse pour l’Hôte-X, qui est routable dans le réseau local (disons Hôte-X’). L’Hôte-A initialise donc ensuite la session avec
l’Hôte-X’. Lorsque le paquet traverse le routeur effectuant la NAT, l’adresse ip source est traduite (comme dans le cas d’une
NAT traditionnelle) et l’adresse de destination est traduite en celle de l’Hote-X. Une translation similaire est effectuée du
chemin inverse du paquet (venant de l’Hôte-X)

La NAT avec Serveurs Virtuels/Load Balancing
Avec la croissance d'Internet et du nombre d'utilisateurs, la plupart des entreprises font appel au Load Balancing. Cette
technologie permet de répartir la charge sur plusieurs serveurs: concrètement cela fait correspondre plusieurs serveurs (avec
des adresses ip réelles) avec un seul serveur virtuel (avec une adresse ip virtuelle).
Cette technique est totalement
transparente pour l'utilisateur. La NAT est ici utilisé pour remplacer l'adresse virtuelle par l'adresse ip de l'un des serveurs réels
en fonction du choix fait par le Load Balancer qui se base sur divers critères (charge de travail, ...).
|
|
| CLTE - Moteur de tests en ligne |
|
|
|
|
 |
|
 |
|