Unidade B - Instalar e configurar servidores DHCP

B.1. DHCP (Dynamic Host Configuration Protocol)

Para que hosts de uma rede local possam se comunicar, é necessário que sejam identificados por endereços IP exclusivos de uma mesma sub-rede. Essa exclusividade garante que as mensagens trocadas na rede cheguem corretamente ao seu destino. Além do endereço lógico único, as estações de rede necessitam de outras informações importantes como o endereço do gateway da rede e do servidor DNS (que estudaremos a seguir). Cabe ao administrador de rede a tarefa de realizar essas configurações nos host de rede. Essas podem ser realizadas manualmente (como no caso de servidores) ou por meio de um serviço denominado DHCP (Dynamic Host Configuration Protocol).

O DHCP é um protocolo cliente-servidor que automatiza a configuração do endereçamento lógico dos hosts de rede. Este serviço é acionado sempre que um novo host é adicionado à rede que ele gerencia. O cliente envia um pacote broadcast com um pedido DHCP (DHCP Discover) que é capturado pelo servidor. Este encaminha uma mensagem ao cliente informando que pode responder por essa solicitação, pois possui um IP disponível (DHCP Offer). O cliente requisita o endereço lógico ao servidor (DHCP Request) que o responde, enviando ao cliente as todas as informações de endereçamento necessárias para que este possa entrar na rede e fazer uso da rede e seus serviços (DHCP ACK) (Figura B 1.1).

O endereço IP recebido pelos hosts é temporário, é uma concessão com prazo determinado e pode ser renovada ou revogada pelo servidor, com base no seu uso pelo cliente de rede. Esta política evita o esgotamento de endereços IP, visto que os endereços que não estão mais sendo utilizados podem ser reaproveitados por outros hosts. Além disso, o servidor certifica-se de que os clientes de rede nunca recebam endereços IP duplicados. O servidor realiza o controle desse processo armazenando o histórico dos aluguéis de IP realizados. Nesse banco de dados ficam armazenados o endereço IP concedido e o período do aluguel e o endereço tempo MAC do host que realizou o pedido.

B.1.2. Instalação e configuração do servidor DHCP no Debian/Linux

No Debian/Linux o serviço de DHCP é realizado pelo isc-dhcp-server, atualmente na versão 4. Para realizar a instalação do servidor utiliza-se o comando:

# apt-get install isc-dhcp-server

Após a instalação, é comum que seja exibida uma mensagem de erro (Figura B.1.2). Isto se deve ao fato de o arquivo de configuração padrão ainda não ter sido configurado e necessitar de ajustes.

O principal arquivo de configuração do servidor é o dhcpd.conf que é instalado  no diretório /etc/dhcp/. Este arquivo contém uma série de exemplos de possíveis configurações do servidor. Para facilitar a compreensão e customização das instruções do arquivo de configuração recomenda-se que seja realizada uma cópia do arquivo original, para fins de consulta, e crie-se um novo arquivo onde serão inseridas apenas as instruções necessárias para o funcionamento do serviço na rede local:

#cd /etc/dhcp/
# mv dhcpd.conf  dhcpd.conf.ant

Para criarmos um arquivo com uma configuração básica do servidor DHCP basta editar o novo dhcpd.conf que, é claro, será um arquivo em branco:

#gedit dhcpd.conf

Vamos agora adicionar algumas instruções que determinarão como o servidor irá funcionar. Primeiramente, podemos adicionar a instrução ddns-update-style none que informa que o servidor realizará concessões de IP sem consultar o servidor DNS. Também é importante incluir instruções que controlem o tempo de concessão de endereços, para tanto temos os comandos default-lease-timee max-lease-timequecontrolam o tempo de renovação dos endereços IP em minutos e o tempo máximo que uma estação pode usar um determinado endereço IP respectivamente. E, finalmente, a instrução authoritative indica que o servidor será autorizativo, ou seja, a partir do momento que este servidor for reiniciado estará apto a realizar (ou autorizará) a concessão de endereços IP. Após essas configurações iniciais, basta indicar a sub-rede que desejamos controlar, veja o exemplo a seguir:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0
{
   range 192.168.1.100 192.168.1.200;
   option routers 192.168.1.2;
   option domain-name "minhaempresa";
   option domain-name-servers 192.168.1.2;
   option broadcast-address 192.168.1.255;
}

O bloco de comandos iniciados pela instrução subnet referem-se às configurações do servidor para uma determinada sub-rede (no exemplo, 192.168.1.0/255.255.255.0). Dentro deste bloco (que inicia com { e encerra com }) estão declarados: a faixa de endereços que o servidor irá servir (range), o endereços de gateway (option routers), o domínio DNS (option domain-name), o endereço IP do servidor DNS (option domain-name-servers) e broadcast (option broadcast-address) que serão informados aos clientes de rede que realizarem solicitações. Como você deve ter observado, os comandos do arquivo - com exceção dos marcadores de bloco - são encerrados por ponto e vírgula (;). Após salvar o arquivo de configuração, para efetivar as alterações devemos reiniciar o serviço de DHCP.

#invoke-rc.d  isc-dhcp-server restart

Assim como nos demais serviços de rede, além da opção restart podemos gerenciar o serviço DHCP através dos comandos: invoke-rc.d isc-dhcp-server start e invoke-rc.d  isc-dhcp-server stop.

B.1.3. Controle das concessões do servidor DHCP

As concessões realizadas pelo servidor DHCP são armazenadas no arquivo /var/lib/dhcp3/dhcpd.leases. Este arquivo não deve ser modificado, pois o servidor utiliza o seu conteúdo para realizar o controle das solicitações de endereços dos clientes de rede. Neste arquivo constam informações sobre o processo de concessão de endereços. Veja um exemplo do conteúdo deste arquivo a seguir:

lease 192.168.1.100 {
   starts 3 2011/05/11 14:13:25;
   ends 3 2011/05/11 14:23:25;
   tstp 3 2011/05/11 14:23:25;
   cltt 3 2011/05/11 14:13:25;
   binding state free;
   hardware ethernet 00:0c:29:4e:c1:fa;
   uid "\001\000\014)N\301\372";
}
server-duid "\000\001\000\001\025Q\264\371\000\014)\026nX";

Periodicamente, este arquivo é reiniciado e seu conteúdo salvo em um arquivo de backup chamado dhcpd.leases~.

B.1.4. Gerenciando o acesso servidor DHCP

O servidor permite identificar quais interfaces de rede deverão responder por requisições DHCP. Este recurso é útil no caso de um servidor mais de uma interface de rede. Vamos supor que o gateway da rede também seja um servidor DHCP. Neste caso, temos que garantir que o servidor apenas responda às requisições que venham apenas pela interface de rede que conecta o servidor à rede local (eth1, por exemplo). Para realizar esse ajuste, basta editar o arquivo /etc/default/isc-dhcp-server

#gedit  /etc/default/isc-dhcp-server

e alterar o parâmetro INTERFACES:

INTERFACES="eth1"

Dessa forma, o servidor responderá apenas as solicitações enviadas por meio da interface indicada.

B.1.5. Configurando IP fixo

Existem situações onde se faz necessário que determinados clientes DHCP recebam sempre o mesmo endereço IP. É o caso das impressoras de rede, por exemplo, muitas delas não possuem meios para a configuração de IP fixo, agindo unicamente como clientes DHCP. Sendo as concessões dinâmicas, podemos correr o risco de ter uma impressora compartilhada que alterna endereços IP, o que demandaria uma atualização constante do seu endereço nos clientes que a utilizam. Outro caso são estações de rede que precisam receber um dado endereço para fazer uso de determinados privilégios da rede. Felizmente, o isc-dhcp-server permite solucionar essas questões com a adição de algumas instruções no arquivo de configuração e tendo em mãos o endereço MAC da interface do host, a cujo endereço deseja-se fixar. Veja o exemplo:

host windows {
   hardware ethernet 00:0E:BC:12:CA:16;
   fixed-address 192.168.1.50;
}

As linhas acima determinam que um host chamado “windows”, cuja interface de rede  responde pelo endereço 00:0E:BC:12:CA:16, receberá sempre o endereço IP 192.168.1.50.