29.6. Protocolo de configuração dinâmica de hosts (DHCP)

O protocolo de configuração dinâmica de hosts (DHCP) permite que um sistema se conecte a uma rede para receber as informações de endereçamento necessárias para a comunicação nessa rede. O FreeBSD inclui a versão do dhclient do OpenBSD que é usada pelo cliente para obter as informações de endereçamento. O FreeBSD não instala um servidor DHCP, mas vários servidores estão disponíveis na coleção de Ports do FreeBSD. O protocolo DHCP é totalmente descrito em RFC 2131. Recursos informativos também estão disponíveis em isc.org/downloads/dhcp/.

Esta seção descreve como usar o cliente DHCP integrado. Em seguida, descreve como instalar e configurar um servidor DHCP.

Nota:

No FreeBSD, o dispositivo bpf(4) é necessário tanto pelo servidor DHCP como pelo DHCP > cliente. Este dispositivo está incluído no kernel GENERIC que é instalado com o FreeBSD. Usuários que preferem criar um kernel personalizado precisam manter este dispositivo se o DHCP for usado.

Deve-se notar que o bpf também permite que usuários privilegiados executem sniffers de pacotes de rede naquele sistema.

29.6.1. Configurando um cliente DHCP

O suporte ao cliente DHCP está incluído no instalador do FreeBSD, facilitando a configuração de um sistema recém-instalado para receber automaticamente as informações de endereçamento de rede de um servidor DHCP existente. Consulte Seção 2.8, “Contas, Time Zone, Serviços e Hardening” para exemplos de configuração de rede.

Quando o dhclient é executado na máquina cliente, ele inicia as solicitações de transmissão das informações de configuração. Por padrão, esses pedidos usam a porta UDP 68. O servidor responde na porta UDP 67 , fornecendo ao cliente um endereço IP e outras informações de rede relevantes como uma máscara de sub-rede, gateway padrão e endereços de servidor DNS. Esta informação está na forma de uma concessão de DHCP e é válida por um tempo configurável. Isso permite que endereços IP obsoletos para clientes que não estejam mais conectados à rede sejam reutilizados automaticamente. Clientes DHCP podem obter uma grande quantidade de informações do servidor. Uma lista exaustiva pode ser encontrada em dhcp-options(5).

Por padrão, quando um sistema FreeBSD inicializa, seu cliente DHCP é executado em segundo plano, ou asynchronously. Outros scripts de inicialização continuam sendo executados enquanto o processo DHCP é concluído, o que acelera a inicialização do sistema.

O DHCP em segundo plano funciona bem quando o servidor DHCP responde rapidamente às solicitações do cliente. No entanto, o DHCP pode levar muito tempo para ser concluído em alguns sistemas. Se os serviços de rede tentarem executar antes que o DHCP tenha atribuído as informações de endereçamento de rede, eles falharão. O uso do DHCP no modo synchronous impede esse problema, pois ele pausa a inicialização até que a configuração DHCP seja concluída.

Esta linha no /etc/rc.conf é usada para configurar o modo background ou assíncrono:

ifconfig_fxp0="DHCP"

Esta linha pode já existir se o sistema foi configurado para usar o DHCP durante a instalação. Substitua o fxp0 mostrado nesses exemplos pelo nome da interface a ser configurada dinamicamente, conforme descrito em Seção 11.5, “Configurando Placas de Interface de Rede”.

Para configurar o sistema para usar o modo síncrono e pausar durante a inicialização enquanto o DHCP é concluído, use SYNCDHCP:

ifconfig_fxp0="SYNCDHCP"

Opções adicionais do cliente estão disponíveis. Procure por dhclient in rc.conf(5) para detalhes.

O cliente DHCP usa os seguintes arquivos:

  • /etc/dhclient.conf

    O arquivo de configuração usado pelo dhclient. Normalmente, esse arquivo contém apenas comentários, pois os padrões são adequados para a maioria dos clientes. Este arquivo de configuração é descrito em dhclient.conf(5).

  • /sbin/dhclient

    Maiores informações sobre o comando em si podem ser encontradas em dhclient(8).

  • /sbin/dhclient-script

    O script de configuração do cliente DHCP específico do FreeBSD. Ele é descrito em dhclient-script(8), mas não deve precisar de nenhuma modificação do usuário para funcionar corretamente.

  • /var/db/dhclient.leases.interface

    O cliente DHCP mantém um banco de dados de concessões válidas neste arquivo, que é escrito como um log e é descrito em dhclient.leases(5).

29.6.2. Instalando e configurando um servidor DHCP

Esta seção demonstra como configurar um sistema FreeBSD para atuar como um servidor DHCP usando a implementação do servidor DHCP do Internet Systems Consortium (ISC). Esta implementação e a sua documentação podem ser instaladas usando o pacote ou port net/isc-dhcp43-server.

A instalação do net/isc-dhcp43-server instala um arquivo de configuração de exemplo. Copie o /usr/local/etc/dhcpd.conf.example para /usr/local/etc/dhcpd.conf e faça as alterações neste novo arquivo.

O arquivo de configuração é composto de declarações para sub-redes e hosts que definem as informações que são fornecidas aos clientes DHCP. Por exemplo, essas linhas configuram o seguinte:

option domain-name "example.org";1
option domain-name-servers ns1.example.org;2
option subnet-mask 255.255.255.0;3

default-lease-time 600;4
max-lease-time 72400;5
ddns-update-style none;6

subnet 10.254.239.0 netmask 255.255.255.224 {
  range 10.254.239.10 10.254.239.20;7
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;8
}

host fantasia {
  hardware ethernet 08:00:07:26:c0:a5;9
  fixed-address fantasia.fugue.com;10
}

1

Esta opção especifica o domínio de pesquisa padrão que será fornecido aos clientes. Consulte resolv.conf(5) para obter maiores informações.

2

Esta opção especifica uma lista separada por vírgula de servidores DNS que o cliente deve usar. Eles podem ser listados por seus nomes de domínio totalmente qualificados (FQDN), como visto no exemplo, ou por seus endereços de IP.

3

A máscara de sub-rede que será fornecida aos clientes.

4

O tempo de expiração da concessão padrão em segundos. Um cliente pode ser configurado para substituir esse valor.

5

O período máximo permitido de tempo, em segundos, para uma concessão. Se um cliente solicitar uma concessão mais longa, uma concessão ainda será emitida, mas será válida apenas para o tempo especificado em max-lease-time.

6

O padrão none desabilita as atualizações de DNS dinâmicas. Alterar isso para interim configura o servidor DHCP para atualizar um servidor DNS sempre que for concedido um contrato para que o servidor de DNS saiba quais endereços de IP estão associados a quais computadores na rede. Não altere a configuração padrão, a menos que o servidor de DNS tenha sido configurado para suportar DNS dinâmico.

7

Esta linha cria um conjunto de endereços IP disponíveis que são reservados para alocação a clientes DHCP. O intervalo de endereços deve ser válido para a rede ou sub-rede especificada na linha anterior.

8

Declara o gateway padrão que é válido para a rede ou sub-rede especificada antes do colchete de abertura {.

9

Especifica o endereço de hardware MAC de um cliente para que o servidor DHCP possa reconhecer o cliente quando ele fizer uma solicitação.

10

Especifica que este host deve sempre receber o mesmo endereço IP. A utilização do nome do host está correta, pois o servidor DHCP resolverá o nome do host antes de retornar as informações de concessão.

Este arquivo de configuração suporta muito mais opções. Consulte o dhcpd.conf(5), instalado com o servidor, para obter detalhes e exemplos.

Uma vez que a configuração do dhcpd.conf estiver completa, habilite o servidor DHCP em /etc/rc.conf:

dhcpd_enable="YES"
dhcpd_ifaces="dc0"

Substitua o dc0 pela interface (ou interfaces, separadas por espaço em branco) que o servidor DHCP deverá escutar por solicitações de clientes DHCP.

Inicie o servidor executando o seguinte comando:

# service isc-dhcpd start

Quaisquer mudanças futuras na configuração do servidor exigirão que o serviço dhcpd seja interrompido e, em seguida, iniciado usando service(8).

O servidor DHCP usa os seguintes arquivos. Observe que as páginas de manual são instaladas com o software do servidor.

  • /usr/local/sbin/dhcpd

    Maiores informações sobre o servidor dhcpd podem ser encontradas em dhcpd(8).

  • /usr/local/etc/dhcpd.conf

    O arquivo de configuração do servidor precisa conter todas as informações que devem ser fornecidas aos clientes, juntamente com informações sobre a operação do servidor. Este arquivo de configuração é descrito no dhcpd.conf(5).

  • /var/db/dhcpd.leases

    O servidor DHCP mantém um banco de dados das concessões que ele emitiu neste arquivo, que é gravado como um log. Consulte dhcpd.leases(5), o qual fornece uma descrição um pouco mais longa.

  • /usr/local/sbin/dhcrelay

    Esse daemon é usado em ambientes avançados, onde um servidor DHCP encaminha uma solicitação de um cliente para outro servidor DHCP em uma rede separada. Se esta funcionalidade for necessária, instale o pacote ou port net/isc-dhcp43-relay. A instalação inclui o dhcrelay(8), que fornece maiores detalhes.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.