FreeBSD
DHCP (Dynamic Host Configuration Protocol)
ISC DHCP Server
Um servidor DHCP tem por objetivo fornecer parâmetros de configuração,
como por exemplo o próprio endereço IP, à hosts em uma
rede. É definido pela RFC2131. O DHCP funciona basicamente da seguinte
forma: quando o cliente é inicializado ou configurado para obter um endereço
IP automaticamente, ele faz broadcasts na porta UDP 68, solicitando suas configurações.
O servidor, após receber a solicitação, responde na porta
UDP 67, fornecendo ao cliente um endereço IP e outras configurações,
como gateway, DNS etc. Essas informações são "alocadas"
ao cliente, sendo que só serão válidas por um período
determinado. Caso o cliente ainda esteja na rede quando este período
acabar, pode solicitar que seja renovada a sua alocação.
Iremos utilizar o servidor DHCP fornecido pelo Internet Software Consortium, sua página é http://www.isc.org/products/DHCP. Este pacote inclui um servidor DHCP (dhcpd), que é o que iremos utilizar, um cliente DHCP (dhclient) e um agente de retransmissão DHCP (dhcrelay), que pode ser útil caso seja necessário obter endereços IP de um servidor que não se encontra no mesmo domínio de broadcast que os clientes.
Baixe o source da última versão estável, que fica em ftp://ftp.isc.org/isc/dhcp/dhcp-latest.tar.gz. Neste momento, a última versão é a 3.0pl2.
Descompacte o arquivo dhcp-latest.tar.gz no diretório /tmp, será criada a pasta /tmp/dhcp-3.0pl2. Acesse essa pasta e digite os seguintes comandos:
# ./configure
# make
# make install
O executável dhcpd será instalado em /usr/sbin/dhcpd. Copie o arquivo /tmp/dhcp-3.0pl2/server/dhcpd.conf para /etc/dhcpd.conf.sample. Este arquivo é um exemplo de configuração, iremos guardá-lo como referência. Remova agora o diretório /tmp/dhcp-3.0pl2.
A configuração do servidor DHCP consiste em apenas um arquivo, que irá ficar em /etc/dhcpd.conf. Este arquivo define, por exemplo, quais os endereços IP disponíveis para alocação, qual o gateway etc. Atribua a permissão 600 a este arquivo. Segue abaixo um exemplo comentado deste arquivo:
-------------------- Arquivo dhcpd.conf --------------------
# dhcpd.conf
# Dominio.
option domain-name "exemplo.org";
# Servidores DNS.
option domain-name-servers 10.10.0.5, 10.10.0.6;
# Servidores WINS.
# Descomentar caso utilizado.
#option netbios-name-servers 10.10.0.9;
# Tempo padrao de alocacao
em segundos.
# Se o cliente não especificar nenhum periodo de tempo
# sera atribuido este.
default-lease-time 600;
# Tempo maximo de alocacao
em segundos.
# Tempo maximo que o cliente podera alocar o IP.
# Apos isso deve renovar a alocacao.
max-lease-time 7200;
# Nao tentar atualizar o DNS.
ddns-update-style none;
# Caso este servidor nao seja
o oficial para esta rede o
# parametro abaixo devera ser comentado.
authoritative;
# O log eh feito pelo syslog.
log-facility daemon;
# Declaracao de Subrede.
subnet 10.10.0.0 netmask 255.255.0.0 {
#
Faixa de IPs disponiveis para alocar.
range 10.10.20.1 10.10.20.100;
#
Gateway.
option routers 10.10.0.5;
}
# Declaracao de um cliente especifico.
# Pode ser especificado um IP fixo, que nao deve estar na faixa
# de disponiveis para alocacao acima.
host maquina10 {
#
Endereco MAC do host.
hardware ethernet 08:00:07:26:c0:a5;
#
Endereco fixo.
fixed-address 10.10.30.10;
#
Tempo padrao de alocacao em segundos.
default-lease-time 86400;
#
Tempo maximo de alocacao em segundos.
max-lease-time 864000;
}
-------------------- Fim do arquivo dhcpd.conf --------------------
Deve ser criado um arquivo em branco onde o DHCP irá armazenar as informações sobre as alocações, para seu controle. Execute os seguintes comandos:
# touch /var/db/dhcpd.leases
# chmod 600 /var/db/dhcpd.leases
Para que o log seja direcionado para um arquivo específico, edite o arquivo /etc/syslog.conf e adicione as seguintes linhas:
!dhcpd
*.* /var/log/dhcp/dhcpd.log
Crie então o diretório /var/log/dhcp e o arquivo dhcpd.log, ambos com permissão 600, e reinicialize o syslog:
# mkdir /var/log/dhcp
# touch /var/log/dhcp/dhcpd.log
# chmod -R 600 /var/log/dhcp
# killall -HUP syslogd
Poderá ser criado um script para rotacionar o log do DHCP, para o mesmo não se tornar demasiado grande.
Após isso, inicialize o seu servidor DHCP executando o comando abaixo (substitua xl0 pela sua interface de rede que irá servir DHCP):
# /usr/sbin/dhcpd xl0
Efetue alguns testes, com máquinas clientes utilizando configuração automática de IP. Verifique o arquivo de log, em /var/log/dhcp/dhcpd.log. Verifique também o arquivo de alocações, em /var/db/dhcpd.leases. Toda vez que for feita alguma modificação no arquivo dhcpd.conf, o dhcpd deverá ser parado e inicializado novamente.
Faça um script de inicialização, com os seguintes comandos para inicialização e shutdown, respectivamente (substitua xl0 pela sua interface de rede que irá servir DHCP):
/usr/sbin/dhcpd xl0 -q
e
killall dhcpd
Atualizado em 03/02/04.
Heini Thomas Geib.
http://infsr.unijui.tche.br/~heini