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

04 - Autoconfiguração SLAAC e DHCPv6

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

Autoconfiguração SLAAC e DHCPv6

A autoconfiguração de endereços IPv6 é um dos pilares que diferenciam o IPv6 do IPv4. Enquanto no IPv4 o DHCP é praticamente obrigatório para atribuição dinâmica, o IPv6 define dois mecanismos distintos: o SLAAC (StateLess Address AutoConfiguration), padronizado na RFC 4862, e o DHCPv6, padronizado na RFC 8415 (que obsoleou a RFC 3315). A escolha entre eles é feita pelo próprio roteador, através de flags contidas nas mensagens ICMPv6 Router Advertisement (RA).

1. SLAAC - StateLess Address AutoConfiguration

O SLAAC, definido na RFC 4862, é o mecanismo padrão de autoconfiguração do IPv6. Nele, o host monta seu próprio endereço IPv6 global combinando o prefixo divulgado pelo roteador (presente no RA) com um Interface ID de 64 bits gerado localmente. O termo "stateless" indica que o roteador não mantém estado sobre quais endereços foram atribuídos a quais hosts - cada host é responsável por garantir a unicidade do seu próprio endereço via DAD.

Fluxo Básico do SLAAC

  1. O host inicializa sua interface e gera o Link-Local (fe80::/10) com base no MAC (EUI-64).
  2. O host envia um Router Solicitation (RS), tipo 133 ICMPv6, para o grupo multicast ff02::2 (todos os roteadores).
  3. O roteador responde com um Router Advertisement (RA), tipo 134 ICMPv6, para ff02::1 (todos os nós) ou unicast para o solicitante.
  4. O RA contém o prefixo /64, os lifetimes (preferred/valid) e flags (M, O, A).
  5. O host combina o prefixo com seu Interface ID e executa DAD (Duplicate Address Detection).
  6. Se não houver duplicata, o endereço é considerado válido e usado.

2. Geração do Interface ID

O Interface ID é composto pelos 64 bits menos significativos do endereço IPv6. Existem três métodos principais para gerá-lo:

A. EUI-64 (RFC 4291 - Appendix A)

Converte o MAC de 48 bits em 64 bits inserindo FFFE no meio e invertendo o bit universal/local (U/L, bit 1 do primeiro byte):

  • MAC: 00:1A:2B:3C:4D:5E
  • Após inserção de FFFE: 00:1A:2B:FF:FE:3C:4D:5E
  • Inverte bit U/L: 02:1A:2B:FF:FE:3C:4D:5E
  • Interface ID: 021A:2BFF:FE3C:4D5E

Vantagem: endereço estável e rastreável. Desvantagem: possibilita tracking do usuário entre redes diferentes, pois o MAC é o mesmo em qualquer rede.

B. Privacy Extensions - RFC 4941 (Temporary Addresses)

Para mitigar o problema de rastreabilidade, a RFC 4941 define endereços temporários aleatórios. O host gera um Interface ID aleatório, troca com frequência (geralmente a cada 24h) e mantém o endereço antigo por um tempo antes de descartá-lo. Habilitado por padrão em Windows, macOS e em muitas distribuições Linux recentes.

C. RFC 7217 - Semantically Opaque Interface ID

Gera um Interface ID estável por rede (diferente em cada SSID/prefixo, mas o mesmo sempre que o host voltar à mesma rede). Combina uma chave secreta do host com o prefixo e outros parâmetros via hash. Resolve o problema de tracking da EUI-64 sem a instabilidade das Privacy Extensions.

3. DHCPv6 e o DUID

O DHCPv6 usa UDP nas portas 546 (cliente) e 547 (servidor) e é padronizado pela RFC 8415. Diferente do DHCPv4, não usa MAC como identificador - em vez disso, define o DUID (DHCP Unique Identifier), um identificador por dispositivo (não por interface) que persiste entre reboots.

Os três tipos de DUID são:

Tipo RFC Construção
DUID-LLT 8415 timestamp + link-layer (MAC)
DUID-EN 8415 enterprise number + identificador específico do fornecedor
DUID-LL 8415 apenas link-layer, sem timestamp

Servidores DHCPv6 usam o DUID para correlacionar leases, e o IAID (Identity Association ID) identifica cada interface dentro do mesmo DUID.

4. SLAAC vs DHCPv6 vs Stateful DHCPv6

As flags M (Managed) e O (Other) no RA determinam o comportamento do host:

Flag M Flag O Comportamento
0 0 SLAAC puro. DNS opcional via RDNSS no RA.
0 1 SLAAC + DHCPv6 Stateless (apenas informações extras, como DNS, SIP, NTP).
1 0/1 DHCPv6 Stateful. O servidor atribui o endereço IPv6 completo.

Stateless DHCPv6 (M=0, O=1): o host obtém o endereço via SLAAC, mas consulta o DHCPv6 para informações de configuração adicional. Útil quando se deseja centralizar a configuração de DNS, domínio de busca e NTP sem manter tabela de leases.

Stateful DHCPv6 (M=1): o DHCPv6 assume totalmente a atribuição de endereços, como no DHCPv4. É necessário quando se deseja log, controle central, integração com DNS dinâmico (DDNS) ou endereços fixos por host (reserva por DUID).

5. Duplicate Address Detection (DAD)

Antes de usar qualquer endereço unicast (link-local ou global), o host envia um Neighbor Solicitation (NS) para o endereço multicast de nó solicitado (ff02::1:ff00:0/104 + últimos 24 bits do endereço). Se receber uma resposta (NA), o endereço é duplicado e não deve ser usado. O DAD é obrigatório e definido na RFC 4862.

Em redes onde o NIC não consegue responder ao NS (ex: switches com proxy L2 bloqueando multicast), pode ocorrer falsa detecção de duplicidade. Para contornar isso, a RFC 7527 define o Optimistic DAD, que permite usar o endereço provisoriamente por um curto período, e a RFC 6957 define o Proxy DAD em equipamentos de infraestrutura.

6. Lifetimes: Preferred e Valid

Cada endereço IPv6 tem dois timers, recebidos no RA:

  • Preferred Lifetime: tempo em que o endereço pode ser usado para novas conexões. Ao expirar, o endereço entra em estado "deprecated" (apenas conexões antigas continuam).
  • Valid Lifetime: tempo máximo que o endereço existe. Ao expirar, é removido da interface.

Valores típicos: preferred = 1 dia (86400s), valid = 7 dias (604800s). Permite renumbering suave: o administrador anuncia um novo prefixo e reduz gradualmente o lifetime do antigo, forçando a migração sem interrupção.

7. RFC 8106 - RDNSS e DNSSL via RA

A RFC 8106 define a opção RDNSS (Recursive DNS Server) no RA, permitindo que o roteador anuncie endereços IPv6 de servidores DNS diretamente, sem necessidade de DHCPv6. Existe também a opção DNSSL (DNS Search List), para definir domínios de busca. Isso elimina a necessidade de DHCPv6 na maioria das redes pequenas e médias.

8. Configuração Prática

Linux (sysctl)

# Habilitar SLAAC (padrão)
sysctl -w net.ipv6.conf.eth0.accept_ra=1
sysctl -w net.ipv6.conf.eth0.autoconf=1

# Habilitar Privacy Extensions (RFC 4941)
sysctl -w net.ipv6.conf.eth0.use_tempaddr=2

# Desabilitar SLAAC e usar DHCPv6 Stateful
sysctl -w net.ipv6.conf.eth0.accept_ra=0
dhclient -6 eth0

Valores de use_tempaddr: 0 = desativado, 1 = gera mas não prefere, 2 = gera e prefere usar.

Cisco IOS

interface GigabitEthernet0/0
 ipv6 address 2001:db8:cafe::/64 eui-64
 ipv6 address autoconfig default
 ipv6 nd prefix 2001:db8:cafe::/64 14400 86400
 ipv6 nd other-config-flag     ! O=1
 ipv6 nd ra interval 200
 ipv6 nd ra dns server 2001:db8:cafe::53 lifetime 3600

Linux (radvd - roteador)

interface eth0 {
  AdvSendAdvert on;
  MaxRtrAdvInterval 200;
  prefix 2001:db8:cafe::/64 {
    AdvOnLink on;
    AdvAutonomous on;
    AdvPreferredLifetime 14400;
    AdvValidLifetime 86400;
  };
  RDNSS 2001:db8:cafe::53 { };
};

9. Comparação SLAAC vs DHCPv6

Característica SLAAC DHCPv6 Stateful
Estado no servidor Nenhum Mantém leases
Escalabilidade Excelente Limitada por servidor
Rastreabilidade do host Baixa (sem logs) Alta (log por DUID)
Endereço fixo por host Não nativo Sim, por reserva DUID
Informação de DNS RDNSS (RA) DHCPv6 options
Complexidade Mínima Média
Uso típico Residencial, ISP móvel Corporativo, datacenter

10. Boas Práticas

  • Em redes de acesso (ISP residencial, Wi-Fi corporativo): prefira SLAAC + RDNSS (RFC 8106). É mais simples, escalável e é o comportamento esperado por dispositivos móveis.
  • Em datacenters e redes corporativas críticas: use DHCPv6 Stateful quando precisar de inventário, integração com IPAM/DDI e logs.
  • Habilite sempre Privacy Extensions (RFC 4941) em endpoints de usuário para evitar tracking.
  • Em switches de acesso, habilite RA Guard (RFC 6105) e DHCPv6 Guard para impedir RA rogue e DHCPv6 rogue.
  • Ajuste os lifetimes para permitir renumbering sem interrupção de serviço.
  • Monitore com ndpmon ou ramond para detectar RAs rogue na rede.