¿Qué es NAT?
Dentro de la interminable lista de términos de telecomunicaciones, NAT es uno de los más recurrentes. NAT (Network Address Translation) es un mecanismo crucial en Internet para abordar la escasez de direcciones IPv4 públicas, junto con CIDR (Classless Interdomain Routing) y VLSM (Variable Length Subnet Mask). Con la disminución de direcciones IPv4 públicas, la implementación de IPv6 se vuelve esencial. Sin embargo, muchas organizaciones aún dependen de IPv4 y sus limitaciones, donde NAT juega un papel fundamental.
Funcionalidad de NAT
En resumen, NAT permite conectar una o más redes LAN internas a Internet usando una sola IP pública (o un grupo de ellas). NAT ofrece dos funcionalidades clave: ahorro de direcciones públicas (y costos) y seguridad.
Las redes utilizan direccionamiento IP privado, lo que significa que las máquinas con estas direcciones no son accesibles directamente desde Internet. Estas direcciones IP no son enrutables públicamente.
Rangos de Direcciones IP Privadas (RFC 1928):
- 10.0.0.0/8 (10.0.0.0 – 10.255.255.255)
- 172.16.0.0/12 (172.16.0.0 – 172.31.255.255)
- 192.168.0.0/16 (192.168.0.0 – 192.168.255.255)
Las direcciones IP fuera de estos rangos y otros especiales (APIPA, Loopback, Clase E, Clase D, etc.) son públicas.
Ejemplo de Red con NAT
En este ejemplo, la LAN usa el bloque 192.168.0.0/24, y el ISP asignó la IP pública 200.1.1.1/29 al router en su puerta WAN. NAT permite que todos los PCs accedan a Internet a través de la IP 200.1.1.1, evitando la necesidad de una IP pública para cada PC.
Tipos de NAT
A continuación, se describen cuatro tipos básicos de NAT:
1. NAT Dinámico
Este método asigna dinámicamente una IP pública de un bloque a cada máquina de la LAN para acceder a Internet. Se crea un mapeo 1:1 entre IP internas y externas. Si se definen tres IP públicas, solo tres máquinas internas podrán conectarse. Esta asociación es dinámica.
Router(config)# ip nat pool RANGOPUBLICO 200.1.1.2 200.1.1.4 netmask 255.255.255.248
Router(config)# access-list 1 permit 192.168.0.0 0.0.0.255
Router(config)# ip nat inside source list 1 pool RANGOPUBLICO
Router(config)# interface FastEthernet0/0
Router(config-if)# ip nat inside
Router(config-if)# exit
Router(config)# interface FastEthernet0/1
Router(config-if)# ip nat outside
El comando ip nat pool
crea el rango de IP públicas y lo asocia a un nombre (RANGOPUBLICO). La ACL selecciona las IP de la LAN a traducir. Los comandos ip nat inside
y ip nat outside
definen las interfaces internas y externas, respectivamente. Este orden es crucial para el funcionamiento de NAT.
La desventaja del NAT dinámico es la necesidad de una IP pública por cada PC, lo que lo hace costoso en entornos grandes.
2. NAT Estático
Este método asocia estáticamente una IP pública a una IP privada. Es ideal para acceder desde Internet a un servidor en una DMZ o LAN. En el ejemplo, el servidor web (192.168.0.10) se asocia a la IP pública 200.1.1.5/29.
Router(config)# ip nat inside source static 192.168.0.10 200.1.1.5
Router(config)# interface FastEthernet0/0
Router(config-if)# ip nat inside
Router(config-if)# exit
Router(config)# interface FastEthernet0/1
Router(config-if)# ip nat outside
El comando ip nat inside source static
realiza el mapeo. Se declaran las interfaces inside y outside.
3. PAT (Port Address Translation) o Sobrecarga
PAT, también conocido como Sobrecarga o Overload, asocia dinámicamente las conexiones de la LAN a una única IP pública, identificando cada sesión con un puerto. En el ejemplo, las máquinas de la LAN (192.168.0.0/24) salen a Internet a través de 200.1.1.1.
Router(config)# access-list 1 permit 192.168.0.0 0.0.0.255
Router(config)# ip nat inside source list 1 interface f0/1 overload
Router(config)# interface FastEthernet0/0
Router(config-if)# ip nat inside
Router(config-if)# exit
Router(config)# interface FastEthernet0/1
Router(config-if)# ip nat outside
El comando ip nat inside source list ... overload
activa PAT. El router mapea dinámicamente cada sesión con un puerto de la IP pública.
4. PAT con Múltiples IP
PAT tiene una limitación: el número de puertos disponibles (65536). En redes grandes con muchas conexiones simultáneas, PAT puede saturarse. Para solucionar esto, se pueden usar múltiples IP públicas para la sobrecarga, aumentando la cantidad de sesiones simultáneas.
Se repitió la sección «4. PAT con múltiples IP» varias veces en el documento original. Se ha corregido eliminando las secciones repetidas y unificando la información.
Router(config)# ip nat pool RANGO_PAT_PUBLICO 200.1.1.1 200.1.1.4 netmask 255.255.255.248
Router(config)# access-list 1 permit 192.168.0.0 0.0.0.255
Router(config)# ip nat inside source list 1 pool RANGO_PAT_PUBLICO overload
Router(config)# interface FastEthernet0/0
Router(config-if)# ip nat inside
Router(config-if)# exit
Router(config)# interface FastEthernet0/1
Router(config-if)# ip nat outside
El comando ip nat inside source list ... pool ... overload
asocia la ACL al pool de IP públicas para la sobrecarga.
Terminología de NAT
- Inside Local: IP privada interna de un PC en la LAN.
- Inside Global: IP pública usada para traducir las IP privadas (IP WAN del router y las de los rangos públicos).
- Outside Local: IP de un host en la red externa (Internet) como se ve desde la LAN interna.
- Outside Global: IP pública de un host de destino en la red externa.
Rutas por Defecto en NAT
Todas las implementaciones de NAT funcionan con una ruta por defecto:
ip route 0.0.0.0 0.0.0.0 interfaz de salida o IP siguiente salto
Comandos Útiles
show ip nat translation
show ip nat static
debug ip nat
Deshabilitar NAT
- Desactivar interfaces inside y outside:
Router(config)# interface FastEthernet0/0
Router(config-if)# no ip nat inside
Router(config-if)# exit
Router(config)# interface FastEthernet0/1
Router(config-if)# no ip nat outside - Limpiar tabla de traducciones:
Router# clear ip nat translations
- Eliminar comandos NAT y ACL:
Router(config)# no ip nat pool RANGO_PAT_PUBLICO 200.1.1.1 200.1.1.4 netmask 255.255.255.248
Router(config)# no access-list 1 permit 192.168.0.0 0.0.0.255
Router(config)# no ip nat inside source list 1 pool RANGO_PAT_PUBLICO overload