NAT: la traducción de direcciones de red en el router
Desde junio de 2012, la sexta versión del protocolo de Internet, es decir, IPv6, constituye una solución para la creciente escasez de direcciones IP. Sin embargo, el cambio al nuevo estándar de Internet se desarrolla con lentitud. Según una estadística de Google, en octubre de 2016 más del 85 por ciento de los usuarios de Internet de todo el mundo todavía seguía utilizando el estándar de Internet IPv4. Sin embargo, su capacidad, limitada a alrededor de 4,3 mil millones de direcciones, ya no es suficiente para hacer frente al sinnúmero de dispositivos con acceso a Internet con direcciones IP unívocas. En este sentido, los ordenadores, las tablets o los smartphones no son los únicos dispositivos que requieren acceso al mundo online. En el marco del Internet de las cosas (Internet of Things, IoT), los frigoríficos, las básculas de baño o las cafeteras se convertirán en dispositivos de red inteligentes. Desde principios de los 90, el protocolo IPv4 compensa el problema de la escasez de direcciones valiéndose de una clara delimitación entre el espacio de direcciones privado y el público. En las redes locales (LAN), los terminales con capacidad de acceso a Internet reciben direcciones IP locales privadas y están vinculadas a Internet por medio de una dirección IP pública común. El router es la interfaz central entre el rango de direcciones público y el privado y aquí es donde entra en juego la Network Address Translation, más conocida como NAT.
¿Qué significa NAT?
El acrónimo NAT hace referencia a la Network Address Translation, es decir, a la traducción de direcciones entre dos redes que, por lo general, tiene lugar en el entorno del router. El objetivo de este procedimiento es vincular redes locales con Internet y, en este sentido, se puede establecer una diferenciación entre dos tipos de traducción de redes diferentes: Source NAT (SNAT) y Destination NAT (DNAT).
Source NAT
En la mayoría de los casos, los usuarios privados entran en contacto con la traducción de direcciones en forma de source NAT (en español, NAT de origen). Dicho proceso es aplicable tanto en redes domésticas como corporativas, cuando un dispositivo de red con una dirección IPv4 privada tiene que acceder a Internet a través de una IP pública. Sin embargo, en el lenguaje común, el término NAT no siempre se utiliza con exactitud.
Desambiguación: NAT vs. PAT
En general, conviene distinguir si se asigna una dirección IP propia a cada dirección IP privada en una red local (traducción 1:1) o si todos los dispositivos de red comparten la misma dirección IP (traducción n:1).
Estrictamente hablando, la única traducción 1:1 es la Network Address Translation, ya que, en este caso, solo se traducen las direcciones de red. Por el contrario, la traducción n:1 requiere la adaptación de los números de puerto. A este procedimiento se le designa, tras ello, con el nombre de PAT (Port and Address Translation) o NAPT (Network Address Port Translation).
Puesto que el concepto PAT representa el estándar en las redes domésticas y de oficina basadas en el protocolo IPv4, este procedimiento es conocido en el lenguaje común como NAT. En el marco de los conceptos de PAT también se utilizan términos habituales, como pueden ser router NAT o tabla de NAT. Sin embargo, al hablar de NAT, hoy en día se suele hacer referencia más bien a PAT o NAPT.
Funcionamiento de la Port Address Translation (PAT)
En general, la traducción de las direcciones de red se aplica en forma de PAT (traducción de la dirección del puerto) para conectar varios dispositivos locales a Internet por medio de una dirección IP común.
Debido al hecho de que las direcciones IP privadas no son enrutables, y por lo tanto carecen de importancia en Internet, el router debe proveer de una dirección IP pública a los paquetes de datos que un ordenador (cliente) envía en la red local (LAN) a un servidor en Internet. Para ello, el router cambia la dirección IP privada del cliente en el header del paquete de datos por su propia IP pública. Además, el número de puerto usado de manera interna será reemplazado por uno de los puertos abiertos del router, el cual actúa frente a los servidores en Internet como remitente de todos los paquetes de datos que se envían desde la red local.
Todos los datos de conexión (direcciones IP, puertos y desconexiones) se guardan en la llamada tabla de NAT (en sentido estricto, también se podría hablar aquí de una tabla de PAT). Si el servidor al que van dirigidos responde a la petición del ordenador local con un paquete de datos, este será enviado de vuelta al puerto correspondiente del router, cuya tarea es distribuir el paquete de datos entrante al dispositivo de red que haya hecho la petición. Todo lo que el router necesita para ello son los datos incluidos en la tabla de NAT. Para arrojar más luz a lo anteriormente expuesto, veamos el siguiente ejemplo:
Partimos de la base de que un proveedor de servicios de Internet (ISP) le ha asignado a un router la dirección IP pública 217.229.111.18 y este opera como puerta de enlace estándar para una red local, la cual pone el rango privado de direcciones IP 192.168.0.0/24 a disposición de los dispositivos de red (todas las direcciones desde la 192.168.0.0 a la 192.168.0.24). Si uno de dichos terminales (por ejemplo, un ordenador con la IP privada 192.168.0.2) quiere establecer una conexión con Internet (por ejemplo, para un servidor web con la IP pública 71.123.239.82 en su puerto número 80), este reserva un puerto interno (por ejemplo, el 22433) y transmite la petición de establecimiento de la conexión al router que actúa como puerta de enlace estándar, al cual se puede acceder por medio de la dirección IP privada 192.168.0.1 y el cual se comunica hacia el exterior con la dirección IP pública 217.229.111.18.
El router recibe, por consiguiente, los siguientes datos: el terminal 192.168.0.2 quiere crear en el puerto 22433 una conexión para 71.123.239.82 en el puerto 80. Para cumplir este deseo, el router debe sustituir la dirección de origen del terminal conectado a la red LAN (dirección IP y número de puerto) por la propia dirección del remitente. Para ello, reserva cualquier puerto que esté libre (p. ej., 61001) e inicia la traducción de direcciones de red: la IP 192.168.0.2:22433 dará lugar a la dirección 217.229.111.18: 61001. Todos los datos relevantes se depositarán en la tabla de NAT del router.
IP privada del cliente | Puerto del cliente | IP pública del router | Puerto público del router |
---|---|---|---|
192.168.0.2 | 22433 | 217.229.111.18 | 61001 |
Una vez se reciba la petición en el servidor web, esta se procesará y, si es posible, se le responderá con el paquete de datos solicitado, por ejemplo con los datos de una página web. Esta respuesta llega al router, el cual la transmitirá con ayuda de los datos de conexión almacenados: según la tabla de NAT, el puerto externo 61001 está reservado para los paquetes de respuesta que se envían al puerto 22433 del dispositivo de red 192.168.0.2.
Además de direcciones IP y números de puerto, los routers también anotan un marcador de tiempo en la tabla de NAT para cada conexión. Este funciona como timeout y establece cuándo se tiene que eliminar la entrada correspondiente. De esta manera, se garantiza que los puertos no se queden abiertos de forma permanente en caso de inactividad y que, en la medida de lo posible, no se conviertan en puertas de entrada para ataques informáticos.
Destination NAT
Mientras que la Source NAT permite establecer la conexión con Internet a partir de la LAN, la Destination NAT se emplea para hacer que las conexiones entrantes puedan acceder a un dispositivo local por medio de Internet de manera permanente. Para ello, la configuración del router permitirá vincular un puerto público con la dirección IP de un dispositivo de red local de manera permanente. Todos los paquetes de datos que llegan al puerto correspondiente serán transmitidos automáticamente a la dirección local de destino, por lo que en este caso se puede hablar de port forwarding o redirección de puertos. Este método se utiliza, por ejemplo, cuando hay determinados servicios del servidor que proceden de la red LAN y que se tienen que poner a disposición en Internet. Los puertos abiertos, sin embargo, constituyen un riesgo para la seguridad, por lo que a este respecto se recomienda proteger la red local del tráfico de datos procedente de Internet, mientras que los dispositivos direccionables por medio del port forwarding quedarán aislados en las zonas desmilitarizadas (DMZ).
NAT: ¿garantía o brecha de seguridad?
En ocasiones, la traducción de direcciones de red en el router es, como elemento de seguridad, objeto de debate a causa de la estricta separación que existe entre redes LAN e Internet. La supuesta función de protección no es más que un efecto secundario. En este sentido, tanto la Network Address Translation como la Port Address Translation se desarrollan para contrarrestar la escasez de direcciones IPv4, pero puede que las funciones de un firewall o de un filtro de paquetes hagan que el método no esté disponible.
A pesar de todo, tanto la NAT como la PAT ofrecen a los usuarios en redes privadas cierto grado de privacidad. Puesto que todos los terminales locales de una red LAN con el protocolo IPv4 visitan Internet con la misma dirección IP pública, los usuarios pueden navegar de un modo más o menos anónimo. El único host existente tras el router de red no es directamente direccionable por Internet, es decir, que para ello se configurará el denominado port forwarding. En el caso de los observadores externos, todas las solicitudes parten, al parecer, de la red LAN del router.
Adicionalmente, el procedimiento lleva integrada una función de protección que se ocupa de que todos los intentos de conexión que se inicien de manera externa sean rechazados de manera automática mientras que esto no se cancele por medio del desbloqueo de los puertos. Solo se aceptarán paquetes de respuesta de Internet en caso de que se esperen recibir las respuestas del servidor en un determinado puerto del router. En el marco tanto de NAT como de PAT no se comprobará cuál es el servidor web que responde y si se abre un puerto de router con referencia al establecimiento interno de una conexión, este representará una brecha de seguridad. Por ello, se recomienda implementar mecanismos de seguridad adicionales, tales como firewalls y filtros de paquetes.
Asimismo, las debilidades de la traducción de direcciones de red vía NAT o PAT también son discutidas. Estas se derivan principalmente de la estricta diferenciación entre espacios de direcciones privados y públicos, lo que pone de manifiesto una fractura en el principio del diseño de Internet denominado “End to End” (E2E), lo que puede convertirse en un problema para la Network Address Translation en el caso de las aplicaciones de Internet que se conciben tomando como base dicho principio de diseño.
Los protocolos como FTP se basan en la suposición de que los hosts de Internet se comunican directamente entre sí sin que un nodo intermedio modifique las direcciones IP o los números de puerto. Las redes IPv4 que se sustentan en la Network Address Translation solo pueden, por tanto, utilizarse con ayuda de técnicas de desvío y cada mecanismo adicional necesario hace aumentar la complejidad y el porcentaje de errores de un sistema informático. La consecuente aplicación del principio E2E es, por lo tanto, un objetivo del diseño central del nuevo estándar IPv6.
IPv6: ¿el final de la NAT?
La sexta versión del protocolo de Internet ha multiplicado el número de direcciones IP a las que se puede acceder a nivel mundial. En lugar de 4,3 mil millones de direcciones IPv4, con la nueva versión del protocolo se puede tener acceso hoy en día a, en teoría, unos 340 sextillones de direcciones IPv6 para vincular a los dispositivos de red con Internet. Dicho de otro modo, cada cafetera recibe una dirección IP única y enrutable a nivel mundial. La traducción de direcciones de red por medio de la Network Address Translation resulta, en general, algo redundante, pero puede ponerse en práctica en redes con el protocolo IPv6 para proteger el rango privado de direcciones de la red pública.