IPv6 (segunda parte)

La semana pasada empezamos a hablar de IPv6 y hoy vamos a terminar, al menos lo esencial, si queréis más puedo ir añadiendo más contenido relacionado en el futuro, como queráis.

La semana pasada comentamos que había 3 modos de asignar una IPv6 a un interfaz.

La asignación Stateless Address Autoconfiguration (SLAAC) es una técnica para obtener una dirección IPv6 que utiliza NDP.

Los pasos para asignar una dirección IPv6 con SLAAC son los siguientes:

  1. Se genera la Link-Local
  2. Se envía un RS a todos los routers
  3. Se recibe un RA que incluye el prefijo de la red
  4. Se genera la dirección con EUI-64 (números aleatórios de las extensiones de privavidad)
  5. Se comprueba le DAD
  6. La IPv6 queda activa

Otra opción es DHCPv6, esta opción es statefull, es decir, se puede seguir el estado en tablas y demás.

DHCPv6 puede ser utilizado como complemento a SLAAC, para asignar información no gestionada por SLAAC como por ejemplo servidores de DNS.

Otra de sus características es que soporta delegación de prefijo, es decir, podemos asignar además de la IP un rango para ser usado, por ejemplo si es un router al que le damos DHCPv6 le podemos asignar un rango para su LAN.

Una diferencia que tiene con DHCPv4 es la reserva de direccionamiento, al igual que en IPv4 se puede asignar una ip fija a un nodo, pero en este caso no se reserva con la mac sino con el DHCP Unique Identifier (DUID).

El funcionamiento es el siguiente:

  1. El cliente de DHCP envía la solicitud a la IPv6 de Multicast All DHCP Servers que es la ff02::1:2.. La solicitud se hace desde la link local
  2. El servidor de DHCP envía el advertise a la link local del cliente desde la link local del servdior.
  3. El cliente de DHCP reponde con un request desde la link local a la multicast de todos los servidores DHCP (ff02::1:2)
  4. El servidor de DHCP hace un assigment de la dirección respondiendo al request a la link local del cliente

Hay un tema muy interesante y es la selección de la ip de origen ya que en IPv6 es muy normal tener varias direcciones en el host o incluso en el interfaz.

Para seleccionar la IP con la que se va a contestar tenemos que elegir una de las que haya haciendo un desempate.

  1. Dirección del mismo ámbito (link local o global)
  2. Aquí elegiremos las que tengan el ámbito más estricto o las direcciones que no han sido obsoletas (deprecated), pero este punto casi que podemos empezar a olvidarlo.
  3. Se prefieren Ipv6 nativas antes de las tansicionales (túneles y cosas así)
  4. Se prefiere la que tenga la máscara más larga, como en routing.
  5. Se prefiere la del interfaz saliente.

Ahora voy a hablar de cómo pasar de IPv4 a IPv6, la transición, la forma buena es usar un dual stack, es decir, tener IPv4 e IPv6 a la vez en nuestros equipos, porque el tema de túneles NATs y demás al final no son soluciones tan buenas como esta, aunque va a haber situaciones en las que los túneles pueden ser la única solución, así que tampoco hay que cerrarse en banda.

Dual stack nos va a permitir comunicarnos con los demás nodos de Internet usen el protocolo que usen.

Pensad que hoy en día, Mayo de 2017, cualquier sistema operativo medianamente moderno va a soportar dual stack, así que esta opción no debería de ser un problema.

Si hablamos de DNS, desde la parte del usuario, veremos que en la zona DNS configuraremos en vez de una entrada de tipo A con un IP v4 una entrada de tipo AAAA con una IPv6 y luego en la resolución inversa será igual que en IPv4, muchísimo más larga, esa es la única diferencia.

Hasta ahora hemos visto un poco qué es IPv6, pero no hemos entrado en temas de red y ahí es donde hay gran parte de la chicha de este tema.

Voy a empezar con algo que es probable que para muchos sea nueva, con los protocolos de redundancia NHRP (Next Hop Redundancy Protocol), estos son el Subnet Router Anycast, el VRRP y el HSRP.

El primero es Subnet Router Anycast, pensado para sustituir a VRRP o HSRP.

En este caso todos los routers de la red usarán la dirección con todo 0s. Los routers escucharán esa dirección y el primero que recoja hará forwarding del paquete.

La única pega que tiene el Subnet router anycast es el tiempo de convergencia que es algo elevado, hasta 38 segundos.

Otra opción es VRRPv3. El funcionamiento es muy similar al de su homólogo en IPv4, la diferencia está en que los RA se envían desde la VIP.

De HSRPv2 al ser propietaria de Cisco no vamos a hablar.

Y llegamos a los protocolos de routing en IPv6, los principales son los mismos que en IPv4, es decir RIP, OSPF, IS-IS y BGP.

La tabla de routing de IPv6 contiene lo mismo que en IPv4

  1. prefijo
  2. longitud del prefijo (antes llamado máscara)
  3. siguiente salto
  4. protocolo
  5. interfaz de salida
  6. métrica

El funcionamiento de los protocolos también es muy similar o idéntico a sus homólogos en IPv4.

En el caso de RIPng es igual a RIPv2, un protocolo de vector distancia, con sus virtudes como el horizonte dividio, ser un estándar abierto y limitaciones como el límite de 15 saltos, convergencia lenta o la métrica basada solo en saltos, ignorando todo lo demás.

En el caso de OSPFv3 es quizás el que tiene más variaciones entre IPv4 e IPv6 como por ejemplo que el router ID está limitado a 32 bits, con lo que ahí se pone una dirección IPv4. Otra diferencia, esta muy importante, es que el proceso se hace por interfaz y no por subred, y esto es importante porque un único enlace puede tener varias redes IPv6. Y es posible tener varias instancias de OSPF por interfaz.

En OSPFv3 la comunicación se realiza utilizando las direcciones link local, excepto en los virtual links obviamente. La autenticación se realiza en la cabecera IPv6 en la autenticación de IPsec y OSPF funciona directamente sobre IP utilizando un número de protocolo, en este caos el 89.

En cuanto a la configuración, si usaramos un Cisco que es lo habitual para estas cosas en vez de definir el network donde definimos las redes participantes lo que vamos a hacer es definir en el interfaz, y no en la configuración de ospf, cual participa con un:

ipv6 ospf 1 area 0

En el caso de IS-IS no hay ninguna diferencia en el protocolo, ya que como funciona a nivel 2 es independiente al protocolo superior, es decir, a IS-IS le da igual si usamos direccionamiento IP o IPv6.

Y nos queda BGP, aquí hay diferencias como el uso del address family apropiado, en este caso ipv6, pero el funcionamiento es exactamente igual.

Hasta ahora hemos hablado de muchas cosas, pero no de cómo asignar el direccionamiento en nuestra red.

Ripe nos ha asignado a los LIRs un /32 y con ese /32 los LIRs tenemos que asignar direccionamiento a nuestros clientes. La forma de asignar sería asignar un /48 a cada cliente.

Luego dentro de la red lo ideal es asignar un /64 para cada red, independientemente del número de Ips necesarias, y el /64 es importante ya que SLAAC necesita un /64.

Y luego para los enlaces de los dispositivos de red, routers, switches y demás lo suyo es usar /127 para los punto a punto o /126 si se necesita alguna IP más, pero estas redes solo son para redes de transferencia, lo cual además viene definido en la RFC 6164 que se llama Using 127-Bit IPv6 Prefixes on Inter-Router Links.

La siguiente duda es cuando utilizar direcciones link local o unique local que no son encaminables en Internet o usar direcciones globales. La diferencia estriba en si son accesibles desde fuera o no. Si no son accesibles desde fuera no puede haber MTU discovery, este punto es interesante.

Pero en IPv6 no todo es bonito, de hecho tenemos puntos en los que es necesario que nos protejamos para evitar ataques y problemas.

Agotamiento de cache de ND: Se puede limitar el tamaño de la caché de ND e ignorar mensajes no solicitados de NA