Hoy vamos a hablar de la famosa NAT, es una función de la capa de red muy importante y que en más de una ocasión nos ha producido dolores de cabeza, sobre todo a los gamers.
NAT se creó para «parchear» la falta de direcciones IP que proporciona IPv4 (como ya vimos anteriormente). Si en nuestros hogares, SOHO (redes pequeñas de oficina) o en las universidades no existiera la NAT, el ISP tendría que asignar una dirección IP pública a cada dispositivo conectado. Podemos imaginar la cantidad de direcciones IP que necesitaríamos.
Para solucionar este problema se inventó la NAT (traducción de direcciones de red) y está integrada en todos los routers domésticos que tenemos hoy en día.
Los routers de casa tiene dos interfaces, la WAN que proporciona una dirección IP pública, y la LAN que proporciona un rango de direcciones IPs privada, normalmente son de clase C (192.168.X.X) ya que no necesitamos miles de direcciones IP privadas.
Para establecer contacto dentro de la LAN usa el direccionamiento de la propia LAN (192.168.1.1/24) sin necesidad de pasar a la WAN. Sin embargo, si queremos establecer conexión fuera de la red no podremos usar estas direcciones de la LAN, sino la WAN…y para ello hay que pasar por la NAT del router.
Para un dispositivo de internet, el router con NAT tiene una dirección IP pública y desconoce si en la LAN hay o no equipos conectados.
A continuación os explicamos cómo funciona la NAT de un router con un pequeño ejemplo, vamos a proceder a hacer un GET a una web, es decir, cargar una página web normal por el puerto 80.
Imaginemos los siguientes datos:
IP Privada de nuestro ordenador: 192.168.1.2
IP Pública de nuestro equipo: 87.4.4.4
IP Pública del servidor web: 87.5.5.5
Puerto del servidor web: 80
Nuestro equipo 192.168.1.2 hace el GET a la página web con IP 87.5.5.5 y puerto 80. El equipo 192.168.1.2 asigna un puerto origen aleatorio (8888), crea un datagrama con los datos y lo envía al router. La NAT del router recibe la información, y sustituye la IP 192.168.1.2 por 87.4.4.4 y el puerto 8888 por el 9999 (aleatorio).
El router podrá seleccionar cualquier puerto mientras que no esté en la tabla de traducciones NAT. Podremos realizar un máximo de 2^16 conexiones.
La tabla de traducciones NAT de este ejemplo sería la siguiente:
WAN: 87.4.4.4:9999
LAN: 192.168.1.2:8888
Ahora procedemos a hacer el GET a la web por la IP y el puerto correspondiente, y el servidor WEB enviará los datos a la IP 87.4.4.4 y por el puerto 9999. La NAT reenviará estos datos al ordenador correspondiente por el puerto correspondiente (192.168.1.2:8888).
Normalmente los puertos se emplean para direccionar procesos, pero no para direccionar los HOST, por lo que la NAT no está muy bien vista por muchos expertos en redes.
Un problema que tiene esta función de los routers es a la hora de usar aplicaciones P2P o juegos ONLINE si no tenemos hemos abierto los puertos adecuadamente hacia una dirección IP determinada. ¿Por qué ocurre esto? Porque desde el exterior no se puede acceder a un equipo de la red interna si éste no ha iniciado primero la conexión, a menos que hayamos redirigido los puertos usados por la aplicación.
¿Entonces por qué Teamviewer o Skype funciona bien sin abrir puertos?
Porque usan lo denominado NAT transversal, usan un equipo auxiliar para conectar ambos equipos y así «saltarse» la NAT de ambos participantes.
Hasta aquí hemos llegado con este artículo, os esperamos en los siguientes !!
Os dejamos otro artículo donde hablamos de NAT.