KELA Presentacion Costa Rica 2024 - evento Protégeles
N a t
1.
2. NAT fue introducido en la década de los 90 como una
solución a corto plazo al corto espacio de
direccionamiento y de forma complementaria a la
tecnología CIDR (Classless InterDomain Routing).
Para saber de dónde surgió la idea del NAT tengo que
introducir algunas tecnologías que han sido puestas
con el fin de solventar el gran problema de la escasez
de direcciones IP y el gran tamaño de las tablas de
routing. Tres soluciones a tener en cuenta son
CIDR, las direcciones IP privadas y NAT.
3. ¿EN QUE CONSISTE EL PROTOCOLO NAT?
Consiste en convertir en tiempo real las
direcciones utilizadas en los paquetes
transportados. También es necesario editar los
paquetes para permitir la operación de protocolos
que incluyen información de direcciones dentro de
la conversación del protocolo.
4. (Network Address Translation - Traducción de
Dirección de Red) es un mecanismo utilizado
por enrutadores IP para intercambiar paquetes
entre dos redes que se asignan
mutuamente direcciones incompatibles.
5. Su uso más común es permitir utilizar direcciones
privadas para acceder a Internet. Existen rangos
de direcciones privadas que pueden usarse
libremente y en la cantidad que se quiera dentro de
una red privada. Si el número de direcciones
privadas es muy grande puede usarse solo una
parte de direcciones públicas para salir a Internet
desde la red privada
6. . De esta manera simultáneamente sólo pueden
salir a Internet con una dirección IP tantos equipos
como direcciones públicas se hayan contratado.
Esto es necesario debido al progresivo agotamiento
de las direcciones IPv4.
El protocolo TCP/IP tiene la capacidad de generar
varias conexiones simultáneas con un dispositivo
remoto. Para realizar esto, dentro de la cabecera de
un paquete IP, existen campos en los que se indica
la dirección origen y destino. Esta combinación de
números define una única conexión.
7. Una pasarela NAT cambia la dirección origen en
cada paquete de salida y, dependiendo del método,
también el puerto origen para que sea único. Estas
traducciones de dirección se almacenan en una
tabla, para recordar qué dirección y puerto le
corresponde a cada dispositivo cliente y así saber
donde deben regresar los paquetes de respuesta.
8. Si un paquete que intenta ingresar a la red interna
no existe en la tabla de en un determinado puerto y
dirección se pueda acceder a un determinado
dispositivo, como por ejemplo un servidor web, lo
que se denomina NAT inverso o DNAT .
9. Otra forma de hacer NAT es teniendo una
dirección oficial IP (pública) y usar esta dirección
para todas las comunicaciones. Para permitir a más
de un host comunicarse a la vez con la misma IP
tenemos que usar puertos TCP a nivel de
transporte diferentes para cada conexión. El
número de conexiones simultáneas está limitado
sólo por el número de puertos disponibles para las
conexiones salientes.
10. 3. Técnicas de NAT
La traducción de direcciones se puede hacer de
forma estática o dinámica. Si se opta de forma
estática, la asignación de NAT-IPs se realiza de
forma no ambigua, en cambio esto no sucede de
forma dinámica.
En NAT estático un IP local siempre es traducida a
la misma NAT-IP y ninguna otra IP local es
traducida a la misma NAT-IP, mientras que NAT
dinámico la dirección NAT-IP depende de varias
condiciones según el momento de la asignación y
puede ser completamente distinta para cada
conexión.
11. Para explicar la asignación de direcciones
dinámicas y estáticas haré referencia a dos
variables:
número de IPs que necesitan ser traducidas (IPs
originales o locales)
número de IPs disponibles para la traducción
(NAT-IPs o globales)
12. Estáticas:
En traducciones estáticas podemos traducir entre
redes IP que tienen el mismo tamaño (contienen el
mismo número de IPs). Un caso especial es cuando
ambas redes contienen sólo una IP, por ejemplo la
máscara 255.255.255.255.
13. Además, no es necesario mantener ninguna
información sobre el estado de las conexiones que
van a ser traducidas, observando cada uno de los
paquetes IP es suficiente. Las conexiones que
vengan del exterior no representan ningún
problema, sólo que la IP es diferente a la que
tenemos dentro de la red. Por lo tanto se puede
decir que NAT estático es completamente
transparente.
14. 3.2. Dinámicas
Para la traducción dinámica de direcciones es
necesario que el número de IPs a traducir no sea
igual al número de IPs que pueden ser traducidas.
Podrían ser iguales, pero que por algún motivo no
se quiera realizar un mapeo estático. El número de
hosts comunicados esta limitado normalmente por
el número de NAT IPs disponibles
15. . Si todas las NAT IPs están siendo usadas entonces
no se puede aceptar más conexiones para ser
traducidas, estas serán rechazadas por el router
NAT (host inalcanzable). El NAT dinámico es
mucho más complejo que el estático ya que nos
obliga a mantener un seguimiento de los hosts que
se comunican e incluso en ocasiones controlar
conexiones que requieren mirar la parte de
información TCP de los paquetes.
16. Para el caso en que tenemos suficientes NAT IPs
también puede ser útil hacer un NAT dinámico, de
forma, que se use como una medida de
seguridad, ya que es imposible que alguien del
exterior de la red pueda conseguir una dirección IP
útil viendo las conexiones que van surgiendo, ya
que desde la última vez que se conecto un
host, puede haber cambiado su IP.
Conexiones desde fuera son sólo posibles cuando
el host que debe ser alcanzado todavía tiene una
NAT-IP asignada, es decir, que aún tiene una
entrada en la tabla dinámica del router NAT.
17. Ejemplo:
Podemos decir el router NAT que traduzca todas
las IPs en una red de clase B 147.156.0.0 a IPs de
una clase C con máscara 255.255.255.0
A cada conexión de dentro a fuera se le asigna una
dirección IP del montón de direcciones de clase
C, siempre que no estén siendo utilizadas y hayan
disponibles.
Si se le mapea una dirección el host puede ser
alcanzado por medio de la vía IP que le ha sido
asignada de forma temporal.
18. 3.3. NAPT (Network Address Port Translation)
Es un caso especial de NAT dinámico y es muy
utilizado hoy en día. Este routing es capaz de
hacerlo Linux, Windows 2000 y los routers-hub
ADSL que hoy en día instala telefónica. Aquí
muchas direcciones IP están escondidas detrás de
una única IP global.
19. Esto no significa que sólo pueda haber una
conexión a la vez. En NAPT un número arbitrario
de conexiones es multiplexado usando
información del puerto TCP o UDP. El número de
conexiones simultáneas están limitadas por el
número de puertos TCP o UDP disponibles.
20. El problema que tiene está técnica es que algunos
servicios en ciertos hosts sólo aceptan conexiones
que vengan por unos puertos determinados. Esto
hace que algunos programas no pueden ser usados
con NAPT. En implementaciones Linux NAPT
recibe el nombre de masquerade y no usa puertos
determinados por el uso de otras aplicaciones para
no interferir conexiones con esos puertos.
21. 4. Problemas generales del NAT
La característica especial de todos los tipos de NAT
es las cinco tuplas que identifican de forma
inequívoca una conexión: protocolo, IP origen y
puerto, IP destino y puerto. Esta información la
debe mantener el sistema o router en una de sus
tablas, es algo parecido a cómo se comporta un
firewall.
22. para ambos casos también se controlan los flujos
de datos para cada conexión así como saber todo
sobre sus propias conexiones, es por ello que hay
que mantener una información de estado. Esto
conlleva un overhead mayor que en el routing de
paquetes simples.
23. 4.1 Manteniendo la información de estado
Excepto con NAT estático, necesitamos almacenar
y gestionar dinámicamente información sobre los
clientes actuales en el sistema y sus posibles
conexiones. Además, esta información de estado
debe estar marcada por un time-out, de forma que
los hosts que estén durante mucho tiempo
desconectados o no transmitan paquetes puedan
ser borrados de la lista del router para que sus
direcciones puedan ser reutilizadas.
24. Este timeout es una de las razones por lo cual se
recomienda observar las cabeceras TCP, ya que el
timeout puede ser más corto para conexiones TCP
que se acaben de cerrar mientras que debe ser más
alto para conexiones TCP que todavía estén
establecidas.
25. 4.2. Fragmentación
La fragmentación IP está relacionada con el
problema de mantener la información de estado
sobre conexiones TCP y UDP. En ocasiones hay
que tomar la decisión de no sólo traducir un
paquete a nivel de dirección IP, sino también a
nivel de direcciones (puertos) TCP/UDP.
26. El problema lo tenemos si el paquete ha sido
fragmentado, ya que el router NAT no puede saber
el puerto excepto en el primer fragmento que
contiene la cabecera TCP/UDP. Esto es un motivo
por el cual debemos mantener información del
estado de los fragmentos. Debemos guardar todos
los datos del primer fragmento incluyendo si es un
puerto TCP o UDP, para saber a qué puerto van a ir
los fragmentos que siguen.
27. Hay que tener en cuenta que IP no garantiza un
orden de llegada de los paquetes. Por lo que si nos
llega un fragmento que no sea el primero, que
contiene la información del puerto, entonces
deberemos esperar a que llegue el primero para
saber si tenemos que traducir el paquete o no.
En estos casos ya no sólo tenemos una traducción
IP, sino también tenemos una traducción de
direcciones UDP/TCP (protocolos a nivel de
transporte y no de red, un router a priori trabaja a
nivel de red).
28. 4.3. Posibles problemas con algunos
protocolos
La traducción de direcciones no resulta siempre
tan transparente como debería ser. Esto se debe a
que no siempre IP es el protocolo que únicamente
lleva la información de direccionamiento IP. Hay
algunos protocolos que envían IPs como parte de
los datos que transmiten, y si sólo traducimos la
parte IP el receptor que reciba el paquete tendrá un
problema con los datos que reciba.
29. La única forma de solucionar esto es observar los
datos transmitidos para determinados protocolos
conocidos que incluyan información IP. Esto
naturalmente supone una mayor complejidad y un
overhead adicional.
30. Algunos ejemplos de protocolos son:
FTP:
El comando PORT del FTP y la respuesta a
PASV, ambos comandos, envían una IP y un puerto
hacia el otro lado de la conexión. Para que
funcione el FTP sobre NAT tenemos que sustituir
la IP del mensaje. La parte más complicada de esto
es que la IP y puerto son transmitidas en su
formato decimal ASCII, por ejemplo, cada número
representado en decimal de una IP es un byte en el
paquete. Por este motivo la IP no tiene un longitud
fija en estos paquetes FTP.
31. Cuando intentamos sustituir la IP por otra que
tiene más o menos dígitos en su representación
decimal el paquete crece o decrece en su longitud.
Esto hace necesario ajustar los números de
secuencia del TCP de forma acorde, por lo que
tenemos que mantener más información sobre
estas conexiones con el fin de ajustar los números
en cada paquete que sigue en esa conexión.
32. Esto no es un problema únicamente del FTP, si no
que también afecta a todos aquellos protocolos que
cambiando la IP cambian la longitud del paquete.
33. DNS:
Este servicio puede ocasionar un gran problema.
Una solución es tener dos servicios DNS, uno con
IPs internas a nuestra red para resolución de
direcciones internas y otro externa con NAT-IPs.
Decir que las IPs resueltas por el servidor externo
no deben formar parte del espacio de direcciones
que pueda asignar un NAT dinámico.
34. 5.3. ejemplo de NAT a través de un router ADSL
Esta opción tiene la ventaja de que no hace falta
que ningún ordenador actué como NAT y por tanto
no hace falta tener encendido este PC durante todo
el día para que haga de servidor a los demás hosts
de la red local, además se obtiene todos los
beneficios de ADSL como un mayor ancho de
banda (hasta 2Mbps y pronto hasta 8Mbps) .
35. teniendo conexión permanente a internet por el
mismo cable de teléfono. Podrá usarse telefonía
por voz e internet a la vez gracias a un dispositivo
de filtrado que separa las frecuencias que se usan
por voz de las que se usan para internet por el
mismo cable.