Con la llelgada del famoso IoT (Internet of Things), se han multiplicado enormemente las direcciones IP necesarias para la identificación de dispositivos. Lo que parecía que podía durar para siempre hace 20 años con el protocolo IPv4, ha sido superado por la propia relaidad del desarrollo tecnológico. Cada vez más los dispositivos se conectan a la red global mediante este protocolo, y no tardaremos muchos años en ver una implementacion total para todos los dispositivos. Si has pasado horas entendiendo el protocolo IPv4, vete olvidando de él porque hay un nuevo muchachito en la capa de red del modelo OSI.
Manejar el direccionamiento de red con IPv6 no es complicado. Puede parecer ininteligible a primera vista, por la presencia de unos dobles dos puntos, hextetos variables, bits que no se saben donde están… pero es realmente sencillo.
Para comprender IPv6 vamos a dividir la entrada en dos grandes apartados: construcción de una dirección, y explicacion de cada uno de los hextetos.
Construcción de una dirección
Tengamos en cuenta las siguientes consideraciones iniciales:
- Una direccion IPv6 consta de ocho hextetos (128 bits agrupados en 8 grupos de 16 bits).
- Cada hexteto está separado por dos puntos de otro hexteto y todas las direcciones notan su red mediante CIDR (más comunmente conocido como mascara de red).
- Cada hexteto está representado hexadecimalmente.
Por tanto, las siguientes direcciones son direcciones IPv6 válidas:
Pero no las encontraremos nunca así. A partir de estas reglas se aplican otras para simplificar la representación de estas direcciones:
- Un hexteto nulo (todo ceros) o más hextetos nulos consecutivos se pueden representar como dos puntos dobles.
- Los ceros de los hextetos a la izquierda (menos significativos) se pueden obviar.
- En una misma direccion no pueden haber más de dos puntos dobles (podriamos no saber cuántos hextetos hay escondidos en cada uno de ellos para que la dirección sume 8 hextetos).
Veamos como con estas reglas podemos simplificar las direcciones anteriores.
Hextetos y dirección de red mediante CIDR
Es necesario simplificar y vendarse los ojos ante una mayor complejidad en este aspecto. Vamos a asumir que estamos trabajando con direcciones Global Unicast, es decir, direcciones de Internet. Si quieres profundizar un poco más en este aspecto, existen recursos muy interesantes en la red como este video donde explican precisamente esto con más detalle.
Ahora que sabemos cómo construir una dirección IPv6 y su notación, tenemos que saber que significan cada uno de sus hextetos en función de la máscara de red.
En una dirección IPv6 Global Unicast, existen tres grupos de hextetos configurados por defecto de la siguiente forma: los tres primeros hextetos especificarán el prefijo de red, el cuarto octeto, la subred, y los últimos cuatro octetos especificarán la dirección de la interfaz. Se suele denominar la regla 3-1-4. Hemos dicho que así es como se suelen configurar por defecto, pero no siempre es así.
Los tres primeros octetos (Global Routing Prefix) nos serán dados por nuestro proveedor de internet (ISP), al cual se le asigna un abanico de direcciones por parte de la entidad reguladora de IPv6. Estos tres primeros octetos son inamovibles, siempre serán 3, por lo que por defecto, una direccion IPv6 Global Unicast tendrá como minimo un prefijo de red de /64 (/48 de red global + /16 de subnet).
Sin embargo, el prefijo de subred se puede incrementar, dando lugar a un aumento de subredes, en detrimento del números de interfaces, tal y como pasaba en IPv4.
Veamos un ejemplo:
¿Quá pasa en local?
Pues en local pasa lo mismo, pero existen unas direcciones específicas, como en el anterior protocolo, que son necesarias tener en cuenta:
- ::1/128 está reservada para el loopback del localhost.
- fe80::xxxx:xxxx:xxxx:xxxx/64 define una interfaz accesible en nuestra red local. Se suele usar para redes tras una interfaz NAT, por ejemplo, la red LAN que se ubica tras nuestro router a internet.
Podeis ver otras IPv6 reservadas en este link.