UP | HOME

LPI-2 202-450 Topico 210.1
Configuração por DHCP

Índice

210.1: Configuração DHCP - Objetivos

Peso 2

O candidato deve ser capaz de configurar um servidor DHCP. Este objetivo inclui configurar opções padrão e por cliente, incluindo hosts estáticos e host BOOTP. Também inclui configurar um agente de redirecionamento DHCP e manutenção de um servidor DHCP.

Conhecimentos-chave:

  • Arquivos de configuração, termos e ferramentas DHCP;
  • Configuração de sub-rede e faixas atribuídas dinamicamente;
  • Noção de roteadores IPv6

Lista parcial dos arquivos, termos e ferramentas utilizados:

  • dhcpd.conf
  • dhcpd.leases
  • /var/log/daemon.log e /var/log/messages
  • arp
  • dhcpd
  • radvd
  • radvd.conf

210.1: Configuração DHCP - Conteúdo

O Dynamic Host Configuration Protocol (DHCP) ou Protocolo dinâmico de configuração de hosts (em tradução nossa), é utilizado para ingressar computadores em um enlace de rede. Ele é útil aos administradores de rede pois eles não precisam se preocupar em efetuar as configurações de IP nos computadores e ainda conseguem padronizar outras configurações básicas para o funcionamento da rede, como DNS, configuração de NTP e outras mais.

Funcionamento do DHCP

O DHCP trabalha em um modo cliente/servidor rodando na porta UDP 67 ele segue uma sequência de eventos bem definida:

  1. Quando um client (com sua interface de rede habilitada com o dhcp client) conecta em uma rede, ele envia uma mensagem de broadcast, essa mensagem tem o nome de DHCP DISCOVER;
  2. O roteador ou o switch recebe a mensagem de DHCP DISCOVER e responde ela com uma mensagem DHCP OFFER. Com base na configuração dos endereços disponíveis, no endereço de hardware do cliente e/ou nome do host e a configuração do software do servidor DHCP, determina-se o endereço apropriado a ser atribuído à máquina que originou a solicitação. Resumindo, o servidor oferece ao cliente um dos IPs disponíveis no range configurado com base em suas configurações.
  3. Em seguida, o cliente obtém o pacote DHCPOFFER e envia um pacote DHCPREQUEST (ainda em broadcast) ao servidor, solicitando o endereço que foi ofertado anteriormente.
  4. Finalmente, após o servidor DHCP receber o pacote DHCPREQUEST do cliente, ele envia o pacote DHCPACK mostrando que o cliente agora tem permissão para usar o endereço IP atribuído a ele por um período de tempo (configurado) e acrescentando as demais configurações de rede que estiverem configuradas no servidor para entrega aos clientes.

dhcp-sequence-diagram.png

Figura 1: Diagrama da sequência funcionamento do DHCP

Implementando um servidor DHCP

Os pacotes de DHCP no servidor não vem instalados por padrão e precisam ser instalados. Existem algumas opções a saber:

  • dhcp;
  • dhcp-server;
  • isc-dhcp-server (antigo);
  • dhcp3-server (objetivo do LPIC-2);
  • dhcp4-server.

Após instalado o serviço o primeiro passo é configurar o arquivo /etc/dhcpd.conf (RedHat-like) ou o /etc/dhcp/dhcp.conf (Debian-like). Vamos mostrar um exemplo de uma configuração de DHCP:

option domain-name "exemplo.local";

default-lease-time 7200;
max-lease-time 86400;

subnet 10.250.25.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 201.10.120.2,201.10.128.4;
                range 10.250.25.10 10.250.25.100;
        }
        option routers 10.250.25.1;
        ping-check true;
}

host maria {
     hardware ethernet 07:01:23:1B:A3:EA
     fixed-address 10.250.25.15
     }

Existem dois tipos de declarações definidas no arquivo dhcpd.conf, são elas:

  1. Parâmetros: indica como realizar uma tarefa, se realizar uma tarefa ou quais opções de configuração de rede enviar ao cliente DHCP.
  2. Declarações: especifica a topologia da rede, define os clientes, oferece endereços para os clientes ou aplica um grupo de parâmetros a um grupo de declarações.

Os parâmetros que começam com a palavra-chave option são chamados de opções. Essas opções controlam as opções do DHCP, enquanto os parâmetros configuram valores que não são opcionais ou controlam como o servidor DHCP se comporta.

Alguns dos parâmetros mais importantes são:

  • Opções Globais
  • DNS Dynamic Updates;
  • IP Ranges;
  • DHCP Logging.

Opções globais

O administrador pode usar um servidor de DHCP para prover configurações automáticas para várias redes, porém para facilitar a configuração e evitar ter que repetir certas configurações ele pode utilizar configurações globais. As configurações globais são as que ficam fora do espaço entre chaves {} e são replicadas em todas as redes distribuídas pelo servidor DHCP.

Tabela 1: Opções comuns de serem usadas como globais
Opção Descrição
min-release-time 400; O valor mínimo de empréstimos, força o cliente a fazer um empréstimo mais longo do que o solicitado
default-lease-time 600 Este valor é usado se o cliente não requisitar um tempo específico de empréstimo
max-lease-time 7200 Define o tempo máximo que um IP pode ser alocado

DNS Dynamic Updates

Determina se o servidor DHCP irá tentar atualizar os endereços do servidor DNS do cliente solicitante ou não.

ddns-update-style <style>;

ignore client-updates;

Valores válidos para <style>:

  • none nenhum update DNS será executado;
  • ad-hoc método legado, é um método deprecado de atualização com base em um valor de script (válido para DHCPv3);
  • interim update de DNS baseado em linguagem C, (denominado "provisório", visto que pretendia ser uma substituição temporária do método "ad-hoc");
  • standard método atual (DHCPv4), incorpora novos padrões para DNS dinâmicos.

IP Ranges

Sintaxe: subnet <rede> netmask <mascara> {<opções e diretivas>}

Define e identifica uma rede IP associando ao nosso servidor DHCP:

Tabela 2: Diretivas usadas no IPRanges
Chave de diretiva Descrição
option routers "192.168.1.1" Define o Gateway usado pelos clientes
option subnet-mask "255.255.255.0" Define a máscara da configuração de rede dos clientes
range 192.168.1.10 192.168.1.200 Define o range de IPs que serão distribuídos pelo DHCP
option domain-name "exemplo.local"; O nome de domínio a que os clientes participarão
option domain-name-servers 8.8.8.8; Define o servidor de DNS que os clientes usarão para resolução de nomes
<allow/deny> unknown-clients; Define se os IPs da pool podem ou não ser entregues a clients desconhecidos

Fixando um IP para um computador

Eventualmente é necessário reservar e fixar um IP para um computador específico para isso usamos a declaração host. Ela obedece a seguinte sintaxe:

host <nome> {<configuração de IP estática>}

host maria {
     hardware ethernet 07:01:23:1B:A3:EA
     fixed-address 10.250.25.15
     }

O valor <nome> pode ser qualquer valor que ajude a identificar a configuração do host com IP fixado para o administrador de rede.

Tabela 3: Diretivas da declaração Host
Chave de diretiva Descrição
hardware ethernet xx:xx:xx.. MAC address do computador cliente
fixed-address 10.250.25.15 O IP reservado ao cliente

Observações:

  1. A grafia da diretiva hardware ethernet contem um espaço entre as duas palavras no exame podem usar isso para confundir;
  2. Em pools onde a diretiva unknown-clinets estiver definida como deny apenas hosts que constarem na reserva de IPs receberão um endereço do servidor DHCP.

Log do DHCP

Os logs do servidor DHCP são encontrados em dois locais dependendo da distribuição usada:

  • /var/log/messages
  • /var/log/daemon.log

Também é importante conhecer o arquivo /var/lib/dhcp/dhcp/leases, ele contém todos os empréstimos de IP do serviço de DHCP, mantém registrado o início e o fim dos empréstimos e mais informações específicas do host.

DHCP relay

Como já explicado anteriormente o broadcast é um pré-requisito para o funcionamento do DHCP. Portanto é de se imaginar que em uma rede segmentada seria necessário colocar um DHCP em cada rede. Mas isso além de representar em um desperdício de recursos seria algo oneroso de se manter. Para resover esse problema foi desenvolvido o DHCP relay agent.

O DHCP relay agent é um serviço que "escuta" em uma subrede que não conta com um DHCP server próprio esperando a ocorrência de um DHCPDISCOVER, quando ocorre ele encaminha essa mensagem ao DHCP server na outra subrede.

dhcp-relay-diagram.png

Figura 2: Diagrama de funcionamento do DHCP relay

O DHCP relay é um pequeno software que pode ser encontrado em switches e roteadores e também pode ser instalado em um sistema Linux.

No diagrama acima imaginemos que o "Roteador" seja um servidor Linux com 3 interfaces de rede, sendo o default gateway em todas as subredes, operando com os seguintes endereços:

  • 192.168.2.1;
  • 192.168.1.1;
  • 172.20.1.1;

E o nosso servidor DHCP está configurado da seguinte forma:

option domain-name "exemplo.local";

default-lease-time 7200;
max-lease-time 86400;

subnet 172.20.1.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 201.10.120.2,201.10.128.4;
                range 172.20.1.10 172.20.1.100;
        }
        option routers 172.20.1.1;
        ping-check true;
}

subnet 192.168.1.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 201.10.120.2,201.10.128.4;
                range 192.168.1.10 192.168.1.100;
        }
        option routers 192.168.1.1;
        ping-check true;
}

Logo para que nosso servidor/roteador Linux possa encaminhar as requisições para o nosso servidor DHCP precisamos instalar o pacote dhcp se for um RedHat-like ou o pacote isc-dhcp-relay caso seja um Debian-like.

Para rodar o comando manualmente é simples:

dhcrelay <ip_do_servidor_dhcp>

Para rodar como um daemon em um servidor RedHat-like devemos editar o arquivo /usr/lib/systemd/system/dhcrelay.service editando a linha iniciada por ExecStart. Depois disso basta recarregar o Systemd habilitar e subir o serviço dhcrelay.

Para rodar como um daemon em um servidor Debian-like devemos editar o arquivo /etc/default/isc-dhcp-relay ajustando a linha iniciada por SERVERS. Após isso basta habilitar e iniciar o serviço isc-dhcp-relay.

Configurando um computador Linux como cliente DHCP

O assistente de instalação das distribuições modernas costuma conduzir o usuário a habilitar o client de DHCP na interface do computador. Mas para o objetivo da prova LPIC-2 é importante conhecer os estilos de configuração para as distribuições mais comuns.

DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes
auto  eth0
iface eth0 inet dhcp

DHCP no IPv6

O suporte a IPv6 foi incluído no DHCP a partir da versão 4.X. O servidor, cliente e relay suportam tanto IPv4 quanto IPv6. Porém o cliente e o servidor somente suportam um protocolo por vez. Para o suporte em pilha dupla devemos rodar processos separados para IPv4 e IPv6.

O arquivo de configuração do servidor DHCPv6 pode ser encontrado em /etc/dhcp/dhcpd6.conf. Já o arquivo de configuração de exemplo pode ser encontrado em /usr/share/doc/dhcp-<version>/dhcpd6.conf.sample>

subnet6 2001:db8:0:1::/64 {
        range6 2001:db8:0:1::129 2001:db8:0:1::254;
        option dhcp6.name-servers fec0:0:0:1::1;
        option dhcp6.domain-search "domain.exemplo";
}

O serviço do DHCPv6 server é identificado como dhcpd6 e pode ser iniciado ou parado pelo usuário root ou com sudo.

O DHCPv6 pode ser configurado de duas formas:

  • statefull: Funciona de forma muito semelhante ao DHCP do IPv4. Assim o servidor atribuirá endereços IPv6 a todos os clientes DHCPv6 e acompanhará os leases. Resumindo o servidor sabe exatamente qual endereço IPv6 foi atribuído a qual host.
  • stateless: O modo stateless (também conhecido como SLAAC-StateLess Auto Configuration) funciona de modo diferente. No caso ele não atribui endereços IPv6 aos clientes DHCPv6, isso é feito por "Configuração automática". O servidor DHCPv6 é usado apenas para atribuir configurações como nome de domínio, servidores de DNS adicionais e outras opções do DHCP.

radvd

O IPv6 conta com um suporte maior a configuração automática do que o IPv4. Mas para essa configuração automática funcionar em uma rede, o roteador da rede local precisa rodar um programa que responda as requisições de autoconfiguração emitidas pelos hosts.

Nos Linux esse programa é o radvd ou Router ADVertisement Daemon. Esse daemon agarda por router solicitations (RS) e responde com router advertisement (RA).

Esses RAs contém as informações necessárias para os hosts configurarem suas interfaces. Esta informação inclui prefixos de endereços, o MTU do link e a informação do roteador default.

Claro que os roteadores não podem se autoconfigurar, então as informações sobre os roteadores devem ser fornecidas pelo administrador do sistema. Isso é feito configurando manualmente as interfaces e rotas e configurando o daemon de anúncio do roteador.

radvd.conf

O arquivo de configuração do radvd é o /etc/radvd.conf.

interface eth0 {
        AdvSendAdvert on;
        prefix 5f15:9100:c2dd:1400:8000::0/80
    {
                AdvOnLink on;
                AdvAutonomous on;
        };
};

RADVD ou DHCPv6

Em uma rede IPv6 precisamos no mínimo do radvd. Pois os anúncios de roteador comunicarão para a rede qual é o default gateway e qual é a configuração de rede. Logo os computadores conseguirão inciar a comunicação via IPv6.

Os anúncios de roteador podem dizer aos clientes se eles tem permissão para escolher seus próprios endereços (geralmente baseado no MAC address da interface) ou não. Se permitirmos isso virtualmente não precisaríamos de DHCP.

Como precisamos do radvd de todo o jeito, o mais fácil seria apenas combinar com o DHCP stateless. Assim só nos preocupamos com DHCP statefull quando realmente precisarmos gerenciar os endereços dos hosts manualmente.

Autor: Jeremias Alves Queiroz

Criado em: 2021-12-19 dom 16:25

Valid XHTML 1.0 Strict