23.3. O dhcpd do servidor DHCP

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 no Exemplo 23.1, “Arquivo de configuração /etc/dhcpd.conf”.

Exemplo 23.1. Arquivo de configuração /etc/dhcpd.conf

 
default-lease-time 600;         # 10 minutes 
max-lease-time 7200;            # 2  hours

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 exemplo 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 última seção do arquivo define 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. No Exemplo 23.1, “Arquivo de configuração /etc/dhcpd.conf”, 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ê 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.

23.3.1. Clientes com endereços IP fixos

O DHCP também pode ser usado para designar um endereço estático predefinido a um cliente específico. Endereços designados explicitamente sempre têm prioridade sobre endereços dinâmicos do pool. 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, que consiste 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 do Exemplo 23.2, “Adições ao arquivo de configuração”, forem adicionadas ao arquivo de configuração do Exemplo 23.1, “Arquivo de configuração /etc/dhcpd.conf”, o daemon do DHCP sempre designará o mesmo conjunto de dados ao cliente correspondente.

Exemplo 23.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, encontre o endereço MAC com o comando ip link show, seguido do dispositivo de rede (por exemplo, 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.

23.3.2. Versão SUSE Linux

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, defina-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-ng, há a entrada adicional SYSLOGD_ADDITIONAL_SOCKET_DHCP no arquivo /etc/sysconfig/syslog.