Este documento explica cómo utilizar la Traducción de direcciones de red (NAT) para redes que se superponen. Las redes superpuestas se producen cuando asigna una dirección IP a un dispositivo de su red que ya posee legalmente y la asigna a un dispositivo diferente en Internet o la red externa. También se superponen redes cuando dos compañías, que utilizan direcciones IP RFC 1918 en sus redes, se fusionan. Estas dos redes necesitan comunicarse, preferentemente sin tener que redirigir todos los dispositivos.
Para comprender el contenido de este documento, es útil disponer de un conocimiento básico del direccionamiento IP, el routing IP y el sistema de nombres de dominio (DNS).
El soporte para NAT comenzó en la versión 11.2 del software Cisco IOS®. Para obtener más información sobre el soporte de la plataforma, consulte Preguntas frecuentes sobre NAT.
Para obtener más información sobre las convenciones del documento, consulte Convenciones de Consejos Técnicos de Cisco.
En esta sección encontrará la información para configurar las funciones descritas en este documento.
Nota: Para encontrar información adicional sobre los comandos usados en este documento, utilice la Command Lookup Tool (sólo clientes registrados) .
Este documento utiliza la instalación de red que se muestra en el siguiente diagrama.
Observe que el dispositivo interno tiene la misma dirección IP que el dispositivo externo con el que desea comunicarse.
El router A está configurado para NAT, de modo que traduce el dispositivo interno a una dirección del conjunto "test-loop" y el dispositivo externo a una dirección del conjunto "test-dns". Una explicación de cómo esta configuración ayuda con la superposición sigue la tabla de configuración siguiente.
Router A |
---|
! version 11.2 no service udp-small-servers no service tcp-small-servers ! hostname Router-A ! ! ip domain-name cisco.com ip name-server 171.69.2.132 ! interface Loopback0 ip address 1.1.1.1 255.0.0.0 ! interface Ethernet0 ip address 135.135.1.2 255.255.255.0 shutdown ! interface Serial0 ip address 171.68.200.49 255.255.255.0 ip nat inside no ip mroute-cache no ip route-cache no fair-queue ! interface Serial1 ip address 172.16.47.146 255.255.255.240 ip nat outside no ip mroute-cache no ip route-cache ! ip nat pool test-loop 172.16.47.161 172.16.47.165 prefix-length 28 ip nat pool test-dns 172.16.47.177 172.16.47.180 prefix-length 28 ip nat inside source list 7 pool test-loop ip nat outside source list 7 pool test-dns ip classless ip route 0.0.0.0 0.0.0.0 172.16.47.145 access-list 7 permit 171.68.200.0 0.0.0.255 ! ! line con 0 exec-timeout 0 0 line aux 0 line vty 0 4 login ! end |
Para que la configuración anterior ayude con la superposición cuando el dispositivo interno se comunica con el dispositivo externo, debe utilizar el nombre de dominio del dispositivo externo.
El dispositivo interno no puede utilizar la dirección IP del dispositivo externo porque es la misma que la dirección asignada a sí mismo (el dispositivo interno). Por lo tanto, el dispositivo interno enviará una consulta DNS para el nombre de dominio del dispositivo externo. La dirección IP del dispositivo interno será el origen de esta consulta, y esa dirección será traducida a una dirección del conjunto "test-loop" porque el comando ip nat inside source list está configurado.
El servidor DNS responde a la dirección que vino del conjunto "test-loop" con la dirección IP asociada con el nombre de dominio del dispositivo externo en la carga útil del paquete. La dirección de destino del paquete de respuesta se traduce nuevamente a la dirección del dispositivo interno, y la dirección en la carga útil del paquete de respuesta se traduce luego a una dirección del conjunto "test-dns" debido al comando ip nat outside source list. Por lo tanto, el dispositivo interno aprende que la dirección IP para el dispositivo externo es una de las direcciones del grupo de "test-dns", y usará esta dirección cuando se comunique con el dispositivo externo. El router que ejecuta NAT se encarga de las traducciones en este punto.
Este proceso se puede ver en detalle en la sección Solución de problemas. Los dispositivos que utilizan direcciones superpuestas pueden comunicarse entre sí sin el uso de DNS, pero en este caso, se tendría que configurar NAT estática. A continuación se muestra un ejemplo de cómo se podría hacer esto.
Router A |
---|
! version 11.2 no service udp-small-servers no service tcp-small-servers ! hostname Router-A ! ! ip domain-name cisco.com ip name-server 171.69.2.132 ! interface Loopback0 ip address 1.1.1.1 255.0.0.0 ! interface Ethernet0 ip address 135.135.1.2 255.255.255.0 shutdown ! interface Serial0 ip address 171.68.200.49 255.255.255.0 ip nat inside no ip mroute-cache no ip route-cache no fair-queue ! interface Serial1 ip address 172.16.47.146 255.255.255.240 ip nat outside no ip mroute-cache no ip route-cache ! ip nat pool test-loop 172.16.47.161 172.16.47.165 prefix-length 28 ip nat inside source list 7 pool test-loop ip nat outside source static 171.68.200.48 172.16.47.177 ip classless ip route 0.0.0.0 0.0.0.0 172.16.47.145 ip route 172.16.47.160 255.255.255.240 Serial0 !--- This line is necessary to make NAT work for return traffic. !--- The router needs to have a route for the pool to the inside !--- NAT interface so it knows that a translation is needed. access-list 7 permit 171.68.200.0 0.0.0.255 ! ! line con 0 exec-timeout 0 0 line aux 0 line vty 0 4 login ! end |
Con la configuración anterior, cuando el dispositivo interno desea comunicarse con el dispositivo externo ahora puede utilizar la dirección IP 172.16.47.177, y DNS no es necesario. Como se muestra anteriormente, la traducción de la dirección del dispositivo interno todavía se realiza de forma dinámica, lo que significa que el router debe obtener paquetes del dispositivo interno antes de crear una traducción. Por esta razón, el dispositivo interno debe iniciar todas las conexiones para que el dispositivo interno y el dispositivo externo se comuniquen. Si se requería que el dispositivo externo iniciara conexiones con el dispositivo interno, entonces la dirección del dispositivo interno también se debía configurar estáticamente.
Actualmente, no hay un procedimiento de verificación disponible para esta configuración.
En esta sección encontrará información que puede utilizar para solucionar problemas de configuración.
El proceso por el cual el dispositivo interno utilizó DNS para comunicarse con el dispositivo externo, como se describe anteriormente, se puede ver en detalle con el siguiente proceso de resolución de problemas.
En este momento no existen traducciones en la tabla de traducción que puedan verse con el comando show ip nat translations. Los ejemplos siguientes utilizan los comandos debug ip packet y debug ip nat en su lugar.
Nota: Los comandos debug generan una cantidad significativa de resultados. Utilícelo sólo cuando el tráfico en la red del IP es lento, de manera que otra actividad del sistema no se vea afectada negativamente.
Router-A# show ip nat translations Router-A# show debug Generic IP: IP packet debugging is on (detailed) IP NAT debugging is on
Cuando el dispositivo interno envía su consulta DNS al servidor DNS, que se encuentra fuera del dominio NAT, la dirección de origen de la consulta DNS (la dirección del dispositivo interno) se traduce debido a los comando ip nat inside. Esto puede verse en la siguiente salida de depuración.
NAT: s=171.68.200.48->172.16.47.161, d=171.69.2.132 [0] IP: s=172.16.47.161 (Serial0), d=171.69.2.132 (Serial1), g=172.16.47.145, len 66, forward UDP src=6988, dst=53
Cuando el servidor DNS envía una respuesta DNS, la carga útil de la respuesta DNS se traduce debido a los comandos ip nat outside.
Nota: NAT no mira la carga útil de la respuesta DNS a menos que la traducción ocurra en el encabezado IP del paquete de respuesta. Vea el comando ip nat outside source list 7 en la configuración del router descrita anteriormente.
El primer mensaje NAT en la salida de depuración siguiente, muestra que el router reconoce la respuesta DNS y traduce la dirección de IP dentro de la carga útil a 172.16.47.177. El segundo mensaje de NAT muestra al router traduciendo el destino de la respuesta de DNS para poder reenviar una respuesta al dispositivo interno que realizó la consulta de DNS inicial. La parte de destino del encabezado, la dirección global interna, se traduce a la dirección local interna.
Se traduce la carga útil de la respuesta DNS:
NAT: DNS resource record 171.68.200.48 -> 172.16.47.177
La porción de destino del encabezado de IP del paquete de respuesta DNS se traduce:
NAT: s=171.69.2.132, d=172.16.47.161->171.68.200.48 [65371] IP: s=171.69.2.132 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 315, forward UDP src=53, dst=6988
Veamos otra consulta DNS y respondamos:
NAT: s=171.68.200.48->172.16.47.161, d=171.69.2.132 [0] IP: s=172.16.47.161 (Serial0), d=171.69.2.132 (Serial1), g=172.16.47.145, len 66, forward UDP src=7419, dst=53 NAT: DNS resource record 171.68.200.48 -> 172.16.47.177 NAT: s=171.69.2.132, d=172.16.47.161->171.68.200.48 [65388] IP: s=171.69.2.132 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 315, forward UDP src=53, dst=7419
Ahora que se convirtió la carga útil del DNS, nuestra tabla de conversión tiene una entrada para las direcciones externas locales y globales del dispositivo externo. Con estas entradas en la tabla, ahora podemos traducir completamente el encabezado de los paquetes ICMP intercambiados entre los dispositivos interior y exterior. Veamos este intercambio en el resultado de depuración siguiente.
El siguiente resultado muestra la dirección de origen (dirección interna del dispositivo) que se está traduciendo.
NAT: s=171.68.200.48->172.16.47.161, d=172.16.47.177 [406]
Aquí se traduce la dirección de destino (dirección local externa del dispositivo externo).
NAT: s=172.16.47.161, d=172.16.47.177->171.68.200.48 [406]
Después de la traducción, el paquete IP tiene el siguiente aspecto:
IP: s=172.16.47.161 (Serial0), d=171.68.200.48 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0
El siguiente resultado muestra cómo la dirección de origen (dirección del dispositivo externo) se traduce en el paquete de retorno.
NAT*: s=171.68.200.48->172.16.47.177, d=172.16.47.161 [16259]
Ahora se traduce la dirección de destino (dentro de la dirección global del dispositivo) del paquete de retorno.
NAT*: s=172.16.47.177, d=172.16.47.161->171.68.200.48 [16259]
Después de la traducción, el paquete de retorno tiene el siguiente aspecto:
IP: s=172.16.47.177 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0
El intercambio de paquetes continúa entre el dispositivo interno y el externo.
NAT: s=171.68.200.48->172.16.47.161, d=172.16.47.177 [407] NAT: s=172.16.47.161, d=172.16.47.177->171.68.200.48 [407] IP: s=172.16.47.161 (Serial0), d=171.68.200.48 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 NAT*: s=171.68.200.48->172.16.47.177, d=172.16.47.161 [16262] NAT*: s=172.16.47.177, d=172.16.47.161->171.68.200.48 [16262] IP: s=172.16.47.177 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0 NAT: s=171.68.200.48->172.16.47.161, d=172.16.47.177 [408] NAT: s=172.16.47.161, d=172.16.47.177->171.68.200.48 [408] IP: s=172.16.47.161 (Serial0), d=171.68.200.48 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 NAT*: s=171.68.200.48->172.16.47.177, d=172.16.47.161 [16267] NAT*: s=172.16.47.177, d=172.16.47.161->171.68.200.48 [16267] IP: s=172.16.47.177 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0 NAT: s=171.68.200.48->172.16.47.161, d=172.16.47.177 [409] NAT: s=172.16.47.161, d=172.16.47.177->171.68.200.48 [409] IP: s=172.16.47.161 (Serial0), d=171.68.200.48 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 NAT*: s=171.68.200.48->172.16.47.177, d=172.16.47.161 [16273] NAT*: s=172.16.47.177, d=172.16.47.161->171.68.200.48 [16273] IP: s=172.16.47.177 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0 NAT: s=171.68.200.48->172.16.47.161, d=172.16.47.177 [410] NAT: s=172.16.47.161, d=172.16.47.177->171.68.200.48 [410] IP: s=172.16.47.161 (Serial0), d=171.68.200.48 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 NAT*: s=171.68.200.48->172.16.47.177, d=172.16.47.161 [16277] NAT*: s=172.16.47.177, d=172.16.47.161->171.68.200.48 [16277] IP: s=172.16.47.177 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0
Una vez que se completa el intercambio de paquetes entre el dispositivo externo y el interno, podemos ver que la tabla de traducción tiene tres entradas. La primera entrada se creó cuando el dispositivo interno envió una consulta DNS. La segunda entrada se creó cuando la carga útil de la respuesta del DNS se tradujo. La tercera entrada se creó cuando se intercambió el ping entre el dispositivo interno y el dispositivo externo. La tercera entrada es un resumen de las dos primeras entradas y se utiliza para traducciones más efectivas.
Router-A# show ip nat translations Pro Inside global Inside local Outside local Outside global --- 172.16.47.161 171.68.200.48 --- --- --- --- --- 172.16.47.177 171.68.200.48 --- 172.16.47.161 171.68.200.48 172.16.47.177 171.68.200.48
Es importante tener en cuenta que cuando intenta establecer la conectividad entre dos redes superpuestas ejecutando NAT dinámica en un único router de Cisco, debe utilizar DNS para crear una traducción global externa local a externa. Si no utiliza DNS, la conectividad se puede establecer con NAT estática, pero es más difícil de administrar.
Revisión | Fecha de publicación | Comentarios |
---|---|---|
1.0 |
10-Aug-2005 |
Versión inicial |