ping6.net
Fundamentos

DHCPv6 vs SLAAC: Cómo los dispositivos obtienen direcciones IPv6

Entiende las dos formas en que los dispositivos obtienen direcciones IPv6: SLAAC usa anuncios de router, DHCPv6 usa un servidor. Aprende cuándo usar cada uno.

ping6.net14 de diciembre de 20248 min read
IPv6DHCPv6SLAACautoconfiguraciónanuncio de router

Cuando un dispositivo se une a una red IPv6, necesita una dirección. A diferencia de IPv4 donde DHCP es el enfoque estándar, IPv6 ofrece dos mecanismos: SLAAC (Autoconfiguración de dirección sin estado) y DHCPv6. Entender cuándo usar cada uno es esencial para ingenieros de redes.

TL;DR - Resumen rápido

Puntos clave:

  • SLAAC es sin estado y automático vía Router Advertisements — no se necesita servidor
  • DHCPv6 proporciona control centralizado y rastreo de direcciones como DHCPv4
  • Los flags M y O en Router Advertisements controlan qué método usar

Ir a: SLAAC para configuración automática, DHCPv6 para gestión centralizada, o Cuál usar cuándo para guía de implementación.

SLAAC: Autoconfiguración de dirección sin estado#

SLAAC permite que los dispositivos se configuren solos sin mantener estado en la red. El router envía periódicamente mensajes de anuncio de router (RA) que contienen el prefijo de red, y los dispositivos generan sus propias direcciones.

Cómo funcionan los anuncios de router#

Los routers hacen multicast de mensajes RA a ff02::1 (multicast de todos los nodos) cada 200 segundos por defecto. Los dispositivos también pueden solicitar un RA inmediatamente enviando una solicitud de router (RS) a ff02::2 (multicast de todos los routers).

Un RA contiene:

  • Prefijo de red (ej., 2001:db8::/64)
  • Dirección de puerta de enlace predeterminada
  • Tiempo de vida del prefijo (válido y preferido)
  • Flags M y O (explicados abajo)

El dispositivo combina el prefijo anunciado con un ID de interfaz de 64 bits autogenerado para crear su dirección.

Generación de ID de interfaz#

Existen dos métodos comunes:

EUI-64 (Identificador único extendido modificado) Deriva el ID de interfaz de la dirección MAC. Para MAC 00:11:22:33:44:55:

  1. Inserta ff:fe en el medio: 00:11:22:ff:fe:33:44:55
  2. Voltea el 7º bit: 02:11:22:ff:fe:33:44:55
  3. Resultado: 2001:db8::211:22ff:fe33:4455

Esto es determinístico pero revela identidad de hardware, creando preocupaciones de privacidad.

Extensiones de privacidad (RFC 4941) Genera IDs de interfaz aleatorios. Los sistemas operativos modernos crean direcciones temporales que cambian periódicamente (diariamente en la mayoría de los sistemas). El dispositivo mantiene tanto una dirección estable (para conexiones entrantes) como direcciones temporales (para conexiones salientes).

# Linux: Ver tipos de dirección
ip -6 addr show eth0
 
# Verás scope global para direcciones estables
# y scope global temporary para direcciones de privacidad

Qué proporciona SLAAC#

SLAAC maneja:

  • Asignación de dirección IPv6
  • Puerta de enlace predeterminada
  • Longitud de prefijo

Lo que no proporciona por defecto:

  • Servidores DNS
  • Lista de búsqueda de dominio
  • Servidores NTP

Opción RDNSS (Servidor DNS recursivo) RFC 8106 permite que los routers anuncien servidores DNS en mensajes RA. La mayoría de los sistemas modernos soportan esto, eliminando la necesidad de DHCPv6 en redes simples.


DHCPv6: Configuración administrada#

DHCPv6 funciona de manera similar a DHCPv4: los clientes solicitan configuración de un servidor. Opera en dos modos.

DHCPv6 con estado#

El servidor asigna direcciones y rastrea qué cliente tiene qué dirección. Los clientes realizan un intercambio de cuatro mensajes:

  1. Solicit: El cliente solicita configuración
  2. Advertise: El servidor ofrece una dirección
  3. Request: El cliente acepta la oferta
  4. Reply: El servidor confirma la asignación

Las direcciones se arriendan con tiempos de vida preferidos y válidos, requiriendo renovación.

DHCPv6 sin estado#

Los dispositivos usan SLAAC para direcciones pero consultan DHCPv6 para opciones adicionales como servidores DNS, nombre de dominio o servidores NTP. El servidor no rastrea direcciones, de ahí «sin estado».

Flags M y O#

Los anuncios de router contienen dos flags críticos:

Flag M (Configuración de dirección administrada) Cuando está en 1, los dispositivos deben usar DHCPv6 para obtener direcciones. Las direcciones SLAAC aún pueden generarse dependiendo del flag A en la información del prefijo.

Flag O (Otra configuración) Cuando está en 1, los dispositivos deben usar DHCPv6 para obtener opciones adicionales (DNS, NTP, etc.) pero no direcciones.

Combinaciones de flags:

  • M=0, O=0: Solo SLAAC (usa RDNSS para DNS)
  • M=0, O=1: SLAAC + DHCPv6 sin estado
  • M=1, O=0: DHCPv6 para direcciones (configuración rara)
  • M=1, O=1: DHCPv6 para direcciones y opciones

Comparación SLAAC vs DHCPv6#

CaracterísticaSLAACDHCPv6
Asignación de direcciónAutomática (prefijo + ID de interfaz)Asignada por servidor
Estado en servidorNingunoCon estado rastrea enlaces
Configuración DNSRDNSS en RA (RFC 8106)Opción 23 (servidores DNS)
Rastreo de direccionesNo posibleVisibilidad completa
Complejidad de clienteMínimaRequiere cliente DHCPv6
Modo de falloContinúa funcionandoPunto único de fallo
Delegación de prefijoNo soportadoSoportado (DHCPv6-PD)

Configuraciones comunes#

Solo SLAAC (con RDNSS)#

Mejor para redes simples donde no se requiere rastreo de direcciones. Ejemplo radvd.conf en Linux:

interface eth0 {
    AdvSendAdvert on;
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous on;
    };
    RDNSS 2001:4860:4860::8888 2001:4860:4860::8844 {
        AdvRDNSSLifetime 300;
    };
};

Esta configuración proporciona todo lo que la mayoría de los clientes necesitan sin DHCPv6.

SLAAC + DHCPv6 sin estado#

Usa cuando RDNSS no está soportado o cuando se necesitan opciones adicionales. Establece flag O en radvd:

interface eth0 {
    AdvSendAdvert on;
    AdvOtherConfigFlag on;  # O=1
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous on;
    };
};

El servidor DHCPv6 proporciona DNS y otras opciones pero no asigna direcciones.

Solo DHCPv6 (Administrado)#

Las empresas a menudo prefieren esto para responsabilidad y control de acceso. Establece flag M:

interface eth0 {
    AdvSendAdvert on;
    AdvManagedFlag on;  # M=1
    AdvOtherConfigFlag on;  # O=1
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous off;  # No usar SLAAC
    };
};

Nota: Algunos clientes aún generarán direcciones link-local y pueden crear direcciones SLAAC a pesar de AdvAutonomous off. Las políticas de seguridad de red no deben depender únicamente de deshabilitar SLAAC.


Cuál usar cuándo#

Usa SLAAC cuando:

  • Redes pequeñas a medianas
  • Los dispositivos son confiables
  • No se requiere rastreo de direcciones
  • Se prioriza la simplicidad
  • Todos los clientes soportan RDNSS

Usa DHCPv6 cuando:

  • Necesitas gestión de direcciones centralizada
  • El cumplimiento requiere registro de direcciones
  • Requieres delegación de prefijo (ISP a router de cliente)
  • Necesitas proporcionar opciones complejas más allá de DNS
  • Redes Windows (históricamente mejor soporte DHCPv6)

Enfoque híbrido (SLAAC + DHCPv6 sin estado):

  • Buen compromiso para muchas redes
  • Resiliente (SLAAC funciona si DHCPv6 falla)
  • Proporciona flexibilidad para opciones adicionales

Solución de problemas de asignación de direcciones#

El dispositivo solo tiene link-local (fe80::/10) No se recibieron anuncios de router. Verifica:

# Linux: Captura RAs
tcpdump -i eth0 'icmp6 && ip6[40] == 134'
 
# Verifica que el router esté enviando RAs
radvdump

El dispositivo tiene dirección SLAAC pero sin DNS El router no está enviando RDNSS, o el cliente no lo soporta. Verifica contenido de RA:

radvdump | grep RDNSS

Si falta, añade RDNSS a la configuración del router o habilita DHCPv6 sin estado.

DHCPv6 no funciona Verifica que el flag M u O esté establecido en RAs:

radvdump | grep -E "M flag|O flag"

Verifica que el servidor DHCPv6 esté ejecutándose y accesible en puerto UDP 547:

# Lado del servidor
ss -ulnp | grep 547
 
# Lado del cliente
tcpdump -i eth0 port 547

Múltiples direcciones en interfaz Esto es normal. Podrías ver:

  • Dirección link-local (siempre presente)
  • Dirección estable SLAAC (EUI-64)
  • Direcciones temporales SLAAC (extensiones de privacidad)
  • Dirección DHCPv6 (si usas DHCPv6 con estado)

Todas son válidas; el SO selecciona la dirección de origen apropiada basándose en RFC 6724.


Artículos relacionados#

La mayoría de las redes modernas funcionan bien con SLAAC + RDNSS para simplicidad, o SLAAC + DHCPv6 sin estado para compatibilidad más amplia. Reserva DHCPv6 completamente administrado para entornos con requisitos específicos de cumplimiento o registro. Elijas lo que elijas, documenta tu decisión y configúralo consistentemente a través de tu red.

Preguntas frecuentes#

¿Puedo usar SLAAC y DHCPv6 al mismo tiempo?

Sí. Esto se llama enfoque híbrido. Los dispositivos pueden obtener sus direcciones vía SLAAC y configuración adicional (como servidores DNS) vía DHCPv6 sin estado. Muchas redes usan esta combinación para obtener los beneficios de ambos métodos.

¿Qué método es más seguro?

Ni SLAAC ni DHCPv6 es inherentemente más seguro. Ambos pueden ser vulnerables a anuncios de router maliciosos o servidores DHCPv6 maliciosos. La seguridad proviene de una segmentación de red adecuada, RA Guard, DHCPv6 Shield y reglas de firewall, no de la elección del método de asignación de direcciones.

¿SLAAC funciona sin router?

No. SLAAC requiere anuncios de router para proporcionar el prefijo de red. Sin un router enviando RAs, los dispositivos no configurarán direcciones IPv6 globales vía SLAAC. Solo tendrán direcciones link-local (fe80::/10).

¿Por qué algunos sistemas operativos prefieren SLAAC sobre DHCPv6?

SLAAC es más simple, sin estado y está integrado en la especificación IPv6 desde el principio. Requiere menos infraestructura y configuración. Algunos vendedores de SO (notablemente Apple) priorizaron el soporte SLAAC porque se alinea con la filosofía de diseño IPv6 de autoconfiguración.