Ce document explique comment l'utilisation des listes d'accès versus les mappages de route change la fonctionnalité de la traduction d'adresses de réseau (NAT). Pour plus d'informations sur NAT, référez-vous à Cisco IOS NAT.
Aucune spécification déterminée n'est requise pour ce document.
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
Routeurs de la gamme Cisco 2500.
Logiciel Cisco IOS® Version 12.3(3).
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.
Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.
NAT n'utilise que les listes d'accès et les mappages de route lorsqu'il doit créer une entrée de traduction. Si une entrée de traduction correspond déjà au trafic, l'entrée de traduction sera utilisée ; aucune liste d'accès ou carte de route ne sera consultée. La différence entre l'utilisation d'une liste d'accès ou d'un mappage de route est le type d'entrée de traduction qui sera créée.
Lorsque NAT utilise un mappage de route pour décider de créer une entrée de traduction, il crée toujours une entrée de traduction « entièrement étendue ». Cette entrée de traduction contiendra les entrées d'adresse interne et externe (locale et globale) et toutes les informations de port TCP ou UDP. Référez-vous à NAT : Définitions locales et globales pour plus d'informations sur les adresses internes et externes (locales et globales).
Lorsque NAT utilise une liste d'accès pour décider de créer une entrée de traduction, il crée une entrée de traduction « simple ». Cette entrée « simple » contiendra uniquement les entrées d'adresse IP locale et globale pour l'intérieur ou l'extérieur, selon que la commande ip nat inside ou ip nat outside est configurée. En outre, il n'inclut aucune information de port TCP ou UDP.
Lorsque NAT utilise une liste d'accès et que la surcharge a également été spécifiée, NAT crée une entrée de traduction « entièrement étendue ». (Voir note 1). L'opération est similaire au cas de la route-map, sauf que la route-map comporte des fonctionnalités supplémentaires. Voir la note 2 pour plus de détails. Vous pouvez voir un exemple d'entrée de traduction NAT simple et d'entrée de traduction NAT entièrement étendue en sélectionnant l'un des liens suivants :
Voici un exemple de schéma de réseau utilisé pour illustrer la différence entre l’utilisation d’une carte de route et d’une liste d’accès avec NAT :
Dans cet exemple de schéma de réseau, il est nécessaire de traduire les hôtes sur 10.1.1.0 en :
131.108.2.0 lors de l’accès à 131.108.1.0
131.118.2.0 lors de l’accès à 131.118.1.0
Avec une approche de liste d’accès, vous devez effectuer les opérations suivantes pour traduire les hôtes sur 10.1.1.0 :
ip nat pool pool108 131.108.2.1 131.108.2.254 prefix-length 24 !--- Defines a pool of global addresses to be allocated as needed. ip nat pool pool118 131.118.2.1 131.118.2.254 prefix-length 24 ip nat inside source list 108 pool pool108 !--- Establishes dynamic source translation, specifying the !--- access list defined below. ip nat inside source list 118 pool pool118 interface ethernet0 ip address 10.1.1.1 255.255.255.0 ip nat inside !--- Marks the interface as connected to the inside. interface ethernet1 ip address 10.1.2.1 255.255.255.0 ip nat outside !--- Marks the interface as connected to the outside. access-list 108 permit ip 10.1.1.0 0.0.0.255 131.108.1.0 0.0.0.255 !--- Defines the access-list mentioning those addresses !--- that are to be translated. access-list 118 permit ip 10.1.1.0 0.0.0.255 131.118.1.0 0.0.0.255
Référez-vous à Commandes d'adressage et de services IP pour plus d'informations sur ces commandes.
Voici ce qui se passe lorsque l’hôte 1 établit une connexion Telnet avec l’hôte 2.
Packet on (Network 1) s:10.1.1.2(1024) d:131.108.1.2(23) Packet on (Network 2) s:131.108.2.1(1024) d:131.108.1.2(23) (after NAT)
Étant donné qu'une liste d'accès a été utilisée par NAT pour faire correspondre ce trafic, une entrée de traduction simple est créée, qui inclut uniquement les informations de traduction internes et aucune information de protocole ou de port :
inside outside local global global local 10.1.1.2 131.108.2.1 ---- ----
Paquet de retour : Hôte 2 à Hôte 1 :
Packet on (Network 2) s:131.108.1.2(23) d:131.108.2.1(1024) Packet on (Network 1) s:131.108.1.2(23) d:10.1.1.2(1024) (after NAT)
Avec la traduction simple ci-dessus en place, voici ce qui se passe lorsque l’hôte 1 établit également une connexion Telnet avec l’hôte 3 :
Packet on (Network 1) s:10.1.1.2(1025) d:131.118.1.2(23) Packet on (Network 2) s:131.108.2.1(1025) d:131.118.1.2(23) (after NAT)
Vous pouvez voir qu'il y a un problème. Les paquets allant de 10.1.1.0 hôtes à 131.118.1.0 hôtes doivent être traduits en 131.118.2.0, pas 131.108.2.0. La raison en est qu’il existe déjà une entrée de traduction NAT pour 10.1.1.2 <—> 131.108.2.1 qui correspond également au trafic entre l’hôte 1 et l’hôte 3. Par conséquent, cette entrée de traduction sera utilisée et les listes d'accès 108 et 118 ne sont pas cochées.
Bien que l'entrée de traduction simple soit en place dans la table de traduction NAT, elle peut être utilisée par tout utilisateur externe sur n'importe quel hôte externe pour envoyer un paquet à l'hôte 1 tant que l'utilisateur externe utilise l'adresse globale interne (131.108.2.1) pour l'hôte 1. Normalement, une traduction NAT statique est nécessaire pour permettre ceci.
La bonne façon de configurer l'exemple dans ce document est d'utiliser des mappages de route. Avec une approche de mappage de route, procédez comme suit pour traduire les hôtes sur 10.1.1.0 :
ip nat pool pool-108 131.108.2.1 131.108.2.254 prefix-length 24 ip nat pool pool-118 131.118.2.1 131.118.2.254 prefix-length 24 ip nat inside source route-map MAP-108 pool pool-108 !--- Establishes dynamic source translation, specifying !--- the route-map MAP-108 which is defined below. ip nat inside source route-map MAP-118 pool pool-118 !--- Establishes dynamic source translation, specifying the route-map MAP-118. !--- Here, the route-maps are consulted instead of !--- access-lists (as in the previous case). interface ethernet0 ip address 10.1.1.1 255.255.255.0 ip nat inside interface ethernet1 ip address 10.1.2.1 255.255.255.0 ip nat outside access-list 108 permit ip 10.1.1.0 0.0.0.255 131.108.1.0 0.0.0.255 access-list 118 permit ip 10.1.1.0 0.0.0.255 131.118.1.0 0.0.0.255 route-map MAP-108 permit 10 !--- Defines the Route-map MAP-108. match ip address 108 !--- Specifies the criteria for translation. Here, the IP !--- address mentioned in the access-list 108 is translated. !--- The translation is defined in the !--- ip nat inside source route-map MAP-108 pool pool-108 command. route-map MAP-118 permit 10 !--- Defines the Route-map MAP-108. match ip address 118 !--- The IP address mentioned in the access-list 118 is translated. !--- The translation is defined in the !--- ip nat inside source route-map MAP-118 pool pool-118 command.
Référez-vous à Commandes d'adressage et de services IP pour plus d'informations sur ces commandes.
Voici ce qui se passe lorsque l’hôte 1 établit une connexion Telnet avec l’hôte 2 :
Packet on (Network 1) s:10.1.1.2(1024) d:131.108.1.2(23) Packet on (Network 2) s:131.108.2.1(1024) d:131.108.1.2(23) (after NAT)
Dans ce cas, étant donné qu'un mappage de route a été utilisé par NAT pour correspondre au trafic à traduire, NAT crée une entrée de traduction entièrement étendue, qui inclut des informations de traduction internes et externes :
inside outside local global global local 10.1.1.2:1024 131.108.2.1:1024 131.108.1.2:23 131.108.1.2:23
Paquet de retour : Hôte 2 à Hôte 1 :
Packet on (Network 2) s:131.108.1.2(23) d:131.108.2.1(1024) Packet on (Network 1) s:131.108.1.2(23) d:10.1.1.2(1024) (after NAT)
Maintenant, lorsque l’hôte 1 envoie un paquet à l’hôte 3, voici ce qui apparaît :
Packet on (Network 1) s:10.1.1.2(1025) d:131.118.1.2(23) Packet on (Network 2) s:131.118.2.1(1025) d:131.118.1.2(23) (after NAT)
La traduction a fonctionné correctement car le paquet sur (N1) ne correspond pas à l’entrée de traduction entièrement étendue utilisée pour le trafic de l’hôte 1 vers l’hôte 2. Comme la traduction existante ne correspond pas, NAT crée une autre entrée de traduction pour le trafic de l’hôte 1 vers l’hôte 3.
Voici les entrées de traduction entièrement étendues sur le routeur NAT :
inside outside local global global local 10.1.1.2:1024 131.108.2.1:1024 131.108.1.2:23 131.108.1.2:23 10.1.1.2:1025 131.118.2.1:1025 131.118.1.2:23 131.118.1.2:23
Comme la table de traduction NAT comporte deux entrées complètes, elle traduira correctement le trafic allant vers les deux destinations différentes à partir de la même source.
Contrairement à l'entrée de traduction simple créée via la liste d'accès, l'entrée de traduction entièrement étendue créée via le mappage de route ne peut pas être utilisée par un autre utilisateur externe pour envoyer un paquet à l'hôte 1. Une traduction NAT statique est nécessaire pour permettre ceci.
Dans le cas d'une liste d'accès avec surcharge, la configuration est similaire à la liste d'accès sans surcharge. L'exception est que vous devez ajouter le mot clé overload à la commande ip nat inside source list 108 pool108 et ip nat inside source list 118 pool118.
L'avantage de l'utilisation de route-maps est que sous la commande match vous pouvez avoir plus d'options que l'adresse IP source. Par exemple, sous route-map, match interface ou match ip next-hop peut être spécifié. En utilisant les routes-maps, vous pouvez spécifier l'adresse IP ainsi que l'interface ou l'adresse de tronçon suivant vers laquelle le paquet doit être transféré. Par conséquent, les routes-maps avec NAT sont utilisées dans un scénario où l'abonné est hébergé plusieurs fois par différents FAI.
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
10-Aug-2005 |
Première publication |