Há diversos servidores DHCP disponíveis para sistema do tipo Unix, comerciais ou de livre distribuição. Um dos mais populares servidores DHCP de livre distribuição é o DHCPd de Paul Vixie/ISC. A versão atual é 1.0 (sugerida por muitos usuários) mas a 2.0 encontra-se em estágio beta. Ela pode ser obtida em:
Descompacte-a, vá até o diretório da distribuição e digite:
./configure
Levará algum tempo para se configurar todos os parâmetros. Após isto estar finalizado, digite:
make
e
make install
Ao finalizar a instalação digite ifconfig -a. Deve-se obter um resultado similar a:
eth0 Link encap:10Mbps Ethernet HWaddr 00:C0:4F:D3:C4:62
inet addr:183.217.19.43 Bcast:183.217.19.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2875542 errors:0 dropped:0 overruns:0
TX packets:218647 errors:0 dropped:0 overruns:0
Interrupt:11 Base address:0x210
Caso o parâmetro MULTICAST não esteja presente, deve-se reconfigurar o kernel para sua adição. Em muitos sistemas isso não será necessário.
O próximo passo será adicionar a rota 255.255.255.255. Apresentamos um extrato retirado ao arquivo README do DHCPd:
"Para que o dhcpd funcione perfeitamente, escolha alguns clientes DHCP (por exemplo Windows 9x), que sejam capazes de enviar pacotes com um endereço IP de destino 255.255.255.255. Infelizmente o Linux teima em mudar 255.255.255.255 no endereço de divulgação da subrede local (neste caso 192.5.5.223). Isso cria uma violação do protocolo DHCP e enquanto muitos clientes DHCP não avisam do problema, outros (como os clientes DHCP Microsoft) o fazem. Clientes com este tipo de problema não visualizam a mensagem DHCPOFFER enviada pelo servidor."
Digite:
route add -host 255.255.255.255 dev eth0
caso se obtenha a mensagem
"255.255.255.255: máquina desconhecida"
deve-se tentar adicionar a seguinte entrada ao arquivo /etc/hosts:
255.255.255.255 all-ones
tente então:
route add -host all-ones dev eth0
ou
route add -net 255.255.255.0 dev eth0
eth0 é obviamente o nome do dispositivo de rede que está sendo usado. Caso seja diferente, faça as devidas alterações.
Agora é necessário configurar o DHCPd. Para se fazer isso deve-se criar ou editar o arquivo /etc/dhcpd.conf.
Comumente se deseja definir endereços IP de forma aleatória. Isso pode ser feito da seguinte forma:
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "dominio.org.br";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}
Isso fará com que o servidor DHCP forneça ao cliente um endereço IP na faixa 192.168.1.10-192.168.1.100 ou 192.168.1.150-192.168.1.200. Ele liberará um endereço por 600 segundos caso o cliente não defina um tempo específico de utilização de endereço. De qualquer forma o tempo máximo permitido será de 7.2 segundos. O servidor irá "avisar" ao cliente que ele pode usar 255.255.255.0 como máscara de subrede, 192.168.1.255 como endereço de distribuição, 192.168.1.254 como roteador ou caminho padrão, 192.168.1.1 e 192.168.1.2 como servidores DNS.
Pode-se ainda definir endereços IP específicos baseados nos endereços Ethernet dos clientes, como por exemplo:
host conec {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}
Este procedimento irá definir o endereço 192.168.1.222 para o cliente com endereço Ethernet igual a 08:00:2b:4c:59:23.
Pode-se misturar os procedimentos, definindo-se certos clientes com endereços IP estáticos (por exemplo servidores) e outros com endereços dinâmicos (como por exemplo portáteis). Há diversas opções como: endereços de servidores Windows, servidores de data e horário, etc... Caso se necessite alguma destas opções por favor verifique a página de manual on line do dhcpd.conf.
Podemos agora acionar o servidor DHCP. Basta simplesmente digitar ou incluir nos programas de inicialização do sistema:
/usr/sbin/dhcpd
Caso se deseje verificar se tudo está funcionando perfeitamente, deve-se acionar inicialmente o modo de depuração e colocar o servidor em primeiro plano. Isso pode ser feito através do comando:
/usr/sbin/dhcpd -d -f
Inicialize algum dos clientes e verifique a console do servidor. Deverão ser apresentadas diversas mensagens de depuração.