|
|
Le mécanisme NAT est implémenté par divers
constructeurs sur leurs routeurs (Cisco, 3COM, Bay
Networks...) : il est présenté ici par Cisco.
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.
|