Aprendiendo IPv6: Clases de Direcciones IPv6

Un poco más temprano que tarde deberemos migrar nuestras redes a IPv6, y hay muchas más diferencias que lo que la mayoría cree respecto a IPv4.

Personalmente en un principio me dejé llevar por un “es lo mismo, sólo que las direcciones son de 128 bit, en lugar de 32” y comencé a extrapolar los conocimientos de IPv4: que error, cuán diferente que es

Así que hace un tiempo que tengo ganas de armar un ambiente de pruebas para familiarizarme con IPv6

Antes de comenzar a crear el ambiente de pruebas para IPv6 escribo esta nota, para tener sólo algunos conocimientos muy básicos sobre los tipos de direcciones IPv6. Para el que no lo haya hecho, o no conozca nada de direcciones IPv6, ni como se expesan le recomiendo una nota anterior en este mismo lugar Introducción a IPv6 – 2 Direcciones IPv6

En esta nota veremos como se han asignado algunos de los rangos principales de direcciones IPv6

Global Unicast Addresses (GUA)

Este grupo de direcciones corresponde a lo que en IPv4 se conocen como direcciones públicas de Internet

Recordemos que uno de los objetivos de la implementación de IPv6 es que no se necesiten más dispositivos que hagan NAT (Network Address Translation) ocultando el direccionamiento interno de la red. Así que de cumplirse lo anterior todos los equipos que requieran conectividad a Internet, necesitarán una dirección IPv6 de tipo GUA (Global Unicast Addresses)

Antes de comenzar recordemos que las direcciones IPv6 (128 bit) tienen asignado en forma fija los primeros 64 bit como identificador de red, y los segundos 64 bit como identificador de interfase

Para estas direcciones el IANA (Internet Assigned Numbers Authority) ha asignado un prefijo específico: los primeros tres bit serán 001

Para solucionar uno de los graves problemas de IPv4 en Internet como es el manejo de las ya interminables tablas de ruteo (Routing Tables) en los enrutadores (Routers), es que se le ha dado gran importancia a cómo se distribuirán las diferentes redes.
En IPv4, lo que comennzó usando clases de redes (A, B, C, D y E) que luego fueron subdivididas en forma iterativa hizo que la asignación de redes de acuerdo a la región del mundo donde se encontraran fuera hecho en forma muy poco eficiente
En IPv6, conociendo el problema actual de IPv4 se ha manejado totalmente diferente y el objetivo es que el reparto se ordenado. Uno de los motivos de usar 128 bit en lugar de 64 bit fue justamente para lograr este objetivo

Como para asignar a la red tenemos 128 bit, menos 3 bit de sufijo establecido, quedan 125 utilizables. De estos se han dejado 45 bit para identificar las redes a asignar los grandes proveedores de Internet (ISPs), y aún quedarán 16 bit para crear subredes dentro de las primeras

Aunque no parezca a primera vista se trata de números muy grandes, hagan la prueba de calcular cuánto es 2 elevado a la 45 (35.184.372.088.832), y cuánto es 2 elevado a la 16 (65.536), y atención que estamos hablando de redes, no de interfases

Un cuadro resumen habla mucho más que mil palabras

Este tipo de direcciones las reconoceremos fácilmente. Como los primeros 3 bit deben ser “001”, las combinaciones posibles con el cuarto bit pueden ser “0010” que es 2 (0x2, hexadecimal), o “0011” que es 3 (0x3, hexadecimal)

Resumiendo, cuando veamos una dirección IPv6 que comience con 2 o con 3, o cuando asignemos una dirección IP comenzando con 2 o 3, tengamos en cuenta que serán direcciones IPv6 públicas en Internet, por supuesto ruteables en la Internet IPv6

De todas formas, mientras la migración a IPv6 no sea completa, sobre todo en algunos proveedores de Internet, eso no implica que no podamos usar IPv6 en nuestra red interna.

Una última aclaración, hay un prefijo de red que se ha asignado para usar específicamente en documentaciones, el mismo es 2001:db8:: y por eso lo vemos muchas veces cuando leemos sobre IPv6

Unique Local Unicast Addresses (ULA)

De todas formas, IANA ha reservado un grupo de direcciones IPv6 similar a lo que en IPv4 corresponde a las direcciones privadas (10.0.0.0/8, 172.16.0.0/12 y 192.168.0.0/24)

En un principio se había hecho algo similar a como se había hecho en IPv4, un grupo fijo de direcciones conocidas como “Site Local Unicast Addresses”. Esto fue establecido en RFC 1884, pero luego su uso fue desaconsejado por RFC 3879

El uso de “Site Local Unicast Addresses” entonces quedó reemplazado por “Unique Local Unicast Addresses” que trataremos ahora

Una de las principales ventajas es que se evitará en gran medida la repetición en el uso de redes. Es demasiado común en las redes actuales encontrar que se usaron las mismas redes (10.0 o 10.1 o 172.16 o 192.168.1) en sitios diferentes que luego se deberán interconectar, y por supuesto no se puede si a ambos lados se usa la misma red

Así que la solución fue dejar el tema al azar. No, no a que el administrador elija lo que quiera, no, hay definidas las condiciones de cómo se generará el número de bit elejidos aleatoriamente. Y además se han reservado para esto 40 Bit, un número muy grande. Imagínense participar en un sorteo que tiene 1.099.511.627.776 números, la probabilidad de acertar es casi imposible

Igual que en el caso anterior un cuadro habla más que mil palabras

El prefijo reservado por IANA, para estas redes son 8 bit (1111 1101) que si lo pasamos a hexadecimal, rápidamente nos damos cuenta que estas direciones IPv6 comenzarán siempre con “FD”

¿Y cómo se generan los 40 bit aleatorios?, hay una serie de especificaciones de qué condiciones deben cumplir las funciones que los generan. En mi caso, observen el cuadro anterior, he puesto un enlace a un sitio que cumple en la genereación de acuerdo a las correspondientes RFCs: Local IPv6 Range Generator

igual que en el caso anterior, todavía restan 16 bit para subdividir las redes en subredes

Importante: estas direcciones son para uso privado, por lo tanto no son ruteables en Internet, aunque por supuesto las podemos rutear dentro de cada organización

Link Local Unicast Addresses (LLA)

Por último vamos a describir un tipo de direcciones IPv6 que las veremos siempre: las Link Local

Esta clase de direcciones IPv6 tienen mucho en común con lo que en IPv4 se llama APIPA (Automatic Private IP Address Assignement) que seguramente habremos visto más de una vez direcciones de tipo 169.254.0.0/16. Son direcciones transitorias que se asigna un cliente configurado para obtenerla automáticamente, y no recibe ningún ofrecimiento desde un DHCP

Bien, son parecidas pero bien diferentes. En contraposición a lo que sucede en IPv4, en IPv6 estas direcciones persisten, aún teniendo configuradas otras direcciones IPv6, ya que son usadas por varias de las funcionalidades propias de IPv6, por ejemplo Network Discovery

Vamos al cuadro resumen

El prefijo establecido por IANA es “1111 1110”, lo cual nos permite fácilmente identificar que estas direcciones comenzarán con “FE”. Las que vemos siempre en ambiente Windows comienzan con “FE80”

Estas direcciones no son ruteables, ni exterior ni interiormente en nuestras redes. Tener en cuenta esto que es importante

Además en ambiente Windows, el sistema conoce lo que realmente son, y por lo tanto el cliente no registra las mismas en DNS

Bueno, hasta acá llegamos en esta ocasión. Como comenté al principio tengo ganas de armar un ambiente de pruebas para IPv6, y si hay interés por parte de los lectores háganmelo saber en los comentarios, porque si no hay interés lo haré igual solo que dudo que publique las notas

La idea es crear una o más redes que utilicen sólo IPv6 para comunicar los equipos, comunicarlas a través de Routers, montar DHCPv6, crear un Dominio Active Directory, y si puedo, darle conectividad a estas máquinas que tendrán sólo IPv6 a otras redes que tengan sólo IPv6 pero pasando por la “solo IPv4” que me provee mi “estimado” ISP 🙂

Post a comment or leave a trackback: Trackback URL.

Comments


  • Fatal error: Uncaught Error: Call to undefined function ereg() in F:\blogs.itpro.es\wp-content\themes\notesil\functions.php:333 Stack trace: #0 F:\blogs.itpro.es\wp-content\themes\notesil\functions.php(35): notesil_commenter_link() #1 F:\blogs.itpro.es\wp-includes\class-walker-comment.php(179): notes_comments(Object(WP_Comment), Array, 1) #2 F:\blogs.itpro.es\wp-includes\class-wp-walker.php(145): Walker_Comment->start_el('', Object(WP_Comment), 1, Array) #3 F:\blogs.itpro.es\wp-includes\class-walker-comment.php(139): Walker->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #4 F:\blogs.itpro.es\wp-includes\class-wp-walker.php(387): Walker_Comment->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #5 F:\blogs.itpro.es\wp-includes\comment-template.php(2174): Walker->paged_walk(Array, '5', 0, 0, Array) #6 F:\blogs.itpro.es\wp-content\themes\notesil\comments.php(25): wp_list_comments('type=comment&ca...') #7 F:\blogs.itpro.es\wp-includes\comment-template.php(1512): require('F:\\blogs.itpro....') #8 F:\ in F:\blogs.itpro.es\wp-content\themes\notesil\functions.php on line 333