quarta-feira, 9 de setembro de 2015

Configuração de Servidor DHCPv6 no Linux

Olá Pessoal,

Em outro artigo intitulado "Configuração de Servidor DHCP: Cisco x Linux" explico ao leitor como utilizar o serviço ISC-DHCP em distribuições Linux baseadas no Debian para configurar um servidor DHCP em redes IPv4. Neste artigo trago os passos necessários para fazer essa mesma configuração, mas agora no contexto de uma rede IPv6 (bem simples) apresentada na topologia abaixo. Uma primeira observação relevante é que o ISC-DHCP somente pode ser executado para IPv4 ou IPv6 isoladamente, ainda que seja possível executar dois daemons parametrizados para IPv4 e IPv6.




1. Instalação do Serviço DHCP

A primeira etapa consiste na instalação do pacote isc-dhcp-server para que o Linux possa ser posteriormente configurado como servidor DHCP na rede IPv6. Como de costume, essa tarefa é simples e rápida através do APT (Debian):

apt-get install isc-dhcp-server

2. Definir o DHCPv6 nas Interfaces

A segunda etapa é informar em qual(is) interface(s) o servidor irá responder requisições dos clientes da rede, através da edição do arquivo /etc/default/isc-dhcp-server. É também nesse arquivo que apontaremos para outro arquivo específico de configuração do serviço DHCPv6 e definiremos a opção -6 para ativar o serviço DHCP na modalidade IPv6.

# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server

#
# This is a POSIX shell fragment
#

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
DHCPD_CONF=/etc/dhcp/dhcpd6.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
DHCPD_PID=/var/run/dhcpd6.pid

# Additional options to start dhcpd with.
OPTIONS="-6"

# On what interfaces should the DHCP server serve DHCP requests?
INTERFACES="eth1"

3. Configurar o Servidor DHCPv6

A etapa mais importante consiste na configuração do servidor DHCPv6 propriamente dito, tarefa que é realizada através da criação e edição do arquivo /etc/dhcp/dhcpd6.conf, seguindo o caminho informado previamente na etapa anterior. Cabe observar que para o escopo IPv6 ser válido, é necessário que a interface do servidor esteja configurada com um endereço válido na mesma rede dos demais endereços que serão distribuídos dinamicamente para os clientes. Para exemplificar definirei um intervalo com endereços que variam seu final de dddd::100 até dddd::199, apenas porque o quarteto "dddd" faz lembrar de DHCP e facilita a identificação dos endereços atribuídos dinamicamente. Também utilizarei os endereços IPv6 de DNS públicos da Google e o domínio "labcisco.com.br". 

###--- /etc/dhcp/dhcpd6.conf

ddns-update-style none;
default-lease-time 86400;
max-lease-time 86400;
authoritative;

subnet6 2001:db8:cafe::/64
{
    range6 2001:db8:cafe::dddd:100 2001:db8:cafe::dddd:199;
    option dhcp6.name-servers 2001:4860:4860::8888, 2001:4860:4860::8844;
    option dhcp6.domain-search "labcisco.com.br";

    # Reserva de Emprestimo (Opcional)
    host NOME
    {
        host-identifier option dhcp6.client-id 00:01:00:01:3a:ff:ba:e2:6b:b1:1f:01:23:45;
        fixed-address6 2001:db8:0::ffff:0001;
    } 

}

Obs.: A configuração do endereço de gateway não é mais realizada através do servidor DHCP, mas por meio das mensagens Router Advertisement (ICMPv6 Tipo 134) enviadas pelos roteadores. O leitor encontra mais informações sobre a configuração do roteador em outro artigo intitulado "Anúncio de Prefixos IPv6 em Roteadores Linux". Ao utilizar um servidor DHCPv6 de natureza stateful na rede, é importante ativar as flags AdvManagedFlag e AdvOtherConfigFlag na configuração do arquivo /etc/radvd.conf, sendo que a flag AdvAutonomous pode ser desativada (off) para impedir a autoconfiguração de endereços (SLAAC).

4. Reserva de Empréstimo (Opcional) 

Opcionalmente o administrador da rede pode reservar/fixar o lease (empréstimo) de um endereço IPv6 específico para um determinado cliente, conforme destacado em azul na configuração anterior. No contexto do IPv4 essa ação era realizada através da associação de um IPv4 com o endereço físico (MAC) do cliente, mas no IPv6 essa associação mudou. Agora a reserva é feita através da associação do endereço IPv6 com o identificador único (DUID) do cliente DHCP que é um número grande de 14 bytes. Em clientes rodando o Linux é possível localizar o DUID no arquivo /var/lib/dhcpv6/dhcp6c_duid. Em clientes Windows é possível identificar o DUID através do comando "ipconfig /all"

5. Manipulação do Serviço DHCPv6

Antes de iniciar o serviço para realizar a distribuição dinâmica de endereços IPv6 via DHCP é necessário criar o arquivo /var/lib/dhcp/dhcpd6.leases para armazenar os logs com os registros dos empréstimos realizados. 

root@DHCPv6-Server:/# touch /var/lib/dhcp/dhcpd6.conf.leases
root@DHCPv6-Server:/# service isc-dhcp-server start
[ ok ] Starting ISC DHCP Server: dhcpd.

Obs.: Caso o leitor tenha interesse nos procedimentos de configuração de um servidor DHCPv6 em roteadores Cisco, recomendo a leitura do artigo "Servidores DHCPv6 em Redes IPv6". Aqueles interessados em se aprofundar no conhecimento do protocolo IPv6 como um todo, não podem deixar de ler meu livro intitulado "IPv6 - O Novo Protocolo da Internet".

Façam seus testes...

Samuel.

9 comentários:

  1. Olá Professor. Primeiramente, quero agradecer pelos excelentes materiais disponibilizados em seu blog e, claro, pelos excelentes livros. "Segundamente", gostaria de uma luz para configurar seguinte cenário:

    http://s23.postimg.org/5kqalzi8r/Captura_de_tela_de_2015_09_10_19_15_20.png

    Os clientes ubuntu e linux lite estão pegando 3 endereços IPv6, 1 endereço dado servidor Debian e os outros 2 são endereços: global dinamic e global dinamic temporary; lembrando que no roteador apenas ativei o roteamento IPv6 e ativei as flags AdvManagedFlag e AdvOtherConfigFlag. Outro detalhe é que estas mesmas flags também estão ativas no servidor. Está certo mesmo pegar 3 endereços IPv6?

    ResponderExcluir
    Respostas
    1. Sim, está correto. Além do endereço IPv6 dinâmico aprendido pelo servidor DHCPv6 stateful, também existe o endereço autoconfigurado (SLAAC) gerado a partir dos anúncios RA do roteador. Se você estiver usando as extensões de privacidade no seu Linux, então serão gerados dois endereços automáticos, sendo que um deles possui o host-ID aleatório (temporário) e outro deles possui o host-ID gerado a partir do endereço MAC da placa de rede (EUI-64).

      Excluir
    2. Obrigado professor pelos esclarecimentos.

      Excluir
  2. Com essa configuração é possível usar v6 e v4 no mesmo server?

    ResponderExcluir
    Respostas
    1. O ISC-DHCP-SERVER somente permite que o serviço sirva endereços de uma família, seja IPv4 ou IPv6. No entanto, é possível executar uma segunda instância do daemon com a opção "-6".

      Excluir
  3. Segui seu artigo e funcionou perfeitamente, mas tambpem gostaria de servir ipv4 como faz?

    ResponderExcluir