Dans certaines situations, vous aurez sûrement à configurer les commandes de traduction des adresses réseaux (NAT) statique et dynamique sur un routeur Cisco. Ce document explique la manière de procéder et donne un exemple de scénario.
La connaissance des concepts et des opérations NAT de base est utile.
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
Avec un NAT dynamique, les traductions n'existent pas dans la table NAT tant que le routeur ne reçoit pas de trafic pour lequel une traduction est nécessaire. Les traductions dynamiques sont purgées de la table de traduction après une période d'expiration.
Avec la NAT statique, les traductions existent dans la table de traduction NAT dès que vous configurez les commandes NAT statiques, et elles restent dans la table de traduction jusqu'à ce que vous supprimiez les commandes NAT statiques.
Le diagramme de réseau suivant en est un exemple :
Ces commandes sont configurées sur le routeur NAT présenté ci-dessus :
Routeur NAT |
version 12.3
ip nat pool test 172.16.131.2 172.16.131.10 netmask 255.255.255.0
!--- Refer to ip nat pool for more details on the command.
.
ip nat inside source list 7 pool test
!--- Refer to ip nat inside source for more details on the command.
ip nat inside source static 10.10.10.1 172.16.131.1
interface e 0
ip address 10.10.10.254 255.255.255.0
ip nat inside
interface s 0
ip address 172.16.130.2 255.255.255.0
ip nat outside
ip route 192.168.1.0 255.255.255.0 172.16.130.1
access-list 7 permit 10.10.10.0 0.0.0.255 |
La configuration sur le périphérique OutsideA est la suivante :
Routeur OutsideA |
version 12.3
hostname outsideA
!
!
!
interface Serial1/0
ip address 172.16.130.1 255.255.255.0
serial restart-delay 0
clockrate 64000
!
interface FastEthernet2/0
ip address 192.168.1.1 255.255.255.0
speed auto
half-duplex
ip route 172.16.131.0 255.255.255.0 172.16.130.2 |
La configuration sur le périphérique InsideA est la suivante :
Routeur InsideA |
version 12.3
!
interface Ethernet1/0
ip address 10.10.10.1 255.255.255.0
half-duplex
!
ip route 0.0.0.0 0.0.0.0 10.10.10.254
!
! |
A l'aide de la commande show ip nat translations, vous pouvez voir le contenu de la table de traduction :
NATrouter#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 172.16.131.1 10.10.10.1 --- ---
Notez que seule la traduction statique est mentionnée dans la table de traduction. Cette entrée renvoie une traduction de l'adresse globale interne à l'adresse locale interne ; ainsi les périphériques du nuage externe peuvent envoyer des paquets à l'adresse globale 172.16.131.1 et atteindre le périphérique du nuage interne à l'adresse locale 10.10.10.1.
Ce processus est représenté ci-dessous :
outsideA#ping 172.16.131.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.131.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/32/32 ms
NATrouter#debug ip nat
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1005]
18:12:06: NAT: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1005]
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1006]
18:12:06: NAT*: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1006]
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1007]
18:12:06: NAT*: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1007]
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1008]
18:12:06: NAT*: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1008]
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1009]
18:12:06: NAT*: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1009]
Aucune autre traduction n'est générée ou entrée dans la table de traduction tant que le routeur ne reçoit pas de paquet sur son interface interne avec une adresse source autorisée par la liste de contrôle d'accès (ACL) 7.
Cependant, puisqu'aucune traduction dynamique n'existe encore, les périphériques externes ne peuvent atteindre aucun des périphériques internes (autres que 10.10.10.1), et ce même s'ils envoient des paquets à une adresse globale (172.16.131.2 via 172.16.131.10). Quand le routeur reçoit un paquet destiné à une de ces adresses globales, il vérifie la table de traduction pour s'assurer qu'une traduction existe. Si aucune traduction n'existe, il modifie le routage du paquet. Ce comportement NAT est traité plus loin dans un exemple de configuration avec la commande ip nat outside source list et un exemple de configuration avec la commande ip nat outside source static.
Dans la topologie ci-dessus, si la communication entre les périphériques réseau internes et externes provient uniquement des périphériques internes, la traduction dynamique s'effectue correctement. Mais que se passe-t-il si un serveur de messagerie est ajouté sur le réseau interne qui doit recevoir des paquets émis depuis l'extérieur ? Vous devez configurer une entrée NAT statique afin que les serveurs de messagerie externes puissent communiquer avec le serveur de messagerie interne. Dans l'exemple ci-dessus, si le serveur de messagerie a l'adresse locale 10.10.10.1, une traduction statique est déjà disponible.
Toutefois, si le nombre d'adresses globales disponibles est limité et que vous devez configurer un seul périphérique de manière statique pour le NAT, vous pouvez utiliser une configuration comme celle ci-dessous :
Routeur NAT |
ip nat inside source list 7 interface serial 0 overload
ip nat inside source static tcp 10.10.10.1 25 172.16.130.2 25
!--- Refer to ip nat inside source for more details on the command.
interface e 0
ip address 10.10.10.254 255.255.255.0
ip nat inside
!--- For more details the ip nat inside|outside command, !--- please refer to ip nat inside .
interface s 0
ip address 172.16.130.2 255.255.255.0
ip nat outside
access-list 7 permit 10.10.10.0 0.0.0.255
ip route 0.0.0.0 0.0.0.0 172.16.130.1 |
Dans l'exemple ci-dessus, le NAT est configuré pour surcharger l'adresse IP de l'interface Serial 0. Cela signifie que plusieurs adresses locales internes peuvent être traduites dynamiquement vers la même adresse globale, dans ce cas, l'adresse attribuée à Serial 0. En outre, la NAT est configurée de manière statique de sorte que les paquets provenant de l'adresse locale 10.10.10.1 avec le port TCP 25 (SMTP) soient traduits en adresse IP Serial 0 du port TCP 25. Puisque qu'il s'agit d'une entrée NAT statique, les serveurs de messagerie externes peuvent émettre des paquets SMTP (port TCP 25) à l'adresse globale 172.16.131.254.
Remarque : Bien qu'il soit possible d'utiliser la même adresse globale pour la NAT dynamique et statique, il est préférable, dans la mesure du possible, d'utiliser différentes adresses globales.
La table de traduction NAT a l'entrée suivante :
NATRouter#show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 172.16.130.2:25 10.10.10.1:25 --- ---
La sortie de debug ip nat affiche la traduction NAT lorsque le périphérique OutsideA accède au périphérique InsideA :
04:21:16: NAT: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9919]
04:21:16: NAT: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [0]
04:21:16: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9922]
04:21:16: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9923]
04:21:16: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [1]
04:21:16: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [2]
04:21:16: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [3]
04:21:16: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9927]
04:21:16: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [4]
04:21:16: NAT: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [5]
04:21:16: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9931]
04:21:17: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9934]
04:21:17: NAT: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9935]
04:21:17: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [6]
En résumé, le NAT dynamique exige que les paquets soient commutés par le routeur NAT afin de générer des traductions NAT dans la table de traduction. Si vous utilisez la commande ip nat inside, ces paquets doivent provenir de l'intérieur. Si vous utilisez la commande ip nat outside, ces paquets doivent provenir de l'extérieur.
Le NAT statique ne requiert pas que des paquets soient commutés par le routeur. De plus, les traductions sont entrées de manière statique dans la table de traduction.