T9. Direccionamiento IPv6¶
1️⃣ 128 bits¶
Todas las direcciones IPv6 tienen 128 bits... aunque no vamos a escribirlos nunca (menos mal).
2️⃣ hextetos¶
Todas las direcciones IPv6 tienen 8 “hextetos”
Por ejemplo: fe80:0000:0000:0001:d448:0000:0000:cf6b
¿Qué es un hexteto? Un grupo de 16 bits que se escribe con 4 dígitos hexhadecimales (del 0 al 9, A, B, C, D, E o F)
Compresión de IPv6¶
Se trata de un proceso de 2 fases:
1º Eliminación de ceros a la izquierda Por ejemplo.
De: fe80:0000:0000:0001:d448:0000:fe40:cf6b
A: fe80:0:0:1:d448:0:fe40:cf6b
2º Doble “::“
Sustituiremos el grupo de 0 más largo por “::“, pero sólo un grupo de ceros (y el primero si hay mas de un grupo).
De: fe80:0:0:1:d448:0:fe40:cf6b
A: fe80::1:d448:0:fe40:cf6b
Ejemplo: La IPv6 ::1 podemos descompactarla a 0000:0000:0000:0000:0000:0000:0000:0001
Ejercicios de compresión¶
3️⃣ Aquí no hay clases¶
4️⃣ Prefijo¶
Lo que antes llamábamos CIDR ahora llamamos prefix y equivale al número de 1 de la máscara de red.
P.e.: fe80::d448:82ff:fe40:cf6b/64 es un prefijo /64, esto es, 64 bits de red y 64 bits de hosts.
5️⃣ Dirección de red¶
Los bits indicados por el /prefix
6️⃣ NO existe dirección de difusión¶
En IPv6 no hay direcciones de difusión, sólo direcciones:
- unicast: un dispositivo
- multicast: múltiples dispositivos
- anycast: varios dispositivos comparten una IP (CDN)
broadcast: NO EXISTE
7️⃣ Subredes¶
Del lado de la red. Esto es, todas las subredes deben ser /64 o mayores.
Lo normal es que nos asignen un /48 para empresas o /56 para usuarios domésticos y de ahí segmentemos subiendo el prefijo a p.e. /60
Autoconfiguración de direcciones libres de estado (SLAAC)¶
No necesitan DHCPv6 (a priori)
Los nodos IPv6 pueden configurarse a sí mismos automáticamente cuando son conectados a una red ruteada en IPv6 usando los mensajes de descubrimiento de routers de ICMPv6. La primera vez que son conectados a una red, el nodo envía una "solicitud de router" (RS: Router Solicitation) de link-local usando multicast pidiendo los parámetros de configuración; y si los routers están configurados para esto, responderán este requerimiento con un "anuncio de router" (RA: router advertisement) que contiene los parámetros de configuración de capa de red.
Si la autoconfiguración de direcciones libres de estado no es adecuada para una aplicación, es posible utilizar Dynamic Host Configuration Protocol para IPv6 (DHCPv6) o bien los nodos pueden ser configurados en forma estática.
Identificación de los tipos de direcciones¶
Los tipos de direcciones IPv6 pueden identificarse tomando en cuenta los rangos definidos por los primeros bits de cada dirección.
::/128-> La dirección con todo ceros se utiliza para indicar la ausencia de dirección, y no se asigna ningún nodo.::1/128-> La dirección de loopback es una dirección que puede usar un nodo para enviarse paquetes a sí mismo (corresponde con 127.0.0.1 de IPv4). No puede asignarse a ninguna interfaz física.::1.2.3.4/96-> La dirección IPv4 compatible se usa como un mecanismo de transición en las redes duales IPv4/IPv6. Es un mecanismo que NO se usa.::ffff:0:0/96-> La "dirección IPv4 mapeada" se usa como mecanismo de transición en terminales duales. Los dos últimos 0's son los 32 bits de IPv4.fe80::/10-> El prefijo de enlace local (link local, en inglés) específica que la dirección solamente es válida en el enlace físico local.fec0::-> El "prefijo de emplazamiento local" (en inglés, site-local prefix) específica que la dirección únicamente es válida dentro de una organización local. La RFC 3879 lo declaró obsoleto, estableciendo que los sistemas futuros no deben implementar ningún soporte para este tipo de dirección especial. Se deben sustituir por direcciones Local IPv6 Unicast.fc00::/7-> El prefijo de dirección local única (en inglés, unique local address). Está definido por la RFC 4193. Se usa en substitución de las direcciones site-local.ff00::/8-> El prefijo de multicast. Se usa para las direcciones multicast.- Hay que resaltar que NO EXISTEN las direcciones de difusión (en
inglés, BROADCAST) en IPv6, aunque la funcionalidad que prestan
puede emularse utilizando la dirección multicast
FF01::1/128, denominada "todos los nodos" (en inglés, all nodes).
Ejercicios de tipos de IPv6¶
Configuración de red lan con IPv6¶
Una breve guía IPv6 para administradores de IPv4¶
Traducción: Esta guía es para administradores de laboratorio en casa que entienden bien IPv4s pero encuentran la configuración de IPv6 duro o molesto porque las cosas funcionan de manera diferente. De alguna manera, la administración de una red IPv6 puede ser más simple que IPv4, solo necesita aprender algunos conceptos nuevos y descartar algunos viejos.
Empecemos.
En primer lugar, hay algunos conceptos que uno debe desaprender de ipv4:
Concepto 1
No escojas números. Debido a que el espacio IPv4 es pequeño, estamos acostumbrados a gestionarlos, pensar en ellos, memorizarlos. Así que escogemos números como 1, 10, 20, 101, etc. Sin embargo, el espacio de direcciones IPv6 es tan grande, que es mejor dejar que las computadoras elijan los números al azar desde el gran espacio de direcciones, y no limitarse a números pequeños. Utilice DNS, para que pueda recordar nombres y no números. Por lo tanto, nunca elija sus propios números! Esto es fundamental para IPv6, y ir en contra de este concepto hará que todo sea más difícil, así que no lo hagas.
"Las direcciones IPV4 son como diamantes, las direcciones IPV6 son como la arena..."
Concepto 2
IPv6 tendrá múltiples direcciones por interfaz. Puede (y tendrá) docenas (para privacidad) de direcciones. Esto es normal. Luchar contra esto también hará que todo sea más difícil. Solo acepta el hecho de que un host tendrá múltiples direcciones.
Los conceptos anteriores son los que hacen que IPv6 sea diferente de IPv4, por lo que es mejor dejarlos ir lo antes posible.
Ok, ahora en IPv6.
Concepto 3
Las direcciones IPv6 tienen 128 bits de longitud. Tiene los primeros 64 bits como la parte enrutable, llamada prefijo, y los últimos 64 bits como el identificador de interfaz. Su ISP le dará los primeros 64 bits, y su máquina host tendrá los últimos 64 bits. Además, las subredes IPv6 son siempre de 64 bits o /64. Esto hará que la vida sea mucho más simple para usted como administrador de la red, no pensar más en las máscaras de subred.
Las direcciones se muestran como 8 grupos de hexadecimales, como este: 1111:2222:3333:4444:aaaa:bbbb:ccc:dddd. Los primeros 4 grupos (1111:2222:3333:4444) son el prefijo, y los 4 últimos grupos son el identificador de máquina o interfaz (aaaa:bbbb:cccc:ddddd). Algunas ejecuciones de ceros se pueden condensar como ::.
Hay algunos prefijos comunes para recordar. Las direcciones globalmente enrutables comienzan con un 2 o posiblemente 3, como 2xxx::. Enlace inicio local con fe80:: y ULA (Dirección local única, similar a las direcciones privadas en IPv4) comience con fdxx::. Memoriza estos. Estos no son más difíciles de recordar que conocer 192.168.x.x y 10.x.x.x son direcciones IPv4 privadas.
Concepto 4
IPv6 utiliza el Anuncio del router (RA), no DHCP. La diferencia es que mientras que DHCP le dará al cliente solicitante la dirección IP exacta, mientras realiza un seguimiento de mucho estado (como la dirección MAC, el tiempo de arrendamiento, etc., etc.), RA solo anuncia el prefijo. Cuando el cliente ve la RA, autoconfigurará su propia dirección IPv6 utilizando el prefijo anunciado más su propio identificador único. Esto se llama configuración automática de dirección sin estado (SLAAC) y elimina la necesidad de un servidor DHCPD de estado. Para un prefijo dado, la interfaz siempre elegirá el mismo identificador, (de hecho, el algoritmo eui-64 elegirá el mismo identificador en múltiples prefijos), por lo que una vez que un cliente elija una dirección IPv6, puede asumir que es estable. Un algoritmo ligeramente diferente elegirá un identificador diferente para diferentes prefijos, pero estos también serán estables para cada prefijo.
Existen servidores DHCPv6 de estado que pueden repartir direcciones IPv6 completas al igual que IPv4 DHCP, pero Android no admite estos, y no son necesarios para una configuración IPv6 completamente funcional. Tan tentador como es, no hay necesidad de un servidor DHCP IPv6 en su LAN.
Concepto 5
Delegación de prefijos. Como se ve en el concepto 4, el enrutamiento se realiza mediante la publicidad del prefijo. Entonces, ¿cómo obtengo este prefijo del ISP? Lo pide a través de la delegación de prefijos (PD). Con IPv4, cuando su router se conecta a su ISP, obtiene una dirección pública para la WAN, y utiliza una dirección privada seleccionada como 192.168.0.0/24 para su LAN. Con IPv6, ya que desea una dirección globalmente enrutable para hosts en su LAN también, debe solicitar al ISP un prefijo enrutable.
Después de que su router se conecta a su ISP, el router puede solicitar la delegación de prefijos, utilizando DHCPv6. RFC sugiere que el ISP debería darle un espacio de direcciones /56, lo que le brinda 255 subredes enrutables, pero algunas (mirándote, Comcast) te dan solo una /64 por defecto, que es solo una subred enrutable. Comcast puede darte una /60, o 16 subredes enrutables, pero tienes que pedirla a través de configuración.
Como nota al margen, si obtiene un /56 PD, su prefijo será algo así como 1111:2222:3333:44 00, donde los ceros pueden ser reemplazados por un número hexadecimal de su elección, lo que le permite tener 256 subredes. Una delegación de prefijo /60 es algo así como 1111:2222:3333:444 00, donde el cero puede ser reemplazado por un número hexadecimal, que le da 16 subredes.
Una vez que tenga el prefijo, su dhcpv6 cliente asignará ese prefijo + dirección a su interfaz LAN, y algo como radvd puede Route Advertise ese prefijo en esa interfaz. Otros hosts en la LAN ahora pueden configurar automáticamente sus propias direcciones IPv6 de prefijo + identificador.
Concepto 6
ULA (direcciones locales únicas). Estas son como direcciones privadas de IPv4, pero con un espacio de direcciones mucho más grande. Recuerde Concepto 1: no elija números. Utilice un sitio web para generar aleatoriamente un prefijo ULA. Para las LAN a nivel de empresa, esto permitirá fusionar múltiples LAN en el futuro sin conflicto.
Una vez que tenga un ULA, asignelo a su interfaz LAN. Radvd lo recogerá y lo anunciará al resto de su LAN, dando a todos sus anfitriones una segunda dirección IPv6.
Desea utilizar estos ULA para toda su comunicación LAN. Si desea comunicarse con su impresora o un servidor de medios, coloque sus ULA en el DNS y no en el globalmente enrutable. Las razones son que 1) para Internet residencial, el prefijo globalmente enrutable puede cambiar y 2) si su ISP se cae por alguna razón, su LAN puede funcionar sin interrupciones.
Ahora que hemos pasado por los conceptos, vamos a configurar la LAN.
-
Configure su router para obtener IPv6 de su ISP. La mayoría de las distribuciones de Linux tendrán instrucciones para configurar IPv6, RA y PD en su enrutador Linux.
-
Configure su LAN con un ULA. Ahora sus anfitriones tendrán una dirección globalmente enrutable y una dirección local.
-
Para los servidores en su LAN con los que desea hablar, agregue su ULA al DNS LAN. Diablos, incluso podría agregar ULA al DNS global, pero si su Internet se apaga, eso dejará de funcionar.
-
Para sus servidores visibles externamente, utilice el servicio de tipo dyndns y actualícelo con la dirección globalmente enrutable. Internet residencial rotará el prefijo a lo largo del tiempo (el prefijo es dinámico), por lo que esto es lo mismo que ejecutar un servidor en un IPv4 dinámico residencial.
-
Para firewall, suelte todos los paquetes entrantes de forma predeterminada. Para servidores visibles externamente, puede coincidir solo con los últimos 64 bits, de modo que los prefijos cambiantes no afecten a las reglas del firewall. Para los nftables, la sintaxis para que coincida con ssh y ping en el identificador ipv6 es
chain forward {
type filter hook forward priority 0;
policy drop;
# allow forwarding of some incoming connections to ::aaaa:bbbb:cccc:dddd
ip6 daddr & ::ffff:ffff:ffff:ffff == ::aaaa:bbbb:cccc:dddd tcp dport 22 accept
ip6 daddr & ::ffff:ffff:ffff:ffff == ::aaaa:bbbb:cccc:dddd icmpv6 type {echo-request} accept
ct state vmap { established : accept, related : accept, invalid : drop }
}
- Por alguna razón, la gente está recibiendo erróneamente que ULA podría ser utilizado para dispositivos IoT. Pensemos en esto un minuto.
Si un dispositivo IoT debe desconectarse completamente de Internet, en IPv4, alejaría su propia subred de sus otros hosts, sin una ruta a Internet. En este caso de uso, solo la subred ULA se comportaría exactamente de la misma manera.
Sin embargo, para los dispositivos IoT que necesitan que Internet funcione, por ejemplo, un SmartTV o SmartFridge, tener solo un ULA significa que el dispositivo haría una solicitud de su ULA al router, el router tendría que hacer NAT (sustituya el ULA del dispositivo a su propia dirección enrutable, y cuando la respuesta regrese, reenviarlo al dispositivo; también conocido como fuente nat) para reenviar los paquetes de respuesta al dispositivo. ¡Esto agrega un NAT innecesario en el camino! También podría permitirle tener una dirección IPv6 globalmente enrutable y protegerla bloqueando las conexiones entrantes en el firewall, como todos los demás dispositivos de su LAN.
- Privacidad. La EUI-64 debe dar a las solicitudes entrantes una dirección estable a alcanzar. En un dispositivo habilitado para IPV6 configurado correctamente (portátiles, teléfonos) las solicitudes salientes se saldrían a través de una dirección de "privacidad" temporal, generada aleatoriamente, que cambia con el tiempo. Recuerde el concepto 2. Después de una hora más o menos de navegación, dichos clientes tendrán docenas de direcciones temporales de SLAAC para la privacidad. Esto puede no ser cierto con los dispositivos de tipo SmartTV.