Retour à la page d'accueil

Compte-rendu du groupe de travail sur le mécanisme NAT

4 Mars 1998

  

Le mécanisme NAT est implémenté par divers constructeurs sur leurs routeurs (Cisco, 3COM, Bay Networks...) : il est présenté ici par Cisco.

1.  Présentation du mécanisme

Le mécanisme de traduction d'adresses (NAT) a été défini pour répondre à court terme à la pénurie d'adresses de l'Internet (en attendant l'implémentation et la généralisation du protocole IPv6) et éviter la renumérotation de sites lors de leur connexion à l'Internet. Il s'appuie sur le principe que seul, un sous-ensemble de machines d'un réseau de site nécessite un accès à l'Internet.

NAT est une fonction du routeur d'extrémité de site : ce mécanisme peut-être implémenté de manière incrémentale sur ce routeur, sans modifications concernant les équipements internes au site.

1.1 Terminologie:

Espace d'adressage public :
L'espace des adresses géré par l'IANA (et les NICs) globalement uniques.
Espace d'adressage privé :
L'espace des adresses utilisées en interne par un site, parmi lesquelles les adresses définies par le RFC1918

NAT opère sur sur un routeur qui isole un domaine interne (Inside) dans lequel est utilisé un schéma d'adressage privé de l'Internet avec un schéma d'adressage public (Outside).

Adresse IP locale interne :
Adresse IP d'une machine du réseau interne attribuée dans l'espace d'adressage privé (soit l'espace défini par le RFC1918, soit une adresse globale unique mais périmée, soit une adresse choisie arbitrairement). Cette adresse peut-être globalement routable ou non : si elle est routable globalement, elle peut éventuellement avoir été attribuée à une autre organisation.
Adresse IP globale interne:
Adresse IP d'une machine du site telle qu'elle apparait à l'extérieur. Cette adresse a été allouée à partir d'un espace d'adressage public et est donc globalement unique.
 

1.2 Le mécanisme NAT implémenté par Cisco possède plusieurs fonctionnalités:

(voir les schémas dans la présentation de Laurent Montini/Cisco)

Adressage statique :
A une adresse IP locale interne est associée une et une seule adresse IP globale interne. L'adressage statique est utilisé lorsqu'une machine interne doit être accédée de l'extérieur avec une adresse fixée (serveur Web, ftp etc...)
Adressage dynamique
L'administrateur indique les adresses locales internes à traduire et le pool d'adresses globales internes. Lorsqu'une machine interne souhaite accéder à l'Internet, une adresse globale du pool lui est allouée, puis rendue lorsqu'elle n'est plus utilisée ou lorsque la table de traduction est remise à zéro.
 
Overloading ou PAT (Port Address Translation) ou adressage dynamique étendu
Les adresses locales internes sont traduites par l'association d'une adresse globale interne et d'un port . Cette adresse "étendue" est alors traduite en adresse globale externe associée au port. Cette fonctionnalité permet d'utiliser la même adresse globale interne pour différentes
Overlapping:
Cette fonctionnalité est utile dans le cas où un adressage privé interne n'a pas été choisi dans l'espace d'adressage préconisé par le RFC1918, et est le même qu'un adressage public attribué par le NIC à un autre site. Dans ce cas, une double traduction doit être exécutée : l'adresse locale interne est d'abord traduite en adresse globale interne et l'adresse locale externe (qui peut-être la même qu'une adresse locale interne) est elle-même traduite en adresse globale externe . Une entrée de la table de traduction associe ces quatre informations caractéristiques de la connexion établie
Exemple (voir annexe G)
Le réseau 171.1.1.0 existe de part et d'autre d'un routeur NAT. Dans le domaine interne, il s'agit d'un adressage privé (non attribué par l'IANA) tandis que le réseau externe est légalement enregistré.
Lorsque la machine locale interne B d'adresse 171.1.1.1 veut communiquer avec la machine D externe d'adresse IP 171.1.1.3, elle exécute une recherche DNS de l'adresse D en spécifiant l'adresse source 171.1.1.1 qui est traduite ensuite par le routeur NAT en adresse globale interne 192.2.2.2. Le routeur NAT intercepte la réponse DNS contenant l'adresse IP 171.1.1.3, détecte qu'une traduction est nécessaire (réseau spécifié dans une liste d'accès) et traduit cette adresse en adresse globale 193.3.3.3. UNe entrée dans la table de traduction contient ces 4 informations : adresse locale interne de B (171.1.1.1), adresse globale interne de B (192.2.2.2), adresse locale externe de D (171.1.1.3), adresse globale externe de D (193.3.3.3). B communiquera ensuite avec D en spécifiant l'adresse globale externe de D
 
Distribution de charge TCP
NAT permet de coordonner le partage de la charge entre différentes machines locales à l'intérieur d'un site, par l'intermédiaire d'un serveur local virtuel.L'adresse de destination (adresse locale interne du serveur virtuel) est traduite en adresse prise dans un pool suivant un algorithme "round robin" et seulement à l'ouverture d'une nouvelle connexion. Cette fonctionnalité peut être utilisée au sein d'un réseau lorsque de nombreuses machines souhaitent accéder à un serveur chargé au sein d'un réseau.

1. 3 Fonctionnement de NAT:

Tout paquet traversant le routeur dans le sens interne vers l'extérieur ou inversement subit une traduction qui peut-être plus ou moins complexe suivant le protocole. L'adresse IP dans l'en-tête IP est traduite et remplacée par la nouvelle adresse. De plus, le checksum IP doit être recalculé et vérifié. Ensuite, le checksum TCP, combinaison de l'adresse IP et du port, soit être modifié également. Enfin, pour rendre le mécanisme transparent au niveau des applications, NAT doit également convertir des paquets pour certains protocoles ou applications:

  • FTP : les commandes PORT et PASV contiennent l'adresse IP destination en ASCII.
    La traduction de cette adresse en adresse locale interne peut donner une taille différente en octets et si celle-ci est supérieure, obliger à modifier les numéros de séquence, d'où l'utilisation d'une table spécifique pour les numéros de séquence et les ACK
  • ICMP : la plupart des paquets ICMP contiennent une partie du paquet IP d'origine, en particulier les adresses IP source et destination et le checksum correspondant qui doivent être également traduits et recalculés
  • SNMP: les paquets SNMP contenant une spécification des adresses source ou destination doivent être traduits, ainsi que tout paquet SNMP spécifiant le nom de domaine en tant qu'adresse physique.
  • SMTP: une adresse SMTP contenant une adresse IP plutôt qu'un nom de domaine doit être traduite.

Quelques considérations:

  • Le mécanisme de traduction introduit plus ou moins de délais pendant la commutation : en particulier, le routeur traite le premier paquet en mode process avant de passer en mode cache. Les performances sont donc ralenties pour des flux courts. Cette considération, essentiellement théorique, est à prendre en compte dans des configurations complexes ou extrêmes.
  • De manière générale, toute application spécifiant l'adresse IP dans la partie des données ne fonctionnera pas via NAT, sauf si celui-ci sait repérer de telles occurences et les traduire.En particulier, si l'encryption des données est utilisée ou si l'en-tête IP est compressée, NAT ne sait pas faire la traduction.
  • NAT cache l'identité "réelle" des machines : il n'est pas possible d'identifier l'identité d'un paquet dont l'adresse IP a été traduite de façon dynamique par NAT. Cela peut-être un avantage (piratage en "aveugle") et un inconvénient
  • Les adresses globales allouées dynamiquement sont récupérées si elles ne sont pas utilisées pendant un certain temps. Ce temps peut-être modifié par l'administrateur.
  • L'administrateur peut exercer un contrôle plus fin (udp-timeout, dns-timeout, tcp-timeout, finrst-timeout) , lorsque l'adressage étendu est configuré

2. Problématique du groupe de travail

Un certain nombre de questions posées par les sites ayant installé ce mécanisme sont reprises dans la FAQ ( annexe B). De manière générale , les problèmes se résumaient en:

2.1 Routage via NAT:

  • L'adressage local interne ne DOIT pas être annoncé à l'extérieur
  • L'adressage externe PEUT être distribué vers l'intérieur et cela est souhaitable. En effet, si le schéma d'adressage externe n'est pas annoncé en interne, les machines ne savent pas où router les paquets, sauf vers la route par défaut. Pour résoudre ce probème une liste de distribution pour le routage peut être spécifiée (voir annexe G)
  • Dans le routeur, la traduction est effectuée avant le routage dans le sens local vers global.

2.2 Utilisation des pools d'adresses

  • Pour spécifier des adresses statiques, l'administrateur indique la correspondance entre adresses locale et adresse globale associée à une machine
  • Pour spécifier des adresses dynamiques, l'administrateur définit un pool avec une adresse de début, une adresse de fin et un masque, puis une liste d'accès indiquant les adresses locales à traduire, et enfin associe le pool avec cette liste
  • La liste d'accès doit spécifier uniquement les adresses locales à traduire et interdire explicitement les adresses statiques, de sorte que celles-ci ne soient pas prélevées dans le pool des adresses dynamiques.
  • Les adresses statiques et dynamiques sont dissociées. Mais si les adresses statiques ne sont pas explicitement supprimées du pool d'adresses dynamiques, il peut y avoir un conflit.
  • Il est possible de spécifier plusieurs pools d'adresses globales internes
    • contigues ou dissociés
    • sur la même interface
    • sur des interfaces différentes
    • avec une politique de routage différente (fonctions de policy-based routing)
  • L'allocation des adresses externes se fait du plus petit au plus grand ("round-robin"). Toutefois, il n'est pas possible de conserver cet ordre : lorsqu'une adresse plus petite est libérée, c'est celle-ci qui est attribuée.

2.3 NAT est-il un outil de sécurité ?

Pour une communauté universitaire comportant une population à contrôler (étudiants) , l'utilisation de NAT semble poser des problèmes dans la mesure où la spécification de l'adresse source est modifiée, alors que, d'autre part, ceci peut-être considéré comme un avantage pour la sécurité en masquant les adresses internes à l'extérieur pour une entreprise.

  • NAT est d'abord et avant tout un outil de traduction d'adresses
  • Il n'y a pas de log (consommation importante de ressources) ni d'audit: les Firewalls sont prévus pour cela
  • La perte de traçabilité de bout en bout rend difficile le debugging et la recherche en cas de piratage par une machine interne.
  • NAT réduit le nombre d'options qui fournissent la sécurité (traduction impossible des paquets encryptés)
  • NAT et les Access Control Lists
    Dans le sens local vers global, le processus suit le chemin (et inversement dans l'autre sens)
    • contrôle ACL sur l'interface d'entrée
    • NAT
    • Routage
    • contrôle ACL sur l'interface de sortie
  • De nouvelles fonctionnalités destinées à renforcer la sécurité apparaissent dans les versions futures

2.4 Multicast

Le Multicast n'est actuellement pas supporté pas NAT
En résumé, il est possible de recevoir du trafic multicast au sein d'un réseau pour lequel NAT est installé sur le routeur d'extrémité. Mais les sources ne peuvent pas émettre.
Une parade consiste à placer la source qui émet dans une zone DMZ ne subissant pas la traduction. Ce problème est actuellement à l'étude au sein du groupe FMbone.

3. Conclusions

Ces conclusions reflètent l'expérience des sites au sein du groupe de travail.

  • La principale motivation qui a conduit les sites indiqués dans l'annexe A, à utiliser le NAT est le besoin d'adresses. NAT remplit parfaitement cette fonction et permet également de s'affranchir en interne des contraintes imposées par un adressage restrictif.
  • Ce n'est pas un outil de sécurité, car ne possédant pas de fonctionnalités de logs et d'audits. En revanche, il permet une sécurité "relative" en masquant l'identité des machines du site et en limitant le nombre de serveurs.
  • Tous les protocoles (en particulier ceux qui comportent une adresse IP dans le champ des données) ne peuvent pas être traduits. . Une parade doit être trouvée pour résoudre le problème crucial du protocole IP Multicast.
  • Le NAT convient bien à des petits réseaux distants avec des besoins limités voire des réseaux pédagogiques au sein d'un Campus.
  • Le NAT doit être envisagé uniquement comme une solution à court terme... en attendant IPV6 et des adresses de 128 bits.

© Unité RÉseaux du CNRS Écrivez nous