Introdução
No IPv6, o DHCPv6 é utilizado não apenas para fornecer endereços IP a hosts, mas também para distribuir outras informações de configuração, como DNS, domínio de busca e tempos de lease. O que é fundamental entender, no entanto, é que o DHCPv6 não atua sozinho, ele depende do suporte e da interação com os anúncios enviados pelos roteadores IPv6.
Ao contrário do IPv4, onde o DHCP é suficiente para atribuir IP, gateway e DNS, no IPv6 essa divisão de responsabilidades é mais explícita. O roteador é quem anuncia o prefixo da rede por meio das mensagens ICMPv6 Router Advertisement (RA), indicando aos hosts qual bloco de endereços está disponível para autoconfiguração. Além disso, também é o roteador quem fornece o endereço link-local que será usado como default gateway. Ou seja, mesmo que o host obtenha um IPv6 válido via DHCPv6, ele não saberá como rotear pacotes para fora da rede se não tiver recebido o RA do roteador.
No modo Stateful, o DHCPv6 controla toda a atribuição de endereços, os hosts solicitam um endereço e o servidor responde. Mas, mesmo nesse modelo, o roteador precisa continuar enviando os RAs com a flag "Managed" ativada, informando que o host deve usar DHCPv6 para obter seu endereço. Se o roteador não enviar RAs, ou se estiverem mal configurados, o host não vai conseguir identificar o gateway padrão, e o tráfego para fora da rede local falhará, apesar de ter um IPv6 válido.
Já no modo Stateless (SLAAC com DHCPv6-Stateless), os endereços são construídos pelos próprios hosts a partir do prefixo anunciado pelo roteador, e o DHCPv6 entra apenas para complementar a configuração com informações como servidores DNS. Nesse modelo, a importância do roteador é ainda mais evidente, sem ele, não há prefixo, não há gateway e não há conectividade externa.
Portanto, mesmo que um servidor DHCPv6 esteja corretamente configurado e funcional, a ausência de anúncios de roteador corretamente formatados quebra toda a funcionalidade da pilha de rede do host. O DHCPv6, isoladamente, não é capaz de sustentar a operação IPv6, ele precisa da sinergia com o roteador para garantir que os dispositivos saibam seu endereço, quem é o gateway e qual prefixo está em uso na rede. Essa separação de funções é uma das mudanças mais estruturais que o IPv6 traz em relação ao modelo anterior.
Usando o radvd para Suprir a Ausência de Router Advertisement em Ambientes DHCPv6
Em uma rede IPv6, o anúncio do gateway padrão e do prefixo de rede normalmente é feito através de mensagens Router Advertisement (RA), enviadas periodicamente por roteadores. Essas mensagens fazem parte do protocolo Neighbor Discovery (ND) e são essenciais para que os dispositivos consigam configurar automaticamente informações básicas da rede, mesmo quando DHCPv6 está em uso.
No entanto, há casos em que o roteador não envia RA. Pode ser por limitação do equipamento, por configuração incorreta ou até por design, em redes controladas com mais rigidez. Quando isso acontece, os clientes podem receber um endereço IPv6 via DHCPv6, mas ainda assim não conseguem acessar a rede corretamente por não saberem qual é o gateway padrão ou o prefixo válido.
Para resolver isso, é possível instalar o radvd
(Router Advertisement Daemon) em um servidor Linux da rede. O radvd
é um serviço que implementa o envio de pacotes RA, permitindo simular o comportamento de um roteador. Ele é altamente configurável, podendo anunciar prefixos com ou sem o bit de autoconfiguração automática (SLAAC), indicar o gateway padrão e definir preferências de roteamento.
Na prática, isso significa que mesmo que o serviço de DHCPv6 não envie RA, você pode complementar o serviço DHCPv6 com o radvd
, garantindo que os clientes recebam todas as informações necessárias para se comunicarem corretamente na rede IPv6. Essa solução é particularmente útil em ambientes de testes, laboratórios ou redes com infraestrutura não padronizada.
Relay Agent
No contexto do IPv6, o roteador não realiza o mesmo papel que tinha no IPv4 quando usado com DHCP relay (IP Helper-Address). No IPv6, o modelo de configuração é diferente e essa lógica de encaminhar mensagens DHCPv6 entre redes exige outro tipo de suporte.
Embora o roteador IPv6 possa sim rotear pacotes entre redes normalmente (como qualquer roteador), ele não repassa diretamente solicitações DHCPv6 de uma rede para outra da forma que fazíamos com DHCPv4. Isso porque o DHCPv6 trabalha com multicast (ff02::1:2
) ao invés de broadcast, e esse multicast é do tipo link-local, ou seja, não atravessa roteadores.
Se você quiser permitir que hosts em uma rede se comuniquem com um servidor DHCPv6 que está em outra rede, você precisa de um relay-agent DHCPv6, geralmente configurado no próprio roteador. Esse agente escuta as mensagens dos clientes as repassa para o servidor DHCPv6 em outra rede, usando unicast. A resposta do servidor é então encaminhada de volta pelo relay ao host original.
Portanto, o roteador IPv6 não encaminha nativamente pacotes DHCPv6 entre redes como o IPv4 fazia com ip helper-address
. Para isso, é necessário configurar um agente relay compatível com DHCPv6, o que nem todo roteador suporta, principalmente se for mais simples. Em ambientes Cisco, por exemplo, há comandos específicos como ipv6 dhcp relay destination
que ativam essa funcionalidade. Em Linux, o dhcrelay
do ISC pode operar em modo IPv6.