Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

05 - DHCPv6 (Stateful vs Stateless)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

DHCPv6 (Stateful vs Stateless)

1. Definição e Motivação

O DHCPv6 (RFC 8415, revisão mais recente; originalmente RFC 3315) é o equivalente IPv6 do DHCPv4. Sua função é atribuir endereços IPv6 e/ou outras configurações (DNS, NTP, domínios de busca) a hosts em uma rede IPv6. Ao contrário do DHCPv4, no entanto, o DHCPv6 não é a única forma de atribuir IPs em IPv6 — existe também o SLAAC (StateLess Address AutoConfiguration, RFC 4862).

Essa dualidade gera dois modos operacionais:

  • Stateful DHCPv6: servidor atribui IPs explicitamente, mantém tabela de leases (como DHCPv4).
  • Stateless DHCPv6: servidor apenas fornece configurações extras (DNS, domínio); IPs são obtidos via SLAAC.

A escolha entre os modos é feita por flags anunciadas em Router Advertisements (RA, RFC 4861).

2. SLAAC vs DHCPv6: Comparação

SLAAC

  • Host recebe prefixo /64 via RA do roteador.
  • Host gera o próprio ID de interface (EUI-64 ou aleatório, RFC 7217) e combina com o prefixo.
  • Resultado: IP como 2001:db8:10::a00:27ff:fe4e:66d.
  • Não há tabela central de leases — o roteador não sabe quais IPs estão em uso.
  • Rápido, descentralizado, mas sem controle granular.

DHCPv6 Stateful

  • Servidor DHCPv6 mantém pool de endereços e tabela de leases.
  • Host obtém IP específico do servidor, identificado por DUID (DHCP Unique IDentifier).
  • Suporta reservas estáticas, políticas, logs.
  • Mais lento que SLAAC, mas com controle total.

DHCPv6 Stateless

  • Host obtém IP via SLAAC.
  • Host consulta servidor DHCPv6 apenas para DNS, NTP, domínios de busca.
  • Mistura o melhor dos dois mundos: autoconfiguração de IP + configuração central de serviços.

3. Flags no Router Advertisement

O roteador IPv6 envia RAs ICMPv6 (tipo 134) periodicamente. Um campo de flags no RA contém:

Flag Significado
M (Managed) 1 = clientes devem usar DHCPv6 stateful para obter IP
O (Other Config) 1 = clientes devem usar DHCPv6 para obter outras configurações (DNS, NTP)
A (Autonomous) Por prefixo; 1 = prefixo pode ser usado para SLAAC

Combinações Práticas

Flags Modo Operacional
M=0, O=0 Apenas SLAAC, sem DHCPv6 (DNS via RA option, RFC 8106)
M=0, O=1 Stateless DHCPv6 (SLAAC + DHCPv6 para DNS)
M=1, O=0 Stateful DHCPv6 puro (sem SLAAC)
M=1, O=1 Stateful DHCPv6 com DHCPv6 também para outras configs

Configuração no Linux (radvd)

interface eth0 {
    AdvSendAdvert on;
    MinRtrAdvInterval 30;
    MaxRtrAdvInterval 100;
    prefix 2001:db8:10::/64 {
        AdvOnLink on;
        AdvAutonomous on;        # A=1 (permite SLAAC)
    };
    RDNSS 2001:db8:10::53 {     # DNS via RA (RFC 8106)
        AdvRDNSSLifetime 600;
    };
};

Para configurar M=1 (DHCPv6 stateful):

interface eth0 {
    AdvSendAdvert on;
    AdvManagedFlag on;            # M=1
    AdvOtherConfigFlag off;       # O=0
    prefix 2001:db8:10::/64 {
        AdvOnLink on;
        AdvAutonomous off;        # A=0 (sem SLAAC)
    };
};

Configuração no Cisco

interface GigabitEthernet0/0/0
 ipv6 address 2001:DB8:10::1/64
 ipv6 nd managed-config-flag        ! M=1
 ipv6 nd other-config-flag          ! O=1
 ipv6 nd prefix 2001:DB8:10::/64 no-autoconfig   ! A=0

4. DUID (DHCP Unique IDentifier)

Cada cliente DHCPv6 é identificado por um DUID (RFC 8415), não pelo MAC (como no DHCPv4). Existem três formatos:

Tipo Nome Conteúdo
DUID-LLT Link-Layer + Time MAC + timestamp de criação
DUID-EN Vendor Enterprise number + identificador próprio
DUID-LL Link-Layer Apenas MAC (sem timestamp)

O DUID é persistente entre boots. Permite reservas estáveis mesmo se o host mudar de placa de rede.

Reserva Estática no Servidor (ISC Kea)

{
    "subnet6": [
        {
            "subnet": "2001:db8:10::/64",
            "reservations": [
                {
                    "duid": "00:01:00:01:2a:3b:4c:5d:6e:7f",
                    "ip-addresses": ["2001:db8:10::100"]
                }
            ]
        }
    ]
}

5. Mensagens DHCPv6

Mensagem Tipo Função
SOLICIT 1 Cliente procura servidor
ADVERTISE 2 Servidor responde com proposta
REQUEST 3 Cliente confirma escolha
CONFIRM 4 Cliente verifica se ainda está na mesma rede
RENEW 5 Renovação com servidor original
REBIND 6 Renovação broadcast para qualquer servidor
REPLY 7 Resposta final (Ack)
RELEASE 8 Cliente libera IP
DECLINE 9 Cliente detecta IP conflitante
RECONFIGURE 10 Servidor força cliente a renovar
INFORMATION-REQUEST 11 Stateless: pedir apenas opções
RELAY-FORW 12 Relay → servidor
RELAY-REPL 13 Servidor → relay

Fluxo Stateful (4-way)

Cliente                            Servidor DHCPv6
  |                                     |
  | ---- SOLICIT (multicast ff02::1:2)--> | (UDP 547)
  | <-- ADVERTISE (unicast) ------------ |
  | ---- REQUEST (unicast) ------------> |
  | <-- REPLY (unicast) ---------------- |
  |                                     |
  | == Cliente configura IPv6 ==        |

O cliente envia SOLICIT para o endereço multicast ff02::1:2 (All DHCP Relay Agents and Servers). O servidor responde com ADVERTISE em unicast.

Fluxo Stateless

Cliente                         Servidor DHCPv6
  | -- INFORMATION-REQUEST --------> |
  | <-- REPLY (DNS, NTP, domain) -- |

Apenas duas mensagens — mais leve que o stateful.

6. Prefix Delegation (PD)

Um recurso poderoso do DHCPv6 é a Prefix Delegation (RFC 3633): o servidor delega um prefixo /56 ou /48 ao cliente (típico em redes residenciais), em vez de um único /128. O cliente (um roteador doméstico CPE) então subdivide esse prefixo nas suas redes internas via SLAAC ou DHCPv6 local.

ISP ----------> CPE Cliente (delegação)
2001:db8::/56 --> 2001:db8:0:100::/56 atribuído
                   |
                   |--> SLAAC para LAN interna
                   |--> DHCPv6-PD para outra LAN

Configuração CPE (cliente) Cisco

interface GigabitEthernet0/0/0   ! WAN
 ipv6 address dhcp
 ipv6 dhcp client pd ISP-PREFIX
!
interface GigabitEthernet0/0/1   ! LAN
 ipv6 address ISP-PREFIX ::1/64
 ipv6 nd other-config-flag

7. DHCPv6 Relay

Como DHCPv6 usa multicast em vez de broadcast (que não existe em IPv6), o relay DHCPv6 tem lógica ligeiramente diferente do DHCPv4. O relay recebe mensagens DHCPv6 multicast e encaminha via unicast ao servidor usando mensagens RELAY-FORW e RELAY-REPL.

Cisco

interface GigabitEthernet0/0/0
 ipv6 dhcp relay destination 2001:db8:99::5

Linux

dhcrelay -6 -l eth0 -u 2001:db8:99::5

8. Comparativo DHCPv4 vs DHCPv6

Aspecto DHCPv4 DHCPv6
RFC 2131 8415
Portas UDP 67/68 UDP 547 (server), 546 (client)
Discovery Broadcast 255.255.255.255 Multicast ff02::1:2
ID cliente chaddr (MAC) DUID
Atribuição de IP yiaddr IA_NA (Identity Association)
Alternativa a DHCP Nenhuma (estático manual) SLAAC
Flags de configuração Nenhuma M, O, A no RA
Prefix Delegation Não Sim (RFC 3633)
Relay UDP helper, giaddr RELAY-FORW/REPL, link-address

9. Quando Usar Cada Modo

Use SLAAC (stateless, sem DHCP)

  • Redes simples onde controle granular não é necessário.
  • Redes de visitantes (cafés, aeroportos).
  • Quando a meta é apenas conectar.

Use Stateless DHCPv6

  • Maioria das redes corporativas modernas.
  • Quer autoconfiguração rápida + controle centralizado de DNS.
  • Compatível com a maioria dos SOs modernos.

Use Stateful DHCPv6

  • Redes que exigem tracking (auditoria de quem tem qual IP).
  • Ambientes com políticas de IP (reservas para dispositivos críticos).
  • ISPs residenciais que querem atribuir prefixos específicos (via PD).

10. Boas Práticas e Diagnóstico

Inspecionar RAs

# Linux (radvdump)
sudo radvdump

# Verificar flags M/O
sudo ndisc6 -1 eth0

Diagnosticar DHCPv6

# Solicitar manualmente
dhclient -6 -v eth0

# Captura
sudo tcpdump -ni eth0 -vvv 'port 547 or port 546'

# Ver IPs atribuídos
ip -6 addr show dev eth0

Comum Problema: Host não pega IPv6

  1. Verificar se o roteador está enviando RAs: tcpdump -ni eth0 'icmp6 and ip6[40] == 134'.
  2. Verificar flags M/O no RA: radvdump.
  3. Verificar se firewall está bloqueando UDP 547/546.
  4. Testar com dhclient -6 diretamente.

11. Tabela Resumo

Modo Flags RA Quem dá IP Quem dá DNS
SLAAC puro M=0, O=0, A=1 SLAAC RA RDNSS (RFC 8106)
Stateless DHCPv6 M=0, O=1, A=1 SLAAC DHCPv6
Stateful DHCPv6 M=1, O=*, A=0 DHCPv6 DHCPv6

12. Conclusão

O DHCPv6 é uma evolução do DHCPv4 com mais flexibilidade: oferece modos stateful (controle total, como DHCPv4), stateless (apenas configurações extras) e coexiste com SLAAC para autoconfiguração sem servidor. A escolha do modo depende das necessidades operacionais: redes simples ficam bem com SLAAC; redes corporativas tipicamente adotam stateless DHCPv6; ISPs e ambientes com auditoria rigorosa preferem stateful. Compreender as flags M/O/A no RA, o papel do DUID e a operação de prefix delegation é fundamental para qualquer engenheiro que esteja migrando redes para IPv6 — transição já em curso há mais de uma década e que agora se acelera com o esgotamento do IPv4 e o crescimento de redes móveis e IoT.