viernes, 31 de enero de 2020

IPV6 - Parte 1 de 2 - Fundamentos

IPV6

Hola amigos, en el post de hoy conoceremos la IPV6; el IPv6 nació debido al crecimiento de los dispositivos que necesitan de una dirección IP para interactuar en la red, como sabemos la dirección IP son 4 octetos, esto quiere decir que aunque tenga una capacidad de millones de direcciones estás son limitadas, y en la actualidad y con el crecimiento del IoT o el internet de las cosas mas dispositivos necesitan una dirección única para conectarse a Internet.

Otra de las razones del IPv6 es la seguridad, ya que al paquete se le agrega un campo de autenticación lo cual hace que al llegar el paquete a su destino se valide que es un paquete seguro y que no ha sido modificado en el trayecto.

Otra de las ventajas del IPv6 es la eliminación del NAT, ya que cada dirección será única para cada dispositivo y se configurara automáticamente ya que la dirección del dispositivo se hará junto con su mac address.

Las IPv6 usan en lugar del sistema binario, el sistema hexadecimal el cual el peso de los valores se muestra de la siguiente manera:




Como vemos el binario que hace referencia al número 2, solo cuenta con 2 posiciones, mientras que el Hexadecimal que hace referencia al número 16 cuenta con 16 posiciones; como podemos observar los valores del 10 al 15 son sustituidos por letras las cuales van de la A a la F, mientras que en el sistema decimal el cual nosotros usamos en el día a día hace referencia al número 10 ya que son 10 posiciones; recordemos que el 0 en computación cuenta como la primera posición y no toma el número 1 como la primera posición o desde comienza a contar, al contrario de como se suele utilizar en el día a día para contar los objetos.

*Otro sistema numérico utilizado es el octal el cual hace referencia al número 8 y esta representado de la posición 0 a la 7.

Para entender un poco el hexadecimal se muestran unos ejemplos de conversión de hexadecimal a decimal.










Para conocer un poco mas de la IPv6 vamos a ver algunas características:

El direccionamiento se mueve de 32 bits (IPv4) a 128 bits (IPv6)


Cuando convertimos de Hexadecimal a Binario hay que recordar que son 4 bits por número:



Se divide en 8 grupos de 4 carácteres hexadecimales.

Provee un mecanismo para simplificar la dirección Ipv6.

REGLAS DE SIMPLIFICACIÓN

Estas reglas de simplificación lo veremos con el siguiente ejemplo:

1.- Tenemos la siguiente IPv6:


2001:0050:0000:0000:0000:0AB4:1E2B:98AA

Lo primero es eliminar los grupos de ceros consecutivos y se agregan dos puntos (::) en su lugar, quedando la IPv6 de la siguiente manera:


2001:0050::0AB4:1E2B:98AA

2.- Con el resultante, solo quitamos los ceros que se encuentren a la izquierda de cada grupo.


2001:50::AB4:1E2B:98AA
con esto ya tenemos una IPv6 simplificada.

TIPOS DE COMUNICACIÓN

En la IPv6 existe diferentes tipos de comunicación como en IPv4.


Como vemos en IPv6 se elimina el broadcast y se agrega un nuevo tipo de comunicación el cual es el Anycast.

Dentro de los tipos de comunicación IPv6 se encuentran los siguientes:



Unicast: Este tipo de comunicación es uno a uno, lo podemos ver al compartir un archivo entre dos PCs o al visitar un sitio web.



Multicast: Este tipo de comunicación es uno a muchos, se puede entender cuando se tiene una videollamada con algunos otras personas desde diferentes dispositivos, otro ejemplo es cuando hacemos una imagen de una computadora y al replicarla todas las PCs toman su configuración inicial.



Anycast: Este tipo de comunicación es exclusivo de Ipv6 y tiene la particularidad de que podemos tener IP duplicadas y poder llegar a la IP mas cercana, esto lo podemos ver por ejemplo si tenemos un servidor web en USA y otro en Brasil, al tratar de alcanzar la página web nos responderá con la IP que tienen ambos servidores, solo que nos enrutara al mas cercano, en este caso al servidor de USA.



TIPOS DE DIRECCIONES

En IPv6 se tienen 3 tipos de direcciones que se pueden tener al mismo tiempo, ya que cada una tiene una función especial, las cuales son:


Link-local Scope Address (L2)


  • Esta dirección se usa solo para conexiones locales, es decir a equipos que se encuentran en la misma red, y funciona en capa 2.
  • Estas direcciones no son enrutables, es decir no se conocen a nivel ruteo en internet.
  • Esta dirección se utiliza para el protocolo Neighbor discovery protocol.
  • Estas direcciones siempre se encuentran con el inicio FE80::/64 que representa la porción de red. Esta dirección se crea con el prefijo de red y la dirección mac address del dispositivo. Los ultimos 64 bits son 48 bits de la Mac address y en medio de la mac address se coloca el prefico FFFE.

Este es un ejemplo de dirección link-local:


simplificando queda de la siguiente manera:

FE80::0019:D1FF:FE22:DCF3

FE80::19:D1FF:FE22:DCF3

Unique/Site-Local scope address (Organización)

Esta dirección es parecida a una IP privada de IPv4, estas tampoco son enrutables a internet.

Estas direcciones están en el bloque FC00::/7; este a su vez se divide en dos FC00::/8 y FD00::/8, el segmento que se utiliza para asignación de PCs es el FD00::/8, para formar una dirección IP para una PC y que sea valida, se agrega una cadena aleatoria de 40 bits.

Por ejemplo si tenemos la siguiente cadena aleatoria E45DCA92E3, usando el prefijo FD00::/8, queda de la siguiente manera:



Primera red
FDE4:5DCA:92E3::/64

Ultima red
FDE4:5DCA:92E3:FFFF::/64


Algunas reglas para las redes:


  • Usar el prefijo FD como los primeros dos dígitos hexadecimales.
  • Elejir una ID global única de 40 bits.
  • Agregue el ID global a FD para crear un prefijo de 48 bits, que se usa como el prefijo de todas sus direcciones.
  • Usar los siguientes 16 bits como un campo de subred.
  • Tenga en cuenta que la estructura deja un campo de ID de interfaz de 64 bits (Hosts).

GLOBAL LOCAL

Las direcciones Global Unicast en IPv6 son el equivalente de las direcciones IP públicas en IPv4.

Los primeros 3 bits de estas direcciones IP están compuestos por los valores 001 (en notación binaria), por lo tanto, el prefijo de estás direcciones IP siempre tendrá un valor hexadecimal de 2000 con una máscara /3.

Los posibles prefijos que podrían ser utilizados para representar direcciones IP del tipo Global Unicast serían:

2000 (010) – dirección válida Global Unicast
3000 (011) – dirección válida Global Unicast

Teniendo la IP:

2000:0db8:3c4d:0015:0000:0000:1a2f:1a2b



Tenemos entonces que de los primeros 64 bits de un total de 128 bits, los 3 bits primeros representan el Prefijo Global. 

Los siguientes 45 bits identifican la red asignada a las organizaciones. 

Los siguientes 16 bitsrepresentan la subred (Subnet ID) en caso de realizarse una subdivisión de la red (Subnetting).


En resumen, los primeros 64 bits de una dirección IPv6 los podemos dividir en tres componentes:


  • Prefijo Global (3 bits)
  • Red (45 bits)
  • Subred (16 bits)


Los últimos 64 bits representan la porción de host que se genera con la mac address.


Espero que este post les haya aclarado un poco mas acerca de la nueva IPv6, en el siguiente post veremos como se configura una IPv6 en un dispositivo.

miércoles, 22 de enero de 2020

NAT (Network Address Translation) - Parte 2 de 2 - Configuración

NAT (Network Address Translation) 

Hola amigos, en el post de hoy veremos la forma de configurar un NAT en un router, la primera configuración que veremos sera OVERLOAD, ya que es la mas común que se requiere en un ambiente de hogar o de pequeña empresa.

Para eso utilizaremos la siguiente topología:


En la topología los dispositivos ya se encuentran con su respectiva configuración de IP.

NAT OVERLOAD

Para configurar el NAT OVERLOAD hacemos los siguientes pasos:

1.- Crear una access list standard para definir la red o redes que se van a traducir de IP privada a IP pública.

(config)#ip access-list standard "nombre_de_la_acl"
(config-std-nacl)# permit "IP_HOST_O_RED" "WILDCARD"

Ejemplo:
(config)#ip access-list standard RED_INTERNA
(config-std-nacl)# permit 192.168.4.0 0.0.0.255

Esto lo haremos en el Router0:


  
2.- Identificar las interfaces Inside y Outside

Para este paso hay que identificar como el tráfico fluye a través del router, en este caso la interfaz G0/0 es inside y la interfaz Se0/0/0 es outside.


La  interfaz Gig0/0 es inside debido a que esta en la LAN de nuestro Router.

La interfaz Se0/0/0 es outside debido a que esta en la WAN (Internet) del router.

**En este caso se puso un router en lugar de la nube, para efecto de demostración de la configuración.

Para configurar el NAT en las interfaces es muy sencillo y lo hacemos de la siguiente manera:

*Para la interfaz inside

(config)#interface "interface"
(config-if)# ip nat inside

(config)#interface G0/0
(config-if)# ip nat inside


*Para la interfaz Outside

(config)#interface "interface"
(config-if)# ip nat outside

(config)#interface G0/1
(config-if)# ip nat outside



3.- El siguiente paso es relacionar la red interna con el NAT que activamos en la interfaz de inside:

(config)# ip nat inside source list "NOMBRE_ACL" interface "INTERFACE" overload

ejemplo:
(config)#interface "interface"
(config-if)# ip nat inside source list RED_INTERNA interface s0/0/0 overload


Con esto ya tenemos finalizada la configuración, podemos hacer unas pruebas intentando hacer un ping al servidor remoto.

Sin NAT



Con NAT



Con NAT ya funciona el ping debido a que cuando originamos el tráfico en la PC esta sale con la IP privada y esta no es ruteable a internet, en cambio al configurar el NAT esa IP privada se traduce en una IP pública la cual si es ruteable a internet.

El siguiente comando nos ayuda a revisar las traducciones que se están llevando a cabo en el router:


Como vemos en la imagen se aprecian la dirección IP privada (Inside local) y la traducción a la IP pública (Inside Global), así como el procotolo que se esta utilizando, en las columnas de Outside como no hay nat de entrada vemos las direcciones IP públicas del sitio remoto.

CASO 2

En este caso 2 vamos a usar un pool de IP públicas, algunas empresas contratan un pool de IP públicas, esto quiere decir que tenemos varias IP públicas para uso de servidores o si queremos que cierta red salga por una IP pública en especifico, para hacer esto hacemos lo siguiente:

La configuración de las interfaces y del ACL de nuestra red interna se hace exactamente igual, solo lo que cambia es en donde vamos a aplicar el NAT y crear el pool de IPs Públicas.

1.- Creación de pool de IPs públicas:

(config)#ip nat pool "NOMBRE" "IP_LOW" "IP_HIGH" netmask "mascara_de_red"

(config)#ip nat pool IPS_EXTERNAS 189.188.23.2 189.188.23.3 netmask 255.255.255.0


2.- Configuración base del NAT

(config)#ip access-list standard "nombre_de_la_acl"
(config-std-nacl)# permit "IP_HOST_O_RED" "WILDCARD"

Ejemplo:
(config)#ip access-list standard RED_INTERNA
(config-std-nacl)# permit 192.168.4.0 0.0.0.255

*Para la interfaz inside

(config)#interface "interface"
(config-if)# ip nat inside

(config)#interface G0/0
(config-if)# ip nat inside


*Para la interfaz Outside

(config)#interface "interface"
(config-if)# ip nat outside

(config)#interface S0/0/0
(config-if)# ip nat outside

3.- El siguiente paso es relacionar la red interna con el NAT que activamos en la interfaz de inside:

(config)#ip nat inside source list "ACL_RED" pool "POOL_IPS_EXTERNAS" overload

(config)#ip nat inside source list RED_INTERNA pool IPS_EXTERNAS overload


Realizamos de nuevos las pruebas y revisamos si se hace el NAT correctamente:

PC0


PC1





STATIC NAT

Ahora configuraremos un NAT estático, este es muy sencillo ya que como no usaremos Pools de IP ni rangos de IP sino que es una sesión 1 a 1, solo se establecen la IP privada y la IP pública:

(config)#ip nat inside source static "IP_Privada" "IP_Pública"

(config)#ip nat inside source static 192.168.4.2 189.188.23.6




listo con esto ya tenemos configurado un NAT estático para esa PC, podemos hacer unas pruebas de conexión y veremos como se realiza el NAT:

PC2






Como vemos la tercera PC sale por la IP pública que le asignamos la cual es 189.188.23.6.

Con esto concluimos el tema de NAT, espero haya sido de utilidad para ustedes, pueden dejar comentarios en la caja de abajo.

lunes, 20 de enero de 2020

NAT (Network Address Translation) - Parte 1 de 2 - Fundamentos

NAT
(Network Address Translation)


Hola amigos, en el post de hoy hablare acerca del NAT (Network Address Translation); primero hay que explicar que es el NAT y cual es su función principal, para entender esto hay que entender como funciona Internet.

La nube o Internet en realidad son servidores y dispositivos interconectados entre si por ruteadores, estos ruteadores (routers) usan IP públicas para tal fin, en Internet si tenemos una IP privada nunca será ruteable es decir nunca vamos a poder alcanzarla, como vemos en el ejemplo:


Pero en cambio si utilizamos una IP pública para "alcanzar" ese servicio que requerimos si será ruteable:


Entonces si en mi casa, trabajo o laboratorio tengo IP privada como se comunica con la IP pública?

Pues sencillo, mediante el uso del NAT, la IP privada al hacer por ejemplo un ping hacia una IP pública primero llega al router el cual en su configuración si se tiene el NAT configurado puede hacer tres acciones las cuales son:

- NAT Estatico
- NAT Dinamico
- NAT Overload

NAT ESTÁTICO

En este tipo de NAT la IP privada esta asociada a una IP pública especifica la cual esta configurada de manera estática como su nombre lo dice, lo podemos ver en el siguiente ejemplo:


como vemos en la imagen cada una de las IP privada al salir se transforma en una IP pública asociada, así que cuando estamos en la PC1 y queremos hacer un ping a la IP pública, se transforma de la siguiente manera:


Este tipo de NAT es recomendado en servidores, debido a que los pool de IP pública son caros y son limitados, por lo regular el ISP lo que hace es entregar una IP pública y con esa IP pública tienen acceso a Internet todas las PCs de nuestro hogar o trabajo, esto es otro tipo de NAT que se explicara a continuación.

NAT DINAMICO o PAT (Port Address Translation)

En este tipo de NAT la IP pública se asocia a puertos, es decir en lugar de asociarse a direcciones IP se asocia a un puerto, esto es muy utilizado si queremos pública servidores web, correo, etc..., se utiliza en tráfico de entrada y no de salida, ya que podemos "mapear" puertos públicos en privados, ejemplo:


Como vemos en la imagen, la PC remota hace una petición http que es por el puerto 80, llega a nuestro router y este "Natea" / Traduce el puerto e IP al puerto e IP privado.


En esta imagen podemos hacer que el puerto http (80) por default responda por un puerto diferente al default, le decimos que si una PC remota hace una petición a nuestra IP pública usando el puerto 8080, se traduzca a la IP privada pero el puerto será el 80, el NAT es una herramienta muy versátil que nos puede ayudar incluso en algo de seguridad, ya que podemos mappear a puerto no default puertos de correo o web y son mas difíciles de identificar para un atacante que use robots.


NAT OVERLOAD

Este tipo de NAT es el mas común de los tres ya que se encuentra en la mayoría de los hogares y es el que entrega por default un ISP en sus modem/routers, en este tipo de NAT la IP pública se comparte a todos las PCs que tenemos sobre la red, esto lo hace mediante el uso de una combinación de IP con puerto, esta combinación tiene el nombre de SOCKET:


Como vemos la IP tiene a un lado el puerto, estos se encuentran divididos mediante dos puntos.

Este socket sirve al router, ya que cada PC puede ocupar un espacio en el uso de la IP Pública, siguiendo el camino del tráfico de una PC en nuestra red a una IP pública en Internet lo podemos ver de la siguiente manera:


En la topologia la PC en nuestra red hace la petición a la IP pública remota poniendo lo siguiente:


En el origen tenemos la IP privada y un puerto que como vemos no coincide con la petición web (http/80) esto es debido a que las PC que son el origen toman un puerto aleatorio para generar la sesión, hasta aquí tenemos un socket de origen.

En el destino tenemos la IP pública la cual vamos a consultar y aquí si aparece el puerto web (http/80) ya que es el puerto del equipo remoto al cual vamos a acceder, en este caso esta el socket de destino.


En la imagen podemos ver que si una PC quiere visitar un servidor en Internet pero otra PC ya tomo el mismo puerto el router lo que hace es pasarla al siguiente puerto disponible, como podemos ver el router tiene una lista de los sockets y pude identificar de donde viene el tráfico y hacia donde va.


En nuestras PC podemos ver esta lista también usando el comando NETSTAT:


como vemos en la imagen se ve una lista de sesiones que tiene abierta nuestra PC, en donde en un lado se observa la IP de origen y de destino.

Con esto terminamos la parte teórica de NAT, en el siguiente post veremos la configuración de cada uno de los tipos de NAT. Espero que el post haya sido informativo, ya saben que pueden dejar comentarios en la caja de comentarios de abajo.