KEA – Configurando DHCP para IPv6

Resumo

No post anterior, instalamos e configuramos o ISC-KEA DHCPv4. Agora, vamos ativar o KEA DHCPv6, que funciona de maneira diferente e traz alguns desafios extras. Se você já seguiu o primeiro post, essa configuração será tranquila. Se ainda não viu, recomendo ler antes, pois este guia dá continuidade ao setup anterior.

Instalação e Configuração do isc-kea-dhcp6

A instalação é rápida, fácil e direta. No DHCP Server, basta instalar o isc-kea-dhcp6 e mover o arquivo de configuração para backup na pasta root.

Como ainda não configuramos IPv6, vamos definir manualmente um endereço dentro do prefixo fd00:1:1:cafe::/64 para nossa VLAN10.

# Instalação do daemon para DHCPv6
apt-get install isc-kea-dhcp6

# Mova o arquivo de configuração para a pasta root
mv /etc/kea/kea-dhcp6.conf .

# Configure um endereço IPv6 na interface vlan10
ip addr add fd00:1:1:cafe::1/64 dev vlan10

A configuração do arquivo para DHCPv6 segue o mesmo padrão do arquivo para DHCPv4, mas há algumas diferenças importantes:

  • Diferente do DHCPv4, o DHCPv6 não pode entregar rota padrão. Isso não é uma limitação do KEA, mas sim uma característica do protocolo IPv6. No IPv6, a rota padrão é anunciada pelo Router Advertisement (RA), e não pelo DHCP. Portanto, o KEA DHCPv6 não possui a opção “routers” no option-data.;
  • DHCPv4 considera que as requisições que ele recebe diretamente em uma interface pertencem a subnet na qual há um endereço dela configurado na interface. KEA DHCPv6 trabalha um pouco diferente, controlando explicitamente quais endereços devem ser entregues aos clientes, através da inclusão de “interface”: “eth0” na definição da subnet;
  • Em uma rede em produção, servir requisições diretamente na interface não é o comum, sendo que a maioria das redes usa requisições encaminhadas (DHCP Relay). Nestes casos, é necessário especificar uma interface-id na definição da subnet, conforme o identificar enviado pelo relay, sendo que também podemos incluir o endereço IPv6 do relay. Esse detalhe é muito importante, mas não neste momento, onde não estamos utilizando a funcionalidade DHCP Relay;
  • A option-data “domain-name-servers”, que no DHCPv4 indica servidores DNS, no DHCPv6 é a option-data “dns-servers”;
  • A option-data “domain-name”, que no DHCPv4 indica o nome de domínio ao cliente, bem, essa eu não achei para DHCPv6. Caso encontre, atualizarei o post, e, se você sabe, compartilhe nos comentários.

Novamente recomendo que digite o arquivo abaixo ao invés de apenas copiar e colar, pois isso ajudará muito em entender a sintaxe do arquivo, que convenhamos não é tão intuitiva assim. Ao final, inicie ou reinicie o daemon.

# Arquivo /etc/kea/kea-dhcp6.conf
"Dhcp6": {
    "interfaces-config": {
        "interfaces": ["vlan10"]
    },
    "lease-database": {
        "type": "memfile",
        "persist": true,
        "name": "/var/lib/kea/kea-leases6.csv",
        "lfc-interval": 3600
    },
    "valid-lifetime": 31680,
    "preferred-lifetime": 28800,
    "option-data": [
        {
            "name": "dns-servers",
            "data": "fd00:1:1:cafe::1"
        }
    ],
    "subnet6": [
        {
            "id": 1,
            "subnet": "fd00:1:1:cafe::/64",
            "interface": "vlan10",
            "pools": [ { "pool": "fd00:1:1:cafe:face::/80" } ]
            // Add reservations here
        }
        // Add subnets here
    ]
}
}

# Antes de reiniciar o serviço, abra outro terminal e monitore o log
journalctl -f
# Observe no log o que acontece na reinicialização do serviço, notando caso algum erro surja.

# Reinicio do serviço - The Old Way
/etc/init.d/isc-kea-dhcp6-server restart
# OU
# systemd way
systemctl restart isc-kea-dhcp6-server.service

Bom, reiniciado o serviço, e considerando que não houve erro, agora é hora de configurar nosso “Server B“, de modo que ele busque configuração de IPv6 por DHCP. Vamos conferir ANTES que vlan10 não possui IPv6 configurado, depois vamos alterar o arquivo YAML do netplan, aplicar as configurações, e confirmar que obtemos um IPv6 na vlan10 por DHCPv6.
Eu recomendo que você mantenha o log aberto no “DHCP Server“, bem como abra um tcpdump na interface vlan10. para ver a troca de pacotes DHCPv6

# Verificando que não há IPv6 configurado
ip addr show

# Alterando a linha referente ao dhcp6 em vlan10
vim /etc/netplan/default.yaml
  vlans:
    vlan10:
      dhcp6: true

# Aplicando as configurações
netplan try 

# Confirma que "Server B" obteve um IPv6 por DHCPv6
ip addr show

# Em "DHCP Server" recomendo que monitore o log
journalctl -f

# E também análise o tcpdump
tcpdump -i vlan10 -n

Considerando que seguiu exatamente o post, a interface vlan10 deverá agora ter um IPv6 configurado. Tente dar um ping no IPv6 do “DHCP Server“.

ping fd00:1:1:cafe::1
PING fd00:1:1:cafe::1(fd00:1:1:cafe::1) 56 data bytes
^C
--- fd00:1:1:cafe::1 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 6126ms

Parece que não deu certo, não é? Mas só parece. Veja novamente o IPv6 obtido na vlan10, mas agora repare no tamanho do prefixo. Um /128, certo?
Não ter funcionado está completamente de acordo com o protocolo IPv6, pois é esperado que o DHCPv6 entregue um IPv6/128 ao cliente. É função do RA (Router Advertisement) complementar o setup, fornecendo o gateway para o cliente, bem como outras opções que permitirão que o ping entre “Server B” e “DHCP Server” funcione.
Poderíamos agora mesmo instalar um radvd no “DHCP Server” de modo a suprir as lacunas para que haja conectividade, mas, embora muito simples de fazer, há um pouco de explicação técnica por trás, então considero que é melhor nos satisfazermos com a função do DHCPv6, que é entregar um IPv6 e não garantir a conectividade.

Finalizando

Imagino que deva ser um pouco frustrante não finalizar o aprendizado com um teste de conectividade com sucesso, mas é importante que você compreenda que o DHCPv6 funciona de forma bem diferente do DHCPv4, mas calma. No próximo post, veremos como instalar e configurar o Stork (interface web do KEA) e, em breve, voltaremos com o setup do RA para fechar a configuração do DHCPv6 e finalmente termos conectividade IPv6.

Gostou do post? Odiou? Comente abaixo e compartilhe com a comunidade!

Referências:

Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima