El agotamiento del espacio de direcciones IPv4 por la expansión de Internet ha provocado la adopción de diferentes técnicas para un mejor reparto de las direcciones. En un primer momento se introdujeron las CIDR para evitar que las direcciones se asignaran por clases y, así, poder ajustar más la concesión de IPs al tamaño de la red solicitada.
Otra técnica que se implantó fue NAT. El uso más habitual de la traducción de direcciones de red (NAT, Network Address Translation) es compartir una IP pública para muchos dispositivos, para ello, se traducen las IPs privadas por una IP pública.
La ventaja de las IPs privadas es que cualquiera puede utilizar estos rangos, la desventaja es que no se pueden usar en internet porque están reservadas para uso privado. Las IPs públicas, en cambio, pueden ser usadas en internet pero el inconveniente es que al ser únicas en el mundo deben ser asignadas por el organismo competente y esto tiene un coste.
Un uso más frecuente de la técnica NAT lo encontramos en nuestros routers caseros, estos reciben una única IP pública del proveedor de internet y, usando NAT consiguen compartir esta IP pública para que la usen todos los dispositivos de nuestra red privada.
¿Cómo funciona en un router DSL-fibra la NAT?
Muchos de nosotros tenemos las IPs típicas en casa IP 192.168.0….. Por tanto, es imposible que cuando solicitemos una página web desde una IP privada a un servidor web este sepa a quien responder de entre todos nosotros. Con NAT, cuando solicitamos la página web desde nuestro equipo con IP privada, al atravesar esta petición nuestro router, se sustituye nuestra IP privada por la IP pública que nos facilita nuestro proveedor de internet (ISP) y se envía la petición al exterior (internet). Así el servidor web sabrá a quien responder porque la petición le llega de una IP única en el mundo (nuestra IP pública).
Si tenemos varios equipos y todos quieren visitar la misma página web el router construye una tabla (tabla NAT) donde anota todas las salidas al exterior de forma que cuando llega la respuesta busca en esta tabla y envía la respuesta al equipo que solicito la web. Supongamos el siguiente ejemplo:
En una pequeña red local hay dos PC, el primero tiene abierto 2 navegadores (que usan los puertos 11111 y 22222) visitando respectivamente las web 11.11.11.11 y 22.22.22.22, el segundo PC solo tiene abierto un navegador (que usa el puerto 22222) visitando la web 22.22.22.22. El router DSL tiene la IP privada 192.168.0.1 en su interfaz LAN y la IP pública 33.33.33.33 en su interfaz WAN.
Las traducciones de direcciones realizadas por nuestro router DSL podrían ser similares a las siguientes:
Paquetes llegados al router de la LAN |
Paquetes enviados por el router al exterior |
||||||
IP origen |
Puerto origen |
IP destino |
Puerto destino |
IP origen |
Puerto origen |
IP destino |
Puerto destino |
192.168.0.11 |
11111 |
11.11.11.11 |
80 |
33.33.33.33 |
11111 |
11.11.11.11 |
80 |
192.168.0.11 |
22222 |
22.22.22.22 |
80 |
33.33.33.33 |
22222 |
22.22.22.22 |
80 |
192.168.0.12 |
22222 |
22.22.22.22 |
80 |
33.33.33.33 |
22223 |
22.22.22.22 |
80 |
Cuando el PC1 quiere visitar la página 11.11.11.11 envía una solicitud a nuestro router, este elimina la IP privada y la sustituye por la pública, además anota que el puerto que hace la petición es el 11111, cuando llegue una respuesta a nuestra IP pública con destino el puerto 11111 nuestro router sabrá que la petición es para el navegador 1 del PC 1 y se la enviará a este haciendo el cambio contrario, es decir, quitando la IP 33.33.33.33 como destino y poniendo la IP privada.
Pero como el PC1 hay 2 aplicaciones abiertas hay, por tanto, dos puertos en uso. Cuando el navegador 2 visita la web 22.22.22.22 se produce el mismo proceso, el router sustituye la IP privada por la IP pública y envía al exterior la solicitud, cuando llega la respuesta busca en su tabla NAT y hace el cambio inverso.
En el PC 2 hay un navegador abierto usando el puerto 22222, cuando solicita una web, el router sustituye la IP privada por la IP pública, pero en este caso, la combinación IP pública + 22222 ya está asociada en la tabla al navegador 2 del PC1, por tanto el router tiene que buscar un puerto libre (supongamos 22223) y en esta ocasión debe cambiar la IP y el puerto privados por una combinación pública que no esté en uso en la tabla NAT (es decir, se ha traducido dirección y puerto privados por dirección y puertos públicos).