O DHCP é um protocolo de serviço TCP/IP que oferece configuração dinâmica de terminais, com concessão de endereços IP de host, máscara de sub-rede, default gateway (gateway padrão), número IP de um ou mais servidores DNS, sufixos de pesquisa do DNS e número IP de um ou mais servidores WINS que surgiu como um padrão em outubro de 1993. O RFC 2131 (1997) contém as especificações mais atuais. O último standard para a especificação do DHCP sobre IPv6 (DHCPv6) foi publicado como RFC 3315 (2003). ..
Fonte: Wikipédia 🔗
O DHCP é um dos serviços mais importantes da rede local pois permite que a rede se "auto-configure" (IP, máscara de sub-rede, gateway, DNS, etc.) toda vez que um novo dispositivo é anexado à ela. Isso diminui a carga técnica de configurar cada novo dispositivo manualmente e também as possibilidades de falhas na operação da rede como conflitos de endereços ou endereçamento errado devido à configuração manual, por exemplo.
Imagine se tivessemos que, a cada dispositivo novo anexado à nossa rede, um WiFi de um shopping, por exemplo, tivessemos que configurar manualmente cada celuar e notebbok que precisasse ser anexado à rede...
Ainda configurando nosso servidor de desenvolvimento livre, já configuramos a rede e compartilhamos a Internet usando o NAT. Nesta etapa, vamos instalar os serviços principais, começando pelo DHCP.
Existem algumas opções de servidor DHCP para Linux, sendo que o UDHCPD é um dos mais básicos e fáceis de configurar. Para instalá-lo, logue-se em um console de comandos como "root" e verifique se o servidor acessa a Internet, comandando, por exemplo:
ping luferat.net
Agora atualize a lista de pacotes e instale o UDHCPD:
apt update
apt install udhcpd
A instalação é muito rápida. Agora, para configurá-lo, renomeie o arquivo de configuração original, para referências futuras:
mv /etc/udhcpd.conf /etc/udhcpd.conf.original
Crie um novo arquivo de configuração, comandando:
mousepad /etc/udhcpd.conf
Edite-o para que se pareça com:
start 192.168.99.100
end 192.168.99.200
interface enp0s8
max_leases 100
option dns 192.168.99.1 10.142.95.12 10.135.95.211
option subnet 255.255.255.0
option router 192.168.99.1
option domain software.livre
option lease 864000
Vamos ver, na sequência, o que cada linha significa:
start → é o primeiro IP a ser dado aos hosts da rede
end → é o último IP a ser dado aos hosts da rede
interface → é a interface de rede do servidor ligada à rede local, por onde as solicitações de IP chegam
max_leases → é o número máximo de IPs automáticos que o servidor proverá
option dns → são os endereços dos DNS primário, secundário e alternativos, separados por espaços
option subnet → é a máscara de subrede de toda a rede
option router → é o gateway padrão da rede, ou seja, o host que dá acesso à Internet para a rede local
option domain → é o nome do domínio ou grupo de trabalho da rede
option lease → é o tempo em segundos da validade do IP dos clientes
Em alguns sistemas é necessário habilitar o UDHCPD no sistema padrão, para isso, comande:
mousepad /etc/default/udhcpd
Altere o valor da variável DHCPD_ENABLED de "no" para "yes". O arquivo deve ser como:
DHCPD_ENABLE="yes"
DHCPD_OPTS="-S"
Salve o arquivo e saia do editor.
Com tudo pronto e conferido, vamos reiniciar o UDHCPD para que ele passe a atuar com as novas configurações. Para isso, de os comandos:
service udhcpd restart
Para conferir se está tudo certo, dê o comando:
udhcpd
Que não deve retornar mensagens de erro.
Agora, reinicie o sistema, comandando:
reboot
Vamos testar o servidor DHCP? Para isso é importante desativar qualquer outro serviço DHCP da rede como os disponíveis em modems ADSL e roteadores ADSL. Caso esteja usando, desative o compartilhamento da Internet no Windows também (ICS), pois, por padrão, este serviço já disponibiliza um DHCP que é impossível de configurar.
Agora, em alguns micros da rede, configure a interface para "Obter IP automaticamente". Para quem não lembra, vamos ver como fazer no Windows e no Debian:
Clique em "Iniciar" e depois em "Executar" ou simplesmente pressione o "logo do Windows" + "R";
Digite "ncpa.cpl" e pressione "Enter";
Clique com o botão direito na "Conexão local" e selecione "Propriedades";
Selecione "Protocolo TCP/IP versão 4 (TCP/IPv4)" e clique no botão "Propriedades";
Marque ou confira se estão marcadas as opções "Obter um endereço IP automaticamente" e "Obter o endereço dos servidores DNS automaticamente".
Saia confirmando tudo com "Ok".
Para conferir se pegou um novo IP do seu servidor no Windows:
Clique em "Iniciar" e depois em "Executar" ou simplesmente pressione o "logo do Windows" + "R";
Digite "cmd" e pressione "Enter";
No Prompt de comando digite "ipconfig" e dê "Enter";
Localize "Adaptador Ethernet Conexão local" e logo abaixo você verá o IP desta interface.
NÃO FAÇA ISSO NO LINUX SERVER! NÃO FAÇA ISSO NO LINUX SERVER! NÃO FAÇA ISSO NO LINUX SERVER!
Para configurar o Debian para receber IP automaticamente, devemos editar o arquivo "/etc/network/interfaces", como de constume:
mousepad /etc/network/interfaces
Edite as linhas necessárias para que fique como:
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet dhcp
Justamente as duas últimas linhas definem que a primeira interface de rede (enp0s3) deve receber IP automaticamente (dhcp).
Reinicie as interfaces de rede com:
ifdown -a
ifup -a
No Debian e derivados, está pronto. Já outras distribuições Linux tem suas configurações específicas, mas, de maneira geral, para obter um IP via DHCP, damos o comando:
dhclient [nome_interface]
Onde [nome_interface] é a identificação da interface local para a qual desejamos obter um novo IP do sistema.
O UDHCPD que usamos aqui, apesar de simples e básico, não é o servidor DHCP preferido da comunidade. Esta posição pertence ao ISC DHCP que é, certamente o mais usado. Porém, alguma atualização recente (agosto/2022) está fazendo com que ocorra um erro na inicialização deste, logo após a instalação e, mesmo seguindo diversas dicas da comunidade, não conseguimos fazê-lo funcionar no Debian 11. Por isso, focamos no UDHCPD do tutorial. De qualquer forma, estamos disponibilizando o tutorial do ISC DHCP para quem quiser se arriscar, ou, caso, no momento que você acessa este conteúdo, alguma solução já tenha sido encontrada. Caso isso ocorra, faremos um "adendo" aqui.