Configurer, vérifier et dépanner le NAT

Configurer, vérifier et dépanner le NAT
Configurer, vérifier et dépanner le NAT

Pour faire face à l’épuisement des adresses IPv4, plusieurs solutions à court terme ont été développées. Une solution à court terme consiste à utiliser des adresses privées et la translation d’adresses réseau (NAT).

NAT permet aux hôtes du réseau interne d’emprunter une adresse IPv4 Internet légitime tout en accédant aux ressources Internet. Lorsque le trafic demandé revient, l’adresse IPv4 légitime est réaffectée et disponible pour la prochaine requête Internet par un hôte interne.

En utilisant NAT, les administrateurs réseau n’ont besoin que d’une ou de quelques adresses IPv4 que le routeur doit fournir aux hôtes, au lieu d’une adresse IPv4 unique pour chaque client qui rejoint le réseau.

Bien qu’IPv6 résout en fin de compte le problème de l’épuisement de l’espace d’adressage IPv4 pour lequel le NAT a été créé, ce dernier est encore largement utilisé dans les stratégies actuelles de mise en œuvre de réseaux.

Dans cet article, nous examinons les concepts, la configuration et le dépannage de la technique NAT.

Concepts NAT

NAT, étant défini dans la RFC 3022, a de nombreuses utilisations. Son utilisation principale est de conserver les adresses IPv4 en permettant aux réseaux d’utiliser des adresses IPv4 privées.

NAT transforme les adresses internes non routables, privées et internes en adresses publiques routables. NAT a également l’avantage de cacher les adresses IPv4 internes des réseaux externes.

Un périphérique utilisant NAT fonctionne généralement à la frontière d’un réseau tronqué (stub network). La figure A montre la topologie maître utilisée au cours de cet article. R2 est le routeur de frontière et est l’appareil utilisé pour les configurations d’exemple d’aujourd’hui.

Figure A - Topologie NAT
Figure A – Topologie NAT

Dans la terminologie NAT, le réseau interne est l’ensemble des réseaux qui font l’objet d’une translation (chaque réseau dans la région ombrée de la Figure A).

Le réseau externe se réfère à toutes les autres adresses. La Figure B montre comment se référer aux adresses lors de la configuration de NAT :

Adresse locale intérieure (Inside local address): Probablement une adresse privée. Dans la figure, l’adresse IPv4 192.168.10.10 affectée au PC1 est une adresse locale intérieure.

Adresse globale interne (Inside global address): Une adresse publique valide que l’hôte interne reçoit lorsqu’il quitte le routeur NAT. Lorsque le trafic du PC1 est envoyé vers le serveur web au 209.165.201.1, R2 doit translater l’adresse locale intérieure en une adresse globale intérieure, qui est dans ce cas le 209.165.200.226.

Adresse extérieure globale (Outside global address) : Une adresse IPv4 accessible assignée à un hôte sur Internet. Par exemple, le serveur web est accessible à l’adresse IPv4 209.165.201.1.

Adresse extérieure locale (Outside local address) : L’adresse IPv4 locale attribuée à un hôte sur le réseau externe. Dans la plupart des cas, cette adresse est identique à l’adresse globale extérieure de cet appareil extérieur.

Les examnes CCCENT et le CCNA ne s’occupent pas des adresses extérieures locales.

Figure B - Terminologie du NAT
Figure B – Terminologie du NAT

Exemple du NAT

En se référant à la Figure A, les étapes suivantes illustrent le processus NAT lorsque PC1 envoie du trafic vers Internet :

1. PC1 envoie un paquet destiné à Internet à R1, la passerelle par défaut.

2. R1 fait suivre le paquet à R2, comme indiqué dans sa table de routage.

3. R2 se réfère à sa table de routage et identifie le saut suivant comme étant le routeur du FSI. Il vérifie ensuite si le paquet correspond aux critères spécifiés pour la translation. R2 a une ACL qui identifie le réseau interne comme un hôte valide pour la translation.

Par conséquent, il traduit l’adresse IPv4 locale interne en une adresse IPv4 globale interne, qui, dans ce cas, est 209.165.200.226. Il stocke cette correspondance de l’adresse locale à l’adresse globale dans la table NAT.

4. R2 modifie le paquet avec la nouvelle adresse IPv4 source (l’adresse globale intérieure) et l’envoie au routeur du FSI.

5. Le paquet atteint finalement sa destination, qui envoie ensuite sa réponse à l’adresse globale intérieure 209.165.200.226.

6. Lorsque les réponses de la destination arrivent à R2, ce dernier consulte sa table NAT pour faire correspondre l’adresse globale intérieure à l’adresse locale intérieure correcte.

R2 modifie alors le paquet, en insérant l’adresse locale intérieure (192.168.10.10) comme adresse de destination et l’envoie à R1.

7. R1 reçoit le paquet et le transmet à PC1.

NAT dynamique et statique

Les deux types de translation NAT sont les suivants :

NAT dynamique : Utilise un pool d’adresses publiques et les assigne selon le principe du premier arrivé, premier servi, ou réutilise une adresse publique existante configurée sur une interface.

Lorsqu’un hôte disposant d’une adresse IPv4 privée demande l’accès à Internet, le NAT dynamique choisit une adresse IPv4 dans le pool qu’un autre hôte n’utilise pas déjà. Au lieu d’utiliser un pool, la NAT dynamique peut être configurée pour surcharger une adresse publique existante configurée sur une interface.

NAT statique : utilise un mappage personnalisé des adresses locales et globales. Ces mappages demeurent constants. La NAT statique est particulièrement utile pour les serveurs Web ou les hôtes qui doivent avoir une adresse consistante et accessible depuis Internet.

Surcharge NAT (NAT Overload)

La surcharge NAT (aussi appelée Port Address Translation[PAT]) fait correspondre plusieurs adresses IPv4 privées à une seule adresse IPv4 publique ou à quelques adresses. Pour ce faire, un numéro de port permet également de suivre chaque adresse privée.

Lorsqu’une réponse revient de l’extérieur, les numéros de port source déterminent le bon client pour que le routeur NAT translate les paquets.

La figure C et les étapes suivantes illustrent le processus de surcharge NAT.

Figure C - Exemple de surcharge NAT
Figure C – Exemple de surcharge NAT

1. PC1 et PC2 envoient des paquets destinés à Internet.

2. Lorsque les paquets arrivent à R2, la surcharge NAT change l’adresse source à l’adresse IPv4 globale interne et conserve un enregistrement des numéros de port source attribués (1555 et 1331, dans cet exemple) pour identifier le client à l’origine des paquets.

3. R2 met à jour sa table NAT. Notez les ports assignés. R2 achemine ensuite les paquets vers Internet.

4. Lorsque le serveur Web répond, R2 utilise le port source de destination pour translater le paquet vers le bon client.

La surcharge NAT tente de préserver le port source d’origine. Toutefois, si ce port source est déjà utilisé, la surcharge NAT attribue le premier numéro de port disponible, en commençant par le début du groupe de ports approprié 0-511, 512-1023 ou 1024-65535.

Avantages du NAT

L’utilisation du NAT offre les avantages suivants :

  • NAT conserve l’espace d’adresse IPv4 enregistré car, en cas de surcharge NAT, les hôtes internes peuvent partager une seule adresse IPv4 publique pour toutes les communications externes.
  • NAT augmente la flexibilité des connexions au réseau public. Des pools multiples, des pools de sauvegarde et des pools d’équilibrage de charge peuvent être mis en œuvre pour assurer des connexions fiables au réseau public.
  • Le NAT permet au système existant de rester en place tout en soutenant un nouveau système d’adressage public. Cela signifie qu’une organisation peut changer de FSI et n’a besoin de changer aucun de ses clients internes.
  • NAT fournit une couche de sécurité réseau parce que les réseaux privés n’annoncent pas leurs adresses locales internes à l’extérieur de l’organisation. Cependant, l’expression pare-feu NAT est trompeuse ; le NAT ne remplace pas les pare-feu.

Limites du NAT

Les limites de l’utilisation du NAT sont les suivantes :

Les performances sont dégradées : Le NAT augmente les délais de commutation car la traduction de chaque adresse IPv4 dans les en-têtes de paquets prend du temps.

La performance de bout en bout est dégradée : De nombreux protocoles et applications Internet dépendent de la performance de bout en bout, avec des paquets non modifiés transférés de la source vers la destination.

La traçabilité IP de bout en bout est perdue : Le suivi des paquets qui subissent de nombreux changements d’adresses de paquets sur plusieurs sauts NAT devient beaucoup plus difficile, ce qui rend le dépannage difficile.

L’établissement de tunnels est plus compliqué : L’utilisation de NAT complique également les protocoles de tunneling, comme IPsec, parce que NAT modifie les valeurs dans les en-têtes qui interfèrent avec les contrôles d’intégrité que génèrent IPsec et autres protocoles de tunneling.

Les services peuvent être perturbés : Les services qui nécessitent l’établissement de connexions TCP à partir du réseau externe ou de protocoles sans état tels que ceux qui utilisent UDP peuvent être perturbés.

Configuration de la NAT statique

Le NAT statique est un mappage un à un entre une adresse intérieure et une adresse extérieure. Le NAT statique permet aux connexions initiées par des périphériques externes d’accéder aux périphériques internes.

Par exemple, vous pourriez vouloir mapper une adresse globale interne à une adresse locale interne spécifique qui est assignée à votre serveur Web interne. Les étapes et la syntaxe pour configurer le NAT statique sont les suivantes :

Étape 1. Configurez la translation statique d’une adresse locale interne vers une adresse globale interne :

Router(config)# ip nat inside source static local-ip global-ip

 

Étape 2. Spécifiez l’interface intérieure :

Router(config)# interface type number
Router(config-if)# ip nat inside

Étape 3. Spécifiez l’interface extérieure :

Router(config)# interface type number
Router(config-if)# ip nat outside

La figure D montre un exemple de topologie statique NAT.

Figure D - Topologie NAT statique
Figure D – Topologie NAT statique

L’exemple A montre la configuration NAT statique.

Exemple A – Configuration NAT statique

R2(config)# ip nat inside source static 192.168.10.254 209.165.200.254
R2(config)# interface serial0/0/0
R2(config-if)# ip nat inside
R2(config-if)# interface serial 0/1/0
R2(config-if)# ip nat outside

 

Cette configuration mappe statiquement l’adresse IPv4 privée intérieure de 192.168.10.254 à l’adresse IPv4 publique extérieure de 209.165.200.254. Ceci permet aux hôtes externes d’accéder au serveur web interne en utilisant l’adresse IPv4 publique 209.165.200.254.

Configuration de NAT dynamique

NAT dynamique mappe les adresses IPv4 privées aux adresses publiques tirées d’un pool NAT. Les étapes et la syntaxe pour configurer le NAT dynamique sont les suivantes :

Étape 1. Définissez un pool d’adresses globales à affecter :

Router(config)# ip nat pool name start-ip end-ip {netmask | prefix-length
prefix-length}

Étape 2. Définissez une liste d’accès standard autorisant les adresses à translater :

Router(config)# access-list access-list-number source source-wildcard

Étape 3. Lier le pool d’adresses à la liste d’accès :

Router(config)# ip nat inside source list access-list-number pool name

Étape 4. Spécifiez l’interface intérieure :

Router(config)# interface type number
Router(config-if)# ip nat inside

Étape 5. Spécifiez l’interface extérieure :

Router(config)# interface type number
Router(config-if)# ip nat outside

La figure E montre un exemple de topologie du NAT dynamique .

Figure E - Topologie NAT dynamique
Figure E – Topologie NAT dynamique

L’exemple B montre la configuration du NAT dynamique.

Exemple B – Configuration NAT dynamique

R2(config)# ip nat pool NAT-POOL1 209.165.200.226 209.165.200.240 netmask
   255.255.255.224
R2(config)# access-list 1 permit 192.168.0.0 0.0.255.255
R2(config)# ip nat inside source list 1 pool NAT-POOL1
R2(config)# interface serial 0/0/0
R2(config-if)# ip nat inside
R2(config-if)# interface serial s0/1/0
R2(config-if)# ip nat outside

Configuration de la surcharge NAT

Généralement avec les réseaux domestiques et les petites et moyennes entreprises, le FSI n’attribue qu’une seule adresse IPv4 enregistrée à votre routeur.

Par conséquent, il est nécessaire de surcharger cette adresse IPv4 pour que plusieurs clients internes puissent l’utiliser simultanément.

La configuration est similaire à l’utilisation de la NAT dynamique, sauf qu’au lieu d’utiliser un pool d’adresses, le mot clé interface est utilisé pour identifier l’adresse IPv4 extérieure. Le mot-clé overload permet d’activer PAT pour que les numéros de port source soient suivis pendant la translation.

L’exemple C montre comment R2 dans la Figure E est configuré pour surcharger son adresse IPv4 enregistrée sur l’interface série.

Exemple C – Configuration NAT pour surcharger une adresse d’interface

R2(config)# access-list 1 permit 192.168.0.0 0.0.255.255
R2(config)# ip nat inside source list 1 interface serial 0/1/0 overload
R2(config)# interface serial 0/0/0
R2(config-if)# ip nat inside
R2(config-if)# interface serial s0/1/0
R2(config-if)# ip nat outside

Vous pouvez également surcharger un pool d’adresses NAT, ce qui peut s’avérer nécessaire dans les organisations qui ont potentiellement de nombreux clients qui ont simultanément besoin de translations NAT.

Dans l’exemple précédent B, NAT est configuré avec un pool de 15 adresses (209.165.200.226–209.165.200.240). Si R2 traduit les 15 adresses à un moment donné, les paquets du 16ème client seront mis en file d’attente pour le traitement et éventuellement peuvent expirer.

Pour éviter ce problème, ajoutez le mots-clé overload à la commande qui lie la liste d’accès au pool NAT, comme suit :

R2(config)# ip nat inside source list 1 pool NAT-POOL1 overload

Il est intéressant de noter que Cisco IOS utilise la première adresse IPv4 dans le pool jusqu’à ce qu’il n’y ait plus de numéros de port disponibles. Ensuite, il passe à l’adresse IPv4 suivante dans le pool.

Vérification de la NAT

Supposons que les topologies NAT statique et dynamique des figures D et F sont configurées sur R2, avec le serveur interne traduit statiquement en 209.165.200.254 et NAT-POOL1 configuré avec le mot clé overload.

De plus, supposez que deux clients internes se sont connectés à un hôte externe. Vous pouvez utiliser la commande show ip nat translations pour vérifier les traductions en cours dans la table NAT de R2, comme le montre l’exemple D.

Exemple D – Vérification des opérations NAT avec show ip nat translations

R2# show ip nat translations
Pro	Inside global		Inside local		Outside local		Outside global
--- 	209.165.200.254		192.168.10.254 		--- 			---
tcp	209.165.200.226:47392 	192.168.10.10:47392	209.165.201.30:80	209.165.201.30:80
tcp 	209.165.200.226:50243	192.168.11.10:50243	209.165.201.30:80	209.165.201.30:80

L’entrée statique est toujours dans la table. Actuellement, la table comporte deux entrées dynamiques. Notez que les deux clients internes ont reçu la même adresse globale interne, mais les numéros de port source sont différents (47392 pour PC1 et 50243 pour PC2).

La commande show ip nat statistics, dans l’exemple E, affiche des informations sur le nombre total de translations actives, les paramètres de configuration NAT, le nombre d’adresses dans le pool et le nombre d’adresses qui ont été attribuées.

Exemple E – Vérification des opérations NAT avec show ip nat statistics

R2# show ip nat statistics
Total translations: 3 (1 static, 2 dynamic, 2 extended)
Outside Interfaces: Serial0/1/0
Inside Interfaces: FastEthernet0/0 , Serial0/0/0 , Serial0/0/1
Hits: 29 Misses: 7
Expired translations: 5
Dynamic mappings:
-- Inside Source
access-list 1 pool NAT-POOL1 refCount 2
  pool NAT-POOL1: netmask 255.255.255.224
        start 209.165.200.226 end 209.165.200.240
        type generic, total addresses 3 , allocated 1 (7%), misses 0

Sinon, utilisez la commande show run et recherchez NAT, accéder à liste de commandes, interface ou commandes liées au pool avec les valeurs requises. Examinez attentivement le résultat de ces commandes pour découvrir les erreurs éventuelles.

Il est parfois utile d’effacer les entrées dynamiques plus tôt que la valeur par défaut. Ceci est particulièrement vrai lors du test de la configuration NAT. Pour effacer les entrées dynamiques avant l’expiration du délai, utilisez la commande clear ip nat translation * dans le mode EXEC privilégié.

Dépannage de la fonction NAT

Lorsque vous avez des problèmes de connectivité IP dans un environnement NAT, il est souvent difficile de déterminer la cause du problème.

La première étape pour résoudre votre problème est d’éliminer le NAT comme cause. Suivez ces étapes pour vérifier que le NAT fonctionne comme prévu :

Étape 1. Sur la base de la configuration, définissez clairement ce que le NAT est censé réaliser. Cela peut révéler un problème de configuration.

Étape 2. Vérifiez que les traductions correctes existent dans la table de traduction à l’aide de la commande show ip nat translations.

Étape 3. Utilisez les commandes clear et debug pour vérifier que NAT fonctionne comme prévu. Vérifiez si les entrées dynamiques sont recréées après leur effacement.

Étape 4. Examinez en détail ce qui arrive au paquet et vérifiez que les routeurs disposent des informations de routage correctes pour acheminer le paquet.

Utilisez la commande debug ip nat pour vérifier le fonctionnement du NAT en affichant des informations sur chaque paquet que le routeur translate, comme dans l’exemple F.

Exemple F – Dépannage de NAT avec debug ip nat

R2# debug ip nat
IP NAT debugging is on
R2#
NAT: s=192.168.10.10->209.165.200.226, d=209.165.201.30[8]
NAT*: s=209.165.201.30, d=209.165.200.226->192.168.10.10[8]
NAT: s=192.168.10.10->209.165.200.226, d=209.165.201.30[8]
NAT: s=192.168.10.10->209.165.200.226, d=209.165.201.30[8]
NAT*: s=209.165.201.30, d=209.165.200.226->192.168.10.10[8]
NAT*: s=209.165.201.30, d=209.165.200.226->192.168.10.10[8]
NAT: s=192.168.10.10->209.165.200.226, d=209.165.201.30[8]
NAT: s=192.168.10.10->209.165.200.226, d=209.165.201.30[8]
NAT*: s=209.165.201.30, d=209.165.200.226->192.168.10.10[8]
NAT*: s=209.165.201.30, d=209.165.200.226->192.168.10.10[8]
NAT: s=192.168.10.10->209.165.200.226, d=209.165.201.30[8]
R2#

Vous pouvez voir qu’à l”hôte intérieur 192.168.10.10 a envoyé un trafic vers l’hôte extérieur 209.165.201.30 et son adresse IP a été traduite en l’adresse 209.165.200.226.

Lors du décodage de la sortie de la commande debug, notez ce que les symboles et valeurs suivants indiquent :

* : L’astérisque à côté de NAT indique que la traduction a lieu dans le chemin à commutation rapide. Le premier paquet d’une conversation est toujours commuté, ce qui est plus lent. Les paquets restants passent par le chemin à commutation rapide si une entrée de cache existe.

s= : Il s’agit de l’adresse IPv4 source.

a.b.c.d->w.x.y.z : Ceci indique que l’adresse source a.b.c.d. est traduite en w.x.y.z.

d= : Il s’agit de l’adresse IPv4 de destination.

[xxxx] : La valeur entre parenthèses est le numéro d’identification IP. Ces informations peuvent être utiles pour le débogage car elles permettent la corrélation avec d’autres traces de paquets des analyseurs de protocole.

NAT pour IPv6

Nous terminons notre article sur NAT avec un coup d’oeil rapide sur NAT pour IPv6. IPv6 a été développé dans le but de rendre inutile le NAT pour IPv4. Cependant, IPv6 inclut son propre espace d’adressage privé IPv6 et NAT, qui sont implémentés différemment de ceux d’IPv4.

Espace d’adressage privé IPv6

Les adresses locales uniques IPv6 (ULA) sont similaires aux adresses privées RFC 1918 dans IPv4, mais elles présentent également des différences significatives.

L’intention des adresses locales uniques est de fournir un espace d’adresse IPv6 pour les communications à l’intérieur d’un site local ; les ULA ne sont pas destinées à fournir un espace d’adresse IPv6 supplémentaire ou un niveau de sécurité.

Comme le montre la Figure F, les adresses locales uniques ont le préfixe FC00::/7, ce qui donne une première plage hextet de FC00-FDFF.

Figure F - Format d'adresse IPv6 locale unique ( Unique Local )
Figure F – Format d’adresse IPv6 locale unique ( Unique Local )

Les ULA sont également connues sous le nom d’adresses IPv6 locales (à ne pas confondre avec les adresses IPv6 link-local (lien local).

Contrairement aux adresses IPv4 privées, l’Internet Engineering Task Force (IETF) n’a pas eu l’intention d’utiliser une forme de NAT pour traduire entre les ULA et les adresses unicast globales IPv6.

La communauté Internet examine toujours la mise en œuvre et les utilisations potentielles des ULA IPv6.

Finalité du NAT pour IPv6

NAT pour IPv6 est utilisé dans un contexte très différent dع NAT pour IPv4. Les variétés dع NAT pour IPv6 sont utilisées pour fournir un accès transparent entre les réseaux IPv6 uniquement et IPv4 uniquement, comme le montre la Figure G. NAT pour IPv6 n’est pas utilisé comme une forme de translation IPv6-to-global IPv6 privée.

Figure G - Vue d'ensemble du fonctionnement de NAT64
Figure G – Vue d’ensemble du fonctionnement de NAT64

Au fil des ans, plusieurs types de NAT pour IPv6 ont vu le jour, dont le NAT-PT (Network Address Translation-Protocol Translation).

L’IETF a désapprouvé NAT-PT en faveur de son remplaçant, NAT64 (64 correspond à la translation IPv6-à-IPv4). NAT64 dépasse la portée du CCENT et du CCNA ; toutefois, soyez prêt à répondre aux questions sur les principales différences entre NAT pour IPv4 et NAT pour IPv6.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here


CAPTCHA Image
Reload Image