NAT et PAT : une explication complète

La traduction d’adresse réseau (NAT) est le processus de modification des informations d’adresse IP dans les en-têtes de paquets IP pendant leur transit à travers un dispositif d’acheminement du trafic.

Il existe deux types différents de NAT :

  • NAT
    • NAT statique : Le type le plus simple de NAT fournit une traduction un-à-un des adresses IP. Il est souvent aussi appelé NAT un-à-un. Dans ce type de NAT, seules les adresses IP, la somme de contrôle de l’en-tête IP et toutes les sommes de contrôle de niveau supérieur qui incluent l’adresse IP doivent être modifiées. Le reste du paquet peut rester intact (au moins pour la fonctionnalité TCP/UDP de base, certains protocoles de niveau supérieur pouvant nécessiter une traduction plus poussée). Les NATs de base peuvent être utilisés lorsqu’il est nécessaire d’interconnecter deux réseaux IP dont l’adressage est incompatible. Avec le NAT statique, les traductions existent dans la table de traduction du NAT dès que vous configurez la ou les commandes de NAT statique, et elles restent dans la table de traduction jusqu’à ce que vous supprimiez la ou les commandes de NAT statique.
    • NAT dynamique : Le NAT dynamique présente certaines similitudes et différences par rapport au NAT statique. Comme le NAT statique, le routeur NAT crée un mappage univoque entre une adresse locale intérieure et une adresse globale intérieure et modifie les adresses IP dans les paquets lorsqu’ils sortent et entrent dans le réseau intérieur. Toutefois, le mappage d’une adresse locale interne à une adresse globale interne se fait de manière dynamique. Le NAT dynamique établit un pool d’adresses globales internes possibles et définit des critères de correspondance pour déterminer quelles adresses IP locales internes doivent être traduites par le NAT. L’entrée dynamique reste dans la table tant que le trafic circule occasionnellement. Avec le NAT dynamique, les traductions n’existent pas dans la table NAT tant que le routeur ne reçoit pas de trafic nécessitant une traduction. Les traductions dynamiques ont un délai d’attente après lequel elles sont purgées de la table de traduction.
  • PAT
    • PAT statique : Les traductions PAT statiques permettent à un port UDP ou TCP spécifique sur une adresse globale d’être traduit en un port spécifique sur une adresse locale. Static PAT est identique à static NAT, sauf qu’il vous permet de spécifier le protocole (TCP ou UDP) et le port pour les adresses réelles et mappées. Static PAT vous permet d’identifier la même adresse mappée dans plusieurs déclarations statiques différentes, à condition que le port soit différent pour chaque déclaration. Vous ne pouvez pas utiliser la même adresse mappée pour plusieurs déclarations de NAT statique. Avec le PAT statique, les traductions existent dans la table de traduction NAT dès que vous configurez la ou les commandes PAT statiques, et elles restent dans la table de traduction jusqu’à ce que vous supprimiez la ou les commandes PAT statiques.
    • Surcharge NAT ou PAT : Il est courant de cacher un espace d’adressage IP entier, généralement constitué d’adresses IP privées, derrière une seule adresse IP (ou dans certains cas un petit groupe d’adresses IP) dans un autre espace d’adressage (généralement public). Ce type de NAT est appelé PAT en surcharge. L’entrée dynamique reste dans la table tant que le trafic circule occasionnellement. Avec le PAT en surcharge, les traductions n’existent pas dans la table NAT tant que le routeur ne reçoit pas de trafic nécessitant une traduction. Les traductions ont un délai d’attente après lequel elles sont purgées de la table de traduction.

Exemple #1 : NAT de source statique

Comment traduire l’adresse IP 172.16.0.5 en adresse ip 10.16.0.5.

Définir l’ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Définir l’ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Définir l’entrée NAT statique:

ip nat inside source static 172.16.0.5 10.16.0.5

Avec le NAT statique, la traduction existe dans la table de traduction NAT dès que vous configurez la commande NAT statique, et elle reste dans la table de traduction jusqu’à ce que vous supprimiez la commande NAT statique :

Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside global--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#

Si le client envoie un paquet ICMP ou une requête HTTP au serveur web, la table de nat sera :

Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside globalicmp 10.16.0.5:1 172.16.0.5:1 10.0.0.100:1 10.0.0.100:1tcp 10.16.0.5:56080 172.16.0.5:56080 10.0.0.100:80 10.0.0.100:80--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#

Rappel : Parce que l’adresse mappée est la même pour chaque connexion consécutive avec le NAT statique, et qu’une règle de traduction persistante existe, le NAT statique permet aux hôtes du réseau de destination d’initier le trafic vers un hôte traduit (si une liste d’accès existe qui le permet).

Exemple #2 : Dynamic Source NAT

Comment traduire le réseau 172.16.0.0/28 dans le réseau 10.16.0.0/29.

Définir l’ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Définir l’ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Définir le pool nat utilisé dans la traduction NAT:

Ciscozine(config)#ip nat pool dynamic-ip 10.0.16.1 10.0.16.6 prefix-length 29

Définir quel réseau sera traduit :

Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.15

Définir le NAT source dynamique:

Ciscozine(config)#ip nat inside source list client-list pool dynamic-ip

Avec le NAT dynamique, les traductions n’existent pas dans la table NAT jusqu’à ce que le routeur reçoive du trafic qui nécessite une traduction.

Ciscozine#sh ip nat translationsCiscozine#

mais lorsque certains paquets correspondent à l’ACL..

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globalicmp 10.0.16.1:2 172.16.0.1:2 10.0.0.100:2 10.0.0.100:2tcp 10.0.16.2:35694 172.16.0.2:35694 10.0.0.100:80 10.0.0.100:80tcp 10.0.16.1:56185 172.16.0.1:56185 10.0.0.100:80 10.0.0.100:80--- 10.0.16.1 172.16.0.1 --- ------ 10.0.16.2 172.16.0.2 --- ---Ciscozine#

Note : Si un nouveau paquet arrive d’un autre hôte intérieur, et qu’il a besoin d’une entrée NAT, mais que toutes les adresses IP mises en commun sont utilisées, le routeur rejette simplement le paquet.

Cela peut être vérifié en activant le « debug ip nat ».

Feb 12 19:26:09.895: NAT: translation failed (E), dropping packet s=172.16.0.5 d=10.0.0.100

L’utilisateur doit réessayer jusqu’à ce qu’une entrée NAT arrive à expiration, à ce moment-là la fonction NAT fonctionne pour le prochain hôte qui envoie un paquet. Essentiellement, le pool global intérieur d’adresses doit être aussi grand que le nombre maximum d’hôtes simultanés qui doivent utiliser Internet en même temps – à moins que nous n’utilisions le PAT.

Rappellez-vous : La principale différence entre le NAT dynamique et une plage d’adresses pour le NAT statique est que le NAT statique permet à un hôte distant d’initier une connexion à un hôte traduit (s’il existe une liste d’accès qui le permet), alors que le NAT dynamique ne le permet pas. Vous avez également besoin d’un nombre égal d’adresses mappées que d’adresses réelles avec le NAT statique.

Exemple n°3 : PAT statique

Comment exposer deux services différents sur Internet :

  1. Le serveur Web (172.16.0.5) écoute sur le port tcp 80 ; ce serveur répond sur l’adresse publique 88.88.88.88:80 depuis Internet (extérieur).
  2. Le serveur SSH (172.16.0.6) écoute sur le port tcp 22 ; ce serveur répond sur l’adresse publique 88.88.88.88:666 depuis Internet (extérieur) .

Définir l’ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Définir l’ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Définir la PAT statique:

Le serveur web répond sur le port tcp 80 sur l’interface ‘outside’.

ip nat inside source static tcp 172.17.0.5 80 88.88.88.88 80

Le serveur SSH répond sur le port tcp 666 sur l’interface ‘extérieure’ ; dans ce cas, le port réel (22 tcp) est traduit en port tcp 666 lorsqu’une requête provient d’Internet.

ip nat inside source static tcp 172.17.0.6 22 88.88.88.88 666

Comme le NAT statique, la traduction static PAT existe dans la table de traduction NAT dès que vous configurez la commande static PAT, et elle reste dans la table de traduction jusqu’à ce que vous supprimiez la commande static PAT.

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#

Si un client Internet envoie une requête HTTP ou une connexion SSH (sur le port tcp 666), la table nat sera :

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 56.56.56.56:54686 56.56.56.56:54686tcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 56.56.56.56:33704 56.56.56.56:33704tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#

Exemple n°4 : PAT – Surcharge NAT

Comment partager une connexion Internet.

Définir l’ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Définir l’ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Définir quel réseau sera traduit:

Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.255

Définir le NAT Overload :

Ciscozine(config)#ip nat inside source list client-list interface fastethernet0/1 overload

Comme le NAT dynamique, les traductions n’existent pas dans la table NAT jusqu’à ce que le routeur reçoive du trafic qui nécessite une traduction:

Ciscozine#sh ip nat translationsCiscozine#

mais lorsque certains paquets correspondent à l’ACL..

Ciscozine#show ip nat translationsPro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:7921 172.16.0.2:7921 95.100.96.233:443 95.100.96.233:443tcp 88.88.88.88:8651 172.16.0.5:8651 173.194.44.18:80 173.194.44.18:80tcp 88.88.88.88:8652 172.16.0.111:8652 173.194.44.18:443 173.194.44.18:443tcp 88.88.88.88:8653 172.16.0.223:8653 173.194.70.84:443 173.194.70.84:443udp 88.88.88.88:64116 172.16.0.222:64116 8.8.8.8:53 8.8.8.8:53udp 88.88.88.88:64756 172.16.0.223:64756 8.8.4.4:53 8.8.4.4:53Ciscozine#

Est-ce qu’il existe d’autres types de NAT/PAT ?

La réponse est OUI ! Un type de NAT/PAT largement utilisé est le ip nat outside source ; cette commande permet de traduire l’adresse source d’un paquet qui entre dans l’interface ‘outside’ et sort de l’interface ‘inside’.

En termes simples, si vous voyez le premier exemple #1

La commande:

ip nat outside source static 10.0.0.100 192.168.0.100

traduit le 10.0.0.100 en 192.168.0.100 , donc le client doit appeler le 192.168.0.100 pour contacter le serveur web et non le 10.0.0.100.

Un autre type particolar de nat est le ip nat inside destination utilisé lorsque plusieurs périphériques intérieurs sont des serveurs identiques avec un contenu en miroir, qui de l’extérieur semblent être un seul serveur d’équilibrage de charge.

Vous définissez un pool d’adresses contenant les adresses des hôtes réels se terminant par « type rotary » rendant les serveurs disponibles de manière round-robin. La liste d’accès autorise maintenant l’adresse IP de l’hôte virtuel, c’est-à-dire ce que le monde extérieur pense être l’adresse de l’hôte. L’hôte virtuel est donc 123.123.123.132, les hôtes réels étant 172.16.0.2 à 10.

Configuration partielle

interface FastEthernet0/0ip address 172.16.0.0 255.255.255.0ip nat inside!interface FastEthernet0/1ip address 88.88.88.88 255.255.255.252ip nat outside!ip nat pool real-ip-server 172.16.0.2 172.16.0.10 prefix-length 24 type rotaryip nat inside destination list 1 pool real-ip-server!ip route 0.0.0.0 0.0.0.0 FastEthernet0/1!access-list 1 permit 123.123.123.123

Cette traduction n’est pas de nature bidirectionnelle. Vous devrez utiliser un NAT statique un vers un pour l’accomplir. Un type de fonctionnalité « ip nat inside source static » peut être réalisé avec la configuration ci-dessus en utilisant une seule adresse dans le pool NAT, mais cela ne fonctionnerait que pour le trafic de l’extérieur vers l’intérieur.

Où appliquer le nat inside/outside ?

Typiquement, « ip nat inside » est configuré sur les interfaces de votre environnement local qui ne peuvent pas être routées vers Internet (typiquement une plage privée d’adresses IP) et « ip nat outside » sur l’interface qui est connectée à Internet.

Quand le routeur effectue-t-il le NAT ?

De l’intérieur vers l’extérieur :

  1. Si IPSec, alors vérifier la liste d’accès d’entrée
  2. décryptage – pour CET (Cisco Encryption Technology) ou IPSec
  3. vérifier la liste d’accès d’entrée
  4. vérifier les limites de débit d’entrée
  5. comptabilité d’entrée
  6. rediriger d’entrée
  7. réorientation vers le cache Web
  8. routage de la politique
  9. routage
  10. NAT de l’intérieur vers l’extérieur (traduction locale vers globale)
  11. crypto (vérification de la carte et marquage pour le cryptage)
  12. vérification de la liste d’accès de sortie
  13. inspection (contrôle d’accès basé sur le contexte (CBAC))
  14. .based Access Control (CBAC))
  15. TCP intercept
  16. encryption
  17. Queueueing

Outside to Inside :

  1. Si IPSec, alors vérifier la liste d’accès d’entrée
  2. décryptage – pour CET ou IPSec
  3. vérifier la liste d’accès d’entrée
  4. vérifier les limites de débit d’entrée
  5. comptabilité d’entrée
  6. rediriger vers le cache web
  7. NAT de l’extérieur vers l’intérieur (traduction globale vers locale)
  8. . traduction)
  9. politique de routage
  10. routage
  11. crypto (vérifier la carte et marquer pour le cryptage)
  12. vérifier la liste d’accès de sortie
  13. inspecter le CBAC
  14. interception de TCP
  15. cryptage
  16. Queueueing

Certaines commandes utiles :

  • Pour voir quelques statistiques sur le NAT : show ip nat statistics
  • Pour voir une liste complète des entrées NAT/PAT statiques/dynamiques : show ip nat translations
  • Pour effacer une entrée de nat dynamique : clear ip na translation *
  • Pour déboguer le NAT : debug ip nat

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.