La traducción de direcciones de red (NAT) es el proceso de modificación de la información de las direcciones IP en las cabeceras de los paquetes IP mientras están en tránsito a través de un dispositivo de enrutamiento de tráfico.
Hay dos tipos diferentes de NAT:
- NAT
- NAT estática: El tipo más simple de NAT proporciona una traducción uno a uno de las direcciones IP. También se suele denominar NAT uno a uno. En este tipo de NAT sólo hay que cambiar las direcciones IP, la suma de comprobación de la cabecera IP y cualquier suma de comprobación de nivel superior que incluya la dirección IP. El resto del paquete puede dejarse intacto (al menos para la funcionalidad básica TCP/UDP, algunos protocolos de nivel superior pueden necesitar más traducción). Los NATs básicos pueden utilizarse cuando se requiere interconectar dos redes IP con direcciones incompatibles. Con la NAT estática, las traducciones existen en la tabla de traducción de NAT tan pronto como se configuran los comandos de NAT estática, y permanecen en la tabla de traducción hasta que se eliminan los comandos de NAT estática.
- NAT dinámica: La NAT dinámica tiene algunas similitudes y diferencias en comparación con la NAT estática. Al igual que la NAT estática, el router NAT crea un mapeo uno a uno entre una dirección local interior y una dirección global interior y cambia las direcciones IP en los paquetes a medida que salen y entran en la red interior. Sin embargo, la asignación de una dirección local interna a una dirección global interna se realiza de forma dinámica. La NAT dinámica establece un conjunto de posibles direcciones globales internas y define criterios de coincidencia para determinar qué direcciones IP locales internas deben traducirse con NAT. La entrada dinámica permanece en la tabla mientras el tráfico fluye ocasionalmente. Con la NAT dinámica, las traducciones no existen en la tabla NAT hasta que el router recibe el tráfico que requiere la traducción. Las traducciones dinámicas tienen un período de tiempo de espera después del cual se purgan de la tabla de traducción.
- PAT
- Static PAT: Las traducciones Static PAT permiten traducir un puerto UDP o TCP específico en una dirección global a un puerto específico en una dirección local. Static PAT es lo mismo que NAT estático, excepto que permite especificar el protocolo (TCP o UDP) y el puerto para las direcciones reales y las mapeadas. El PAT estático le permite identificar la misma dirección mapeada a través de muchas declaraciones estáticas diferentes, siempre que el puerto sea diferente para cada declaración. No se puede utilizar la misma dirección mapeada para varias sentencias NAT estáticas. Con PAT estático, las traducciones existen en la tabla de traducción de NAT tan pronto como se configuran los comandos de PAT estático, y permanecen en la tabla de traducción hasta que se eliminan los comandos de PAT estático.
- Sobrecarga de NAT o PAT: Es común ocultar todo un espacio de direcciones IP, normalmente compuesto por direcciones IP privadas, detrás de una única dirección IP (o en algunos casos un pequeño grupo de direcciones IP) en otro espacio de direcciones (normalmente público). Este tipo de NAT se llama PAT en sobrecarga. La entrada dinámica permanece en la tabla mientras el tráfico fluye ocasionalmente. Con PAT en sobrecarga, las traducciones no existen en la tabla NAT hasta que el router recibe el tráfico que requiere la traducción. Las traducciones tienen un período de tiempo de espera después del cual se purgan de la tabla de traducción.
Ejemplo #1: Static Source NAT
Cómo traducir la dirección IP 172.16.0.5 a la dirección ip 10.16.0.5.
Define la ip nat inside:
Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside
Define la ip nat outside:
Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside
Define la entrada de NAT estática:
ip nat inside source static 172.16.0.5 10.16.0.5
Con la NAT estática, la traducción existe en la tabla de traducción NAT tan pronto como se configura el comando de NAT estática, y permanece en la tabla de traducción hasta que se elimina el comando de NAT estática:
Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside global--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#
Si el cliente envía un paquete ICMP o una solicitud HTTP al servidor web, la tabla nat será:
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#
Recuerde: Como la dirección mapeada es la misma para cada conexión consecutiva con NAT estática, y existe una regla de traducción persistente, la NAT estática permite que los hosts de la red de destino inicien el tráfico hacia un host traducido (si existe una lista de acceso que lo permita).
Ejemplo #2: Dynamic Source NAT
Cómo traducir la red 172.16.0.0/28 en la red 10.16.0.0/29.
Define la ip nat inside:
Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside
Define la ip nat outside:
Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside
Define el nat pool utilizado en la traducción NAT:
Ciscozine(config)#ip nat pool dynamic-ip 10.0.16.1 10.0.16.6 prefix-length 29
Define qué red será traducida:
Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.15
Defina el NAT de origen dinámico:
Ciscozine(config)#ip nat inside source list client-list pool dynamic-ip
Con el NAT dinámico, las traducciones no existen en la tabla NAT hasta que el router recibe el tráfico que requiere la traducción.
Ciscozine#sh ip nat translationsCiscozine#
Pero cuando algunos paquetes coinciden con la 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#
Nota: Si un nuevo paquete llega desde otro host interno, y necesita una entrada NAT, pero todas las direcciones IP agrupadas están en uso, el router simplemente descarta el paquete.
Esto se puede comprobar activando la función «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
El usuario debe intentar de nuevo hasta que una entrada NAT se agote, momento en el que la función NAT funciona para el siguiente host que envíe un paquete. Esencialmente, el pool global interno de direcciones necesita ser tan grande como el número máximo de hosts concurrentes que necesitan usar Internet al mismo tiempo-a menos que usemos PAT.
Recuerda: La principal diferencia entre la NAT dinámica y un rango de direcciones para la NAT estática es que la NAT estática permite que un host remoto inicie una conexión con un host traducido (si existe una lista de acceso que lo permita), mientras que la NAT dinámica no. También se necesita un número igual de direcciones mapeadas que de direcciones reales con la NAT estática.
Ejemplo #3: PAT estático
Cómo exponer dos servicios diferentes en Internet:
- El servidor Web (172.16.0.5) está escuchando en el puerto tcp 80; este servidor responde en la dirección pública 88.88.88.88:80 desde Internet (exterior).
- El servidor SSH (172.16.0.6) está escuchando en el puerto tcp 22; este servidor responde en la dirección pública 88.88.88.88:666 desde Internet (exterior) .
Define la ip nat inside:
Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside
Define la ip nat outside:
Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside
Define el PAT estático:
El servidor web responde en el puerto tcp 80 en la interfaz ‘outside’.
ip nat inside source static tcp 172.17.0.5 80 88.88.88.88 80
El servidor SSH responde en el puerto tcp 666 en la interfaz ‘exterior’ ; en este caso, el puerto real (22 tcp) se traduce al puerto tcp 666 cuando una petición viene de Internet.
ip nat inside source static tcp 172.17.0.6 22 88.88.88.88 666
Al igual que la NAT estática, la traducción PAT estática existe en la tabla de traducción NAT tan pronto como se configura el comando PAT estático, y permanece en la tabla de traducción hasta que se elimina el comando PAT estático.
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 cliente de Internet envía una solicitud HTTP o una conexión SSH (en el puerto tcp 666), la tabla nat será:
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#
Ejemplo #4: PAT – Sobrecarga NAT
Cómo compartir una conexión a Internet.
Define la ip nat inside:
Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside
Define la ip nat outside:
Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside
Define qué red será traducida:
Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.255
Define la NAT Overload:
Ciscozine(config)#ip nat inside source list client-list interface fastethernet0/1 overload
Al igual que la NAT dinámica, las traducciones no existen en la tabla NAT hasta que el router recibe el tráfico que requiere la traducción:
Ciscozine#sh ip nat translationsCiscozine#
pero cuando algunos paquetes coinciden con la 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#
¿Existen otros tipos de NAT/PAT?
¡La respuesta es SÍ! Un tipo de NAT/PAT muy utilizado es el ip nat outside source; este comando permite traducir la dirección de origen de un paquete que entra en la interfaz ‘outside’ y sale de la interfaz ‘inside’.
En términos simples, si ve el primer ejemplo #1
El comando:
ip nat outside source static 10.0.0.100 192.168.0.100
traduce la 10.0.0.100 a la 192.168.0.100 , por lo que el cliente debe llamar a la 192.168.0.100 para contactar con la web del servidor y no con la 10.0.0.100.
Otro tipo particular de nat es el ip nat inside destination que se utiliza cuando varios dispositivos internos son servidores idénticos con contenido reflejado, que desde el exterior parecen ser un único servidor de equilibrio de carga.
Se define un pool de direcciones que contiene las direcciones de los hosts reales que terminan en «type rotary» haciendo que los servidores estén disponibles en modo round-robin. La lista de acceso permite ahora la dirección IP del host virtual, es decir, lo que el mundo exterior piensa que es la dirección del host. Así que el host virtual es 123.123.123.132, con los hosts reales siendo 172.16.0.2 a 10.
Configuración parcial
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
Esta traducción no es bidireccional por naturaleza. Tendrás que usar un NAT estático uno a uno para lograrlo. Un tipo de funcionalidad «ip nat inside source static» se puede lograr con la configuración anterior utilizando una sola dirección en el grupo de NAT, pero eso sólo funcionaría para el tráfico de fuera a dentro.
¿Dónde aplicar nat inside/outside?
Típicamente se configura «ip nat inside» en las interfaces de su entorno local que no pueden ser enrutadas a Internet (típicamente rango privado de direcciones IP) y «ip nat outside» en la interfaz que está conectada a Internet.
¿Cuándo realiza NAT el router?
De dentro a fuera:
- Si es IPSec entonces comprueba la lista de acceso de entrada
- desencriptación – para CET (Cisco Encryption Technology) o IPSec
- comprueba la lista de acceso de entrada
- comprueba los límites de velocidad de entrada
- contabilidad de entrada
- redirigir a la caché web
- enrutamiento de políticas
- enrutamiento
- NAT interior a exterior (traducción local a global)
- crypto (comprobar mapa y marcar para encriptación)
- comprobar lista de acceso de salida
- inspeccionar (Context-based Access Control (CBAC))
- TCP intercept
- encryption
- Queueing
Outside to Inside:
- Si es IPSec entonces comprueba la lista de acceso de entrada
- desencriptación – para CET o IPSec
- comprueba la lista de acceso de entrada
- comprueba los límites de velocidad de entrada
- contabilidad de entrada
- redirigir a la caché web
- NAT outside to inside (global to local traducción)
- política de enrutamiento
- enrutamiento
- crypto (comprobar mapa y marcar para encriptación)
- comprobar lista de acceso de salida
- inspeccionar CBAC
- Interceptación TCP
- encriptación
- Queueing
Algunos comandos útiles:
- Para ver algunas estadísticas sobre NAT: show ip nat statistics
- Para ver una lista completa de las entradas NAT/PAT estáticas/dinámicas: show ip nat translations
- Para borrar la entrada nat dinámica: clear ip na translation *
- Para depurar NAT: debug ip nat