La traducción de direcciones de red (NAT) es un método de direccionamiento que reasigna los espacios de direcciones IP reescribiendo las cabeceras de los paquetes a medida que el tráfico pasa por routers o cortafuegos, lo que permite que múltiples hosts privados compartan direcciones IPv4 públicas y se conserve el limitado espacio IPv4. El NAT opera en la capa 3 (y en la capa 4 para la traducción de puertos) mediante el mantenimiento de tablas de traducción que asignan direcciones y puertos internos a los externos, siendo la traducción de direcciones de puerto (PAT) la forma más común, lo que permite que miles de hosts compartan una única dirección pública. Aunque el NAT resolvió el agotamiento de las direcciones IPv4 y proporciona un filtrado incidental de las conexiones, plantea retos operativos como la gestión de estados, la pérdida de atribución de origen, las incompatibilidades de protocolos y la complejidad en redes fusionadas, si bien el espacio de direcciones de IPv6, mucho más amplio, elimina el principal motivo para la adopción del NAT.
Cómo funciona el NAT
Un dispositivo NAT se sitúa entre dos ámbitos de direcciones, normalmente una red interna privada e Internet pública. Mantiene una tabla de traducción que asigna las conexiones internas a direcciones y puertos externos.
- Llega un paquete saliente: un host interno envía un paquete a un destino externo. El paquete llega al dispositivo NAT con la dirección de origen privada del host y el puerto de origen.
- Entrada de traducción creada: El dispositivo selecciona una dirección pública y, en la traducción de direcciones de puerto, un puerto de origen. Registra la correspondencia entre la dirección y el puerto internos y la dirección y el puerto externos en su tabla de traducción.
- Reescritura de la cabecera: el dispositivo sustituye la dirección de origen y el puerto en la cabecera del paquete y vuelve a calcular las sumas de comprobación. A continuación, reenvía el paquete hacia el destino.
- Respuesta traducida: El servidor externo responde a la dirección pública y al puerto. El dispositivo busca la entrada, restaura el destino interno original y reenvía el paquete al host.
- Caducidad de la entrada: cuando la conexión se cierra o permanece inactiva más allá de un tiempo de espera, el dispositivo elimina la entrada de la tabla y puede reutilizar el puerto.
La traducción de direcciones de puerto, también denominada «sobrecarga NAT», es la forma más habitual y permite que miles de hosts internos compartan una única dirección pública. El NAT estático asigna una dirección interna a una dirección externa, lo que resulta adecuado para el acceso entrante a los servidores. El tráfico entrante no solicitado no tiene ninguna entrada en la tabla, por lo que se descarta a menos que exista una asignación estática o un reenvío de puertos. Algunos protocolos incorporan direcciones en sus cargas útiles y necesitan un asistente en la capa de aplicación para funcionar a través del NAT.
Problemas habituales con el NAT
Una única dirección pública dispone de un conjunto limitado de puertos de origen, por lo que un cliente o un proxy muy activo puede agotarlos todos. En ese caso, las nuevas conexiones fallan o se bloquean de forma intermitente, a menudo durante los picos de carga, mientras que las sesiones existentes siguen funcionando.
Los protocolos que transportan direcciones IP o puertos dentro de la carga útil pueden fallar cuando solo se reescriben las cabeceras. Algunas sesiones de voz, vídeo y transferencia de archivos se conectan, pero no transportan medios ni datos a menos que el dispositivo NAT cuente con un asistente a nivel de aplicación o que los extremos utilicen técnicas de traversal.
Los registros de cara a Internet solo muestran la dirección traducida, por lo que muchos usuarios aparecen como uno solo. Los investigadores no pueden rastrear un evento hasta un host a menos que se mantengan y se correlacionen los registros de traducción con marcas de tiempo y puertos.
Los clientes internos que acceden a un servidor a través de su dirección pública pueden experimentar fallos cuando el dispositivo NAT no puede redirigir el tráfico hacia el interior. Los síntomas son que los servicios funcionan desde Internet pero se agota el tiempo de espera desde la red interna, y una solución habitual es el DNS de horizonte dividido.
La fusión de redes que utilizan el mismo rango privado, a menudo tras una adquisición, provoca conflictos de enrutamiento. Los equipos añaden un doble NAT o traducción entre los ámbitos, lo que complica la resolución de problemas y los registros DNS.