Vous êtes sur la page 1sur 15

Chapitre 2

NAT et PAT
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.

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


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.

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


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


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 .

Figu
re 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.

Vous aimerez peut-être aussi