Utilisateur:Poil/nat

Une page de Wikipédia, l'encyclopédie libre.

NAT est l'acronyme de Network Address Translation, soit Translation d'Adresse Réseau en français.
C'est une mécanisme qui, implantée sur un routeur, permet de faire correspondre les adresses IP internes non-unique d'un domaine vers un ensemble d'adresses externes uniques et routables.

Exemple[modifier | modifier le code]

Un campus est composé de 1 000 hôtes, dont des imprimantes, scanners, etc. répartis dans 4 sous-réseaux. Sans utilisation du NAT, un tel campus nécessiterait l'attribution de presque 1 000 adresses IP uniques et routées.

Réseau sans NAT : les adresses des hôtes sont des adresses uniques et routées sur Internet.

En interfaçant un tel campus avec l'Internet via un routeur qui NAT, on peut changer le plan d'adressage interne et utiliser des adresses non uniques et non routées sur Internet (cf. RFC 1597).

Réseau avec NAT : les adresses des hôtes sont des adresses réutilisables. Le routeur de bordure fait la translation d'adresse. On notera que la modification du plan d'adressage alloue désormais un réseau /16 par sous-réseau, s'affranchissant de la limite des 254 adresses possibles avec un /24.

On assignera que quelques centaines d'adresses à l'ensemble des adresses externes du NAT, sachant que les imprimantes (et certains autres équipements) n'ont pas besoin de communiquer avec l'extérieur (ces adresses là n'on pas besoin d'être translatées).

Le NAT permet donc de diminuer significativement le nombre d'adresses IP unique utilisées.

Implantation du NAT[modifier | modifier le code]

Pour faire correspondre les adresses internes avec un groupe d'adresses externes, on se sert d'une table. Celle ci contient des paires (adresse interne, adresse externe (translatée)). Quand l'adresse interne émet une trame qui traverse le routeur qui NAT, cette adresse est remplacé dans l'entête du paquet [TCP/IP]] par son adresse IP externe. Le remplacement inverse sera fait quand une trame vers cette adresse externe doit être translatée en IP interne.

Aussi, on peut réutiliser une entrée dans la table de correspondance du NAT si aucun trafic avec ces adresses n'a traversé le routeur pendant un certain temps (paramétrable).

Étant donné que les entêtes des paquets TCP/IP sont réecrit, la somme de contrôle du paquet doit être recalculée.


IP interne IP externe Durée (s) Réutilisable ?
10.101.10.20 193.48.100.174 1200 non
10.100.54.271 193.48.101.8 3600 oui
10.100.0.89 193.48.100.46 0 non

Voici par exemple une table de NAT simplifiée. On supposera qu'une entrée pourra être reclamée si la translation n'a pas été utilisée depuis plus de 3 600 secondes.

La première ligne indique que la machine interne, possédant l'adresse IP 10.101.10.20 est translatée en 193.48.100.174 quand elle converse avec le monde extérieur. Elle n'a pas émis de paquet depuis 1200 secondes, mais la limite étant 3600, cette entrée dans la table lui est toujours assignée. La seconde machine est restée inactive pendant plus de 3600 secondes, peut-être qu'elle est éteinte, une autre machine peut reprendre cette entrée (en modifiant la première colonne puisqu'elle n'aura pas la même IP interne). Enfin, la dernière machine est actuellement en conversation avec l'extérieur, le champs Durée étant 0.

Actuellement, la plupart des firewalls et routeurs possèdent cette caractèristique. Elle est par exemple utilisée par les abonnées ADSL qui connectent plusieurs ordinateurs sur une ligne unique.

Bénéfices du NAT[modifier | modifier le code]

Les adresses internes doivent être choisies parmi les adresses définies dans la RFC 1597. Ainsi plusieurs sites peuvent avoir le même adressage interne et communiquer entre eux en utilisant ce mécanisme. Étant donné que les adresses internes sont réutilisées, on économise des adresses IP, dont l'occupation, en IPv4, arrive à saturation.

On peut avoir moins d'adresses dans l'ensemble des adresses translatées que ce qu'on à comme adresses IP à l'intérieur du réseau, si l'on met en place un mécanisme permettant de récupérer des adresses inutilisées après un certain temps. Plus précisément, si une entrée dans la table des translations n'est pas utilisée pendant un certain temps (paramétrable), cette entrée peut-être réutilisee : une autre machine avec une adresse interne va récupérer l'adresse externe.

Le NAT masquant l'adresse IP de la machine interne, il participe à la sécurité du site.

Problèmes inhérents[modifier | modifier le code]

Le problème majeur se pose lorsqu'un protocole de communication transmet l'adresse IP de l'hôte source dans un paquet. Cette adresse n'étant pas valide après avoir traversé le routeur NAT, elle ne peut être utilisée par la machine destinatrice. Pour pallier à cet inconvénient, les routeurs NAT doivent savoir inspecter le contenu des paquets qui le traverse, et modifier les adresses IP spécifiées par les adresses translatées. Notez que cela implique de recalculer la somme de contrôle et la longueur du paquet. Les protocoles affectés sont, entres autres : ICMP, FTP, DNS, SNMP, etc.

Le NAT ne fait que participer à la politique de sécurité du site : une fois la translation établie, elle est bidirectionnelle.

Différents type de NAT[modifier | modifier le code]

  • NAT simple, où un ensemble d'adresses internes sont translatées dans un ensemble d'adresses externes.
  • PAT (Port Address Translation), ou IP masquerading, où le routeur ne possède qu'une seule adresse IP attribuée.

Dans ce dernier cas, ce sont les numéros de ports qui vont permettre d'identifier la translation en place : l'adresse du port source (celui de la machine interne) va être modifié par le routeur. Il va servir pour identifié la machine interne.

Routeur en mode PAT (Port Address Translation). Seule l'adresse de l'interface externe du routeur est utilisée. Le multiplexage/démultiplexage des IP internes se fait grâce aux numéros de ports (modifiés par le routeur).

Cette méthode fait économiser encore plus d'adresse que le NAT classique, mais elle à les même inconvénients.

Références[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Liens internes[modifier | modifier le code]