DHCP – Dynamic Host Configuration Protocol

 

Objetivo

 

No ambiente TCP/IP, cada host deve ter um conjunto de parâmetros configurados para poder comunicar-se. Estes incluem endereço IP, máscara, default gateway, servidor de DNS e outros. Alguns desses parâmetros são mandatórios e outros são opcionais.

 

Esta configuração pode ser manual (máquina por máquina) ou automática, utilizando o DHCP (RFC 2131). O DHCP possui três serviços: o cliente DHCP, o servidor DHCP e o DHCP relay.

 

 

Essencialmente, quando uma máquina inicializa, o DHCP cliente envia pela rede uma solicitação de endereço IP (e outros parâmetros) e informando o endereço físico da máquina (MAC Address). Um DHCP server responde a esta solicitação, enviando a configuração solicitada.

 

O DHCP é uma evolução dos protocolos RARP e BOOTP:

 

RARP – Reverse Address Resolution Protocol (RFC 903): tem abrangência apenas local, não suporta roteamento e não pode transportar outros parâmetros que não o endereço IP. Normalmente utilizado para estações diskless, terminais etc.

 

BOOTP – Booststrap Protocol (RFC 951): é o protocolo no qual o DHCP é baseado. O BOOTP é roteável e permite a configuração de vários parâmetros. A principal diferença é que o BOOTP não permite a alocação dinâmica de parâmetros, conforme explicada adiante. O DHCP foi projetado para ser interoperável com o BOOTP.

 

Modos de Operação

 

O DHCP pode operar de três maneiras:

 

Manual: neste modo, o administrador deverá listar todos os MAC address dos clientes que serão atendidos pelo DHCP server, e designar a cada um deles um endereço IP. Solicitações de outros clients não serão atendidas. É uma configuração importante para hosts que devem ter endereços fixos, como roteadores, servidores, etc, e também como procedimento de segurança, já que, deste modo, uma máquina não prevista não poderá conectar-se à rede por este meio.

 

Automática: o administrador configura uma faixa de endereços IP, que serão fornecidos à medida que forem solicitados pelos clientes. Uma vez fornecidos, estes endereços ficam permanentemente designados ao cliente, a menos que o administrador realize uma intervenção manual.

 

Dinâmica: nesta configuração, que é a mais usada, uma faixa de endereços é configurada, e dela um endereço será emprestado ao solicitante por um período, chamado lease-period. À medida que não forem mais necessários, eles endereços tornam-se novamente disponíveis a outros clientes automaticamente, facilitando o trabalho administrativo. O pool de endereços deverá corresponder apenas à quantidade de máquinas que operarem simultaneamente, e não a todas as máquinas existentes. É uma solução importante para provedores de acesso, por exemplo.

 

Terminologia

 

DHCP server: host que provê os endereços aos clientes através da porta UDP 67

 

DHCP client: host que solicita endereços, usado a porta UDP 68

 

DHCP relay: roteador ou host que propaga as solicitações de um client a um server que está em outra rede e vice-versa

 

Binding: conjunto de parâmetros de configuração enviado do server ao client

 

Funcionamento

 

No início da operação do DHCP, quatro pacotes são trocados, conforme ilustrado abaixo:

 

DHCPDISCOVER: broadcast enviado pelo cliente à porta 68 indicando que necessita de endereço IP e outros parâmetro. Neste ele informa seu MAC Address. Nesse ponto, o cliente está no status Init (ver abaixo)

 

DHCPOFFER: unicast remetido ao MAC Address do cliente pelo servidor, onde os parâmetros solicitados são oferecidos. Quando o cliente recebe um ou mais DHCPOFFERs, ele passa ao status Selecting.

 

DHCPREQUEST: broadcast (para que outros eventuais DCHP servers também recebem a informação) do cliente aceitando os parâmetros. Ao enviar esta solicitação, o cliente para a estar em Requesting.

 

DHCPACK: unicast com a informação completa para o cliente. A partir deste, inicia-se a contagem do período de empréstimo, e o cliente está em Bound.

Renovação do endereço IP

 

O período de empréstimo (lease period) é informado com os demais parâmetros solicitados. Além do valor do período, dois outros valores são enviados, cujos valores default são:

T1 = 0,5 x lease-period

 

T2 = 0,875 x lease-period

 

Quando T1 expira, o cliente envia um DHCPREQUEST unicast para o servidor, solicitando prorrogação do prazo. Neste ponto, seu status é Renewing.

 

Caso seja autorizado (depende da configuração do server), o servidor enviará um DHCP Acknowledgement, reiniciando a contagem do período de empréstimo, e retornando a Bound.

 

Caso o cliente não receba um DHCPACK até T2, ele enviará um DHCPREQUEST broadcast, que poderá ser respondido por qualquer servidor DHCP, e alterará seu status para Rebinding.

 

Caso ele não receba nenhuma nova configuração até o final do lease-period, ou receba um DHCPNACK informado que a solicitação foi rejeitada, ele cessará as comunicações e retornará ao estado inicial, Init.

 

 

Representação simplificada. Para detalhes, ver RFC 2131.

Mensagens DHCP

 

Geradas pelo Cliente

Geradas pelo Servidor

DHCPDISCOVER – broadcast enviado no início do processo

DHCPOFFER – unicast oferecendo parâmetros solicitados

DHCPREQUEST – enviado durante o processo de selecting, reboot, renewing, rebinding; pode ser unicast ou broadcast.

DHCPACK – unicast enviando parâmetros aceitos

DHCPDECLINE – informa ao servidor que o endereço fornecido não pode ser usado; o servidor deve assinalar o endereço como não disponível e gerar mensagem de erro para o administrador.

DHCPNACK – unicast informando ao cliente que seu período não será prorrogado, ou que a solicitação vem de uma subrede que o servidor não atende

DHCPRELEASE – informa ao servidor que o endereço pode ser usado por outro host. O servidor deverá assinalar quem enviou o release e, em caso de nova solicitação do mesmo cliente, tentará fornecer o mesmo endereço.

 

DHCPINFORM – cliente já configurado envia para o servidor solicitando parâmetros adicionais. Tempo de empréstimo não é reiniciado.

 

 

 

DHCP Relay

 

Como o pacote DHCPDISCOVER é um broadcast, ele não passaria normalmente pelo roteador, o que obrigaria cada rede ter seu próprio DHCP server.

 

Para evitar essa necessidade o roteador pode ser configurado com um DHCP Relay, o que signfica informá-lo para onde dele deve enviar os broadcasts recebidos pela porta 67.

 

Na figura ao lado, o roteador enviará para 10.0.0.253 todos os DHCPDISCOVERs recebidos das redes 10.1.0.0/16 e 10.2.0.0/16.

 

Ao fazê-lo, ele informará por qual das placas ele recebeu a solicitação original. Com base nesta informação, o DHCP Server, que atende a vários escopos, saber de qual deles enviará um endereço.