25.2. Configurando um Servidor DHCP

Para configurar um servidor DHCP, altere o arquivo de configuração /etc/dhcpd.conf.

O DHCP também usa o arquivo /var/lib/dhcp/dhcpd.leases para armazenar o banco de dados de aluguel de clientes. Consulte a Seção 25.2.2 para mais informações.

25.2.1. Arquivo de Configuração

O primeiro passo para configurar um servidor DHCP é criar o arquivo de configuração que armazena as informações de rede dos clientes. É possível declarar opções globais para todos os clientes, e também declarar opções para cada sistema cliente separadamente.

O arquivo de configuração pode conter espaços tab ou linhas em branco para uma formatação mais fácil. As palavras-chave são sensíveis a caixa alta e baixa, e as linhas iniciadas com a marca do jogo da velha (#) são consideradas comentários.

Atualmente são implementados dois esquemas de atualização do DNS — o modo de atualização do DNS improvisado e o modo de atualização do esquema de interação do intervalo DHCP-DNS. Se e quando estes dois são aceitos como parte do processo padrão IETF, haverá um terceiro modo — o método de atualização do DNS padrão. O servidor DHCP deve ser configurado para usar um dos dois esquemas atuais. A versão 3.0b2pl11 e a anterior usaram o modo improvisado; no entanto, este foi desaprovado. Para manter o mesmo comportamento, adicione a linha seguinte no topo do arquivo de configuração:

ddns-update-style ad-hoc;

Para usar o modo recomendado, adicione a seguinte linha no topo do arquivo de configuração:

ddns-update-style interim;

Consulte a página man do dhcpd.conf para detalhes sobre os diferentes modos.

Há dois tipos de declarações no arquivo de configuração:

Alguns parâmetros devem iniciar com a palavra-chave option e são referidos como opções. Elas configuram as opções DHCP; enquanto os parâmetros configuram os valores não-opcionais ou controlam o modo como o servidor DHCP se comporta.

Os parâmetros (incluindo as opções) declarados antes do fechamento de uma seção com chaves ({ }) são considerados globais. Os parâmetros globais são aplicados a todas as seções abaixo deles.

ImportanteImportante
 

Se o arquivo de configuração é alterado, as alterações não terão efeito até que o daemon DHCP seja reiniciado com o comando service dhcpd restart.

Na Exemplo 25-1, as opções routers, subnet-mask, domain-name, domain-name-servers e time-offset são usadas para qualquer declaração de host abaixo delas.

Conforme mostra a Exemplo 25-1, uma subnet pode ser declarada. Uma declaração da subnet deve ser inclusa para cada sub-rede na rede. Se não for, o servidor DHCP falha na inicialização.

Neste exemplo há opções globais para cada cliente DHCP da sub-rede e um range (intervalo) declarado. Clientes são atribuídos com um endereço IP dentro do range.

subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option domain-name              "example.com";
        option domain-name-servers       192.168.1.1;

        option time-offset              -18000;     # Eastern Standard Time

	range 192.168.1.10 192.168.1.100;
}

Exemplo 25-1. Declaração de Sub-rede

Todas as sub-redes que compartilham a mesma rede física devem ser indicados em uma declaração shared-network, conforme mostra a Exemplo 25-2. Os parâmetros dentro da shared-network mas fora das declarações subnet fechadas são considerados globais. O nome da shared-network dever ser um título descritivo da rede, como test-lab, para descrever todas as sub-redes de um ambiente de laboratório de testes.

shared-network name {
    option domain-name              "test.redhat.com";
    option domain-name-servers      ns1.redhat.com, ns2.redhat.com;
    option routers                  192.168.1.254;
    more parameters for EXAMPLE shared-network
    subnet 192.168.1.0 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.1 192.168.1.31;
    }
    subnet 192.168.1.32 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.33 192.168.1.63;
    }
}

Exemplo 25-2. Declaração de Rede Compartilhada

Como demonstrado na Exemplo 25-3, a declaração de group pode ser usada para aplicar parâmetros globais a um grupo de declarações. Por exemplo: redes compartilhadas (shared networks), sub-redes (subnets), máquinas (hosts) ou outros grupos podem ser agrupados.

group {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;

   option domain-name              "example.com";
   option domain-name-servers       192.168.1.1;

   option time-offset              -18000;     # Eastern Standard Time

   host apex {
      option host-name "apex.example.com";
      hardware ethernet 00:A0:78:8E:9E:AA; 
      fixed-address 192.168.1.4;
   }

   host raleigh {
      option host-name "raleigh.example.com";
      hardware ethernet 00:A1:DD:74:C3:F2;
      fixed-address 192.168.1.6;
   }
}

Exemplo 25-3. Declaração de Grupo

Para configurar um servidor DHCP que aluga um endereço IP dinâmico para um sistema em uma sub-rede, modifique o Exemplo 25-4 com seus valores. Este declara um tempo default de aluguel, um tempo máximo de aluguel e valores de configuração de rede dos clientes. Este exemplo atribui endereços IP no range 192.168.1.10 a 192.168.1.100 para sistemas cliente.

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 "example.com";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
}

Exemplo 25-4. Parâmetro de Escala

Para atribuir um endereço IP a um cliente, baseado no endereço MAC da placa de interface da rede, use o parâmetro hardware ethernet em uma declaração host. Conforme mostra a Exemplo 25-5, a declaração host apex especifica que a placa de interface de rede com o endereço MAC 00:A0:78:8E:9E:AA sempre recebe o endereço IP 192.168.1.4.

Note que o parâmetro opcional host-name pode ser usado para atribuir um nome de máquina para o cliente.

host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA; 
   fixed-address 192.168.1.4;
}

Exemplo 25-5. Endereço IP Estático usando DHCP

DicaDica
 

A amostra do arquivo de configuração provido pode ser usada como um ponto de partida. Opções personalizadas de configuração podem ser adicionadas a ele. Para copiá-lo à localidade apropriada, use o segunte comando:
  cp /usr/share/doc/dhcp-<version-number>/dhcpd.conf.sample /etc/dhcpd.conf  
(onde <version-number> é o número da versão do DHCP).

Para uma lista completa das opções de declaração e suas funções, consulte a página man dhcp-options.

25.2.2. Banco de Dados de Aluguel

No servidor DHCP, o arquivo /var/lib/dhcp/dhcpd.leases armazena o banco de dados de aluguel do cliente DHCP. Este arquivo não deve ser modificado manualmente. As informações de aluguel DHCP de cada endereço IP recentemente atribuído são armazenadas automaticamente no banco de dados de aluguel. As informações incluem datas do aluguel e os endereços MAC da placa de interface de rede usada para recuperar o aluguel.

Todos os horários do banco de dados de aluguel estão em GMT (Greenwich Mean Time) e não horário local.

O banco de dados de aluguel é recriado de tempos em tempos para que não fique muito grande. Primeiramente, todos os aluguéis conhecidos são salvos em um banco de dados temporário de aluguel. Então, o arquivo dhcpd.leases é renomeado para dhcpd.leases~, e o banco de dados temporário é salvo como dhcpd.leases.

O daemon DHCP pode ser finalizado (killed) ou o sistema pode falhar (crash) após o banco de dados de aluguel ter sido renomeado como o arquivo backup, mas antes do novo arquivo ser salvo. Se isto acontecer, o arquivo dhcpd.leases não existe, mas é necessário para iniciar o serviço. Não crie um novo arquivo de aluguel. Se você o fizer, todos os aluguéis antigos serão perdidos e causarão muitos problemas. A solução correta é renomear o arquivo backup dhcpd.leases~ como dhcpd.leases e então iniciar o daemon.

25.2.3. Iniciando e Parando o Servidor

ImportanteImportante
 

Quando o servidor DHCP é iniciado pela primeira vez, ele falhará a não ser que o arquivo dhcpd.leases exista. Use o comando touch /var/lib/dhcp/dhcpd.leases para criar este arquivo se ainda não existir.

Para iniciar o serviço DHCP, use o comando /sbin/service dhcpd start. Para parar o servidor DHCP, use o comando /sbin/service dhcpd stop. Para configurar o daemon para inciar automaticamente no momento da inicialização, consulte o Capítulo 21 para informações sobre a administração dos serviços.

Se houver mais de uma interface de rede ligada ao sistema, mas o servidor DHCP deve ser iniciado em apenas uma das inaterfaces, configure o servidor para iniciar somente naquele dispositivo. No /etc/sysconfig/dhcpd, adicione o nome da interface à lista de DHCPDARGS:

# Command line options here
DHCPDARGS=eth0

Isto é útil para uma máquina firewall com duas placas de rede. Uma placa de rede pode ser configurada como um cliente DHCP para recuperar um endereço IP para a Internet. A outra placa de rede pode ser usada como um servidor DHCP da rede interna por trás do firewall. Especificar somente a placa de rede ligada à rede interna torna o sistema mais seguro, porque os usuários podem conectar ao daemon via Internet.

Outras opções de comando de linha que podem ser usadas no /etc/sysconfig/dhcpd incluem:

25.2.4. Agente DHCP Relay

O Agente DHCP Relay (dhcrelay) permite o revezamento de pedidos DHCP e BOOTP de uma sub-rede sem um servidor DHCP, para um ou mais servidores DHCP em outras sub-redes.

Quando um cliente DHCP solicita informações, o Agente DHCP Relay encaminha o pedido à lista de servidores DHCP especificada quando o Agente DHCP Relay é iniciado. Quando um servidor DHCP retorna uma resposta, esta deve ser transmitida amplamente ou somente para a rede que enviou o pedido original.

O Agente DHCP Relay escuta pedidos DHCP em todas as interfaces, a não ser que as interfaces estejam especificadas no /etc/sysconfig/dhcrelay com a diretiva INTERFACES.

Para iniciar o Agente DHCP Relay, use o comando service dhcrelay start.