LPI-2 202-450 Topico 210.1
Configuração por DHCP
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:
- 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;
- 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.
- 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.
- 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.
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:
- Parâmetros: indica como realizar uma tarefa, se realizar uma tarefa ou quais opções de configuração de rede enviar ao cliente DHCP.
- 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.
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:
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.
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:
- A grafia da diretiva
hardware ethernet
contem um espaço entre as duas palavras no exame podem usar isso para confundir; - Em
pools
onde a diretivaunknown-clinets
estiver definida comodeny
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.
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.