O núcleo de qualquer sistema DHCP é o daemon do protocolo de configuração do host dinâmico. Esse servidor aluga endereços e observa como são usados, de acordo com as configurações definidas no arquivo de configuração /etc/dhcpd.conf. Ao mudar os parâmetros e valores desse arquivo, um administrador de sistemas pode influenciar o comportamento do programa de várias formas. Observe o arquivo de amostra básica /etc/dhcpd.conf em Exemplo 43.1, “Arquivo de configuração /etc/dhcpd.conf”.
Exemplo 43.1. Arquivo de configuração /etc/dhcpd.conf
tempo de aluguel padrão 600; # 10 minutos
tempo de aluguel máx 7200; # 2 horas
opção nome de domínio "cosmos.all";
opção servidores de nomes de domínio 192.168.1.1, 192.168.1.2;
opção endereço de broadcast 192.168.1.255;
opção roteadores 192.168.1.254;
opção máscara de sub-rede 255.255.255.0;
sub-rede 192.168.1.0 máscara de rede 255.255.255.0
{
intervalo 192.168.1.10 192.168.1.20;
intervalo 192.168.1.100 192.168.1.200;
}
Esse arquivo de configuração simples deve ser suficiente para que o servidor DHCP designe endereços IP à rede. Verifique se um ponto-e-vírgula foi inserido no final de cada linha, caso contrário, o dhcpd não será iniciado.
O arquivo de amostra anterior pode ser dividido em três seções. A primeira define quantos segundos um endereço IP é alugado para um cliente que o solicitou por padrão (tempo de aluguel padrão) antes de solicitar uma renovação. Essa parte também inclui uma declaração do período máximo em que uma máquina pode manter um endereço IP designado pelo servidor DHCP sem solicitar uma renovação (max-lease-time).
Na segunda parte, alguns parâmetros de rede básicos são definidos em um nível global:
A linha option domain-name define o domínio padrão da sua rede.
Com a entrada option domain-name-servers, especifique até três valores para os servidores DNS usados para resolver endereços IP em nomes de host e vice-versa. Preferencialmente, configure um servidor de nomes em sua máquina ou em qualquer outra da rede antes de configurar o DHCP. Esse servidor de nomes deve também definir um nome de host para cada endereço dinâmico e vice-versa. Para aprender a configurar o seu próprio servidor de nomes, leia o Capítulo 40, Domain Name System (Sistema de Nomes de Domínio).
A linha option broadcast-address define o endereço de broadcast a ser usado pelo cliente solicitante.
Com option routers, informe ao servidor o destino de pacotes de dados que não podem ser enviados para um host da rede local (de acordo com o endereço de host de origem e de destino e da máscara de sub-rede fornecidos). Na maioria dos casos, especialmente em redes menores, esse roteador é idêntico ao gateway da Internet.
Com option subnet-mask, especifique a máscara de rede designada a clientes.
A última seção do arquivo existe para definir uma rede, incluindo uma máscara de sub-rede. Para concluir, especifique a faixa de endereços que o daemon do DHCP deve usar para designar endereços IP a clientes interessados. Neste exemplo, os clientes podem receber qualquer endereço entre 192.168.1.10 e 192.168.1.20, assim como 192.168.1.100 e 192.168.1.200.
Depois de editar essas poucas linhas, você deverá conseguir ativar o daemon do DHCP com o comando rcdhcpd start. Ele poderá ser usado imediatamente. Use o comando rcdhcpd check-syntax para executar uma rápida verificação de sintaxe. Se houver problemas inesperados em sua configuração (o servidor for interrompido com um erro ou não retornar done na inicialização), você deverá descobrir o que aconteceu de errado, procurando informações no registro do sistema principal /var/log/messages ou no console 10 (Ctrl-Alt-F10).
Em um sistema SUSE Linux padrão, o daemon do DHCP é iniciado em um ambiente chroot por razões de segurança. Os arquivos de configuração precisam ser copiados para o ambiente chroot para que o daemon possa localizá-los. Normalmente, não é preciso se preocupar com isso, pois o comando rcdhcpd start copia automaticamente os arquivos.
Conforme mencionado antes, o DHCP também pode ser usado para designar um endereço estático predefinido a um cliente específico para cada solicitação. Endereços designados explicitamente sempre têm prioridade sobre endereços dinâmicos do pool. Além disso, um endereço estático nunca expira da mesma forma que o dinâmico, por exemplo, se não houver endereços suficientes disponíveis, o servidor precisará redistribuí-los entre clientes.
Para identificar um cliente configurado com um endereço estático, o dhcpd usa o endereço de hardware, que é um código numérico fixo, globalmente exclusivo, consistindo em seis pares de octetos para a identificação de todos os dispositivos da rede (por exemplo, 00:00:45:12:EE:F4). Se as respectivas linhas, como as que estão no Exemplo 43.2, “Adições ao arquivo de configuração”, forem adicionadas ao arquivo de configuração do Exemplo 43.1, “Arquivo de configuração /etc/dhcpd.conf”, o daemon do DHCP sempre designará o mesmo conjunto de dados ao cliente correspondente em qualquer circunstância.
Exemplo 43.2. Adições ao arquivo de configuração
host earth {
hardware ethernet 00:00:45:12:EE:F4;
fixed-address 192.168.1.21;
}
O nome do respectivo cliente (host nome do host, aqui earth) é digitado na primeira linha e o endereço MAC na segunda linha. Em hosts Linux, esse endereço pode ser determinado com o comando ifstatus, seguido do dispositivo de rede (por exemplo, eth0). Se necessário, ative a placa de rede primeiro com ifup eth0. A saída deve conter algo como
link/ether 00:00:45:12:EE:F4
No exemplo anterior, um cliente com uma placa de rede, cujo endereço MAC é 00:00:45:12:EE:F4, adquire o endereço IP 192.168.1.21 e o nome de host earth automaticamente. O tipo de hardware a ser inserido é ethernet em quase todos os casos, embora token-ring, utilizado freqüentemente em sistemas IBM, também seja suportado.
Para aprimorar a segurança, a versão SUSE do servidor DHCP do ISC vem com o patch não-raiz/chroot de Ari Edelkind aplicado. Isso permite que o dhcpd seja executado com o ID de usuário nobody e em um ambiente chroot (/var/lib/dhcp). Para que isso seja possível, o arquivo de configuração dhcpd.conf precisa estar localizado em /var/lib/dhcp/etc. O script init copia automaticamente o arquivo para esse diretório na inicialização.
Controle o comportamento do servidor em relação a esse recurso, por meio de entradas no arquivo /etc/sysconfig/dhcpd. Para executar o dhcpd sem o ambiente chroot, configure a variável DHCPD_RUN_CHROOTED em /etc/sysconfig/dhcpd para “não”.
Para permitir que o dhcpd resolva nomes de host, mesmo de dentro do ambiente chroot, alguns outros arquivos de configuração também precisam ser copiados:
/etc/localtime
/etc/host.conf
/etc/hosts
/etc/resolv.conf
Esses arquivos são copiados para /var/lib/dhcp/etc/ quando o script init é iniciado. Faça as mudanças necessárias nessas cópias, caso sejam modificadas dinamicamente por scripts como /etc/ppp/ip-up. Entretanto, você não precisará se preocupar com isso se o arquivo de configuração especificar somente endereços IP (em vez de nomes de host).
Se a configuração incluir arquivos adicionais que devem ser copiados para o ambiente chroot, especifique-os na variável DHCPD_CONF_INCLUDE_FILES do arquivo /etc/sysconfig/dhcpd. Para garantir que o recurso de registro DHCP continue funcionando, mesmo depois de uma reinicialização do daemon do syslog, é necessário adicionar a opção "-a /var/lib/dhcp/dev/log" em SYSLOGD_PARAMS do arquivo /etc/sysconfig/syslog.