Configuração de servidor DHCP no Debian Linux

Configuração de um simples e robusto servidor DHCP utilizando a distribuição Debian Lenny.

[ Hits: 144.409 ]

Por: Danilo Perillo Chiacchio em 17/02/2011


Editando arquivo de configuração do servidor DHCP



1. Para inserirmos as configurações desejadas para serem atribuídas aos hosts de nossa rede, precisamos inserir as configurações em um arquivo de configuração, que será "lido" pelo daemon do DHCP e realizará as tarefas necessárias.

O arquivo de configuração do ISC DHCP é o /etc/dhcp3/dhcpd.conf. O mesmo deve conter o seguinte conteúdo:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.30;
option domain-name-servers 208.67.222.222,208.67.220.220,8.8.8.8;
option domain-name "tuxnetwork.local.net";
option routers 192.168.1.4;
option broadcast-address 192.168.1.255;
}

host tux {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address tux.tuxnetwork.local.net;
}

Obs.: Edite o mesmo mediante o seu ambiente de rede desejado.

Explicando algumas das opções mais relevantes:

As opções do arquivo de configuração que ficam fora das chaves "{ }" são opções que chamados de globais, ou seja, opções que afetam toda a área de autoridade do servidor DHCP em questão. Já as opções que ficam dentro das chaves são opções específicas, que serão atribuídas a uma rede ou a um determinado host (como no caso da atribuição de um endereço IP sempre a um mesmo host).
  • default-lease-time 600: Especifica o tempo mínimo em segundos de checagem de endereço IP. Ao fim de cada intervalo, o daemon dhcpd verificará se o(s) IP(s) alocado(s) aos hosts ainda estão sendo utilizados. Isso para que não ocorra desperdício de endereços IP na rede;
  • max-lease-time 7200: Período máximo, também representado em segundos, de uma alocação de endereço IP a um cliente. Após esse período, o daemon dhcpd liberará o endereço IP, que deverá ser requisitado novamente pelo cliente ou por outra máquina autorizada;
  • authoritative: Indica que o servidor DHCP será autoritário em todo o seguimento da rede;
  • log-facility local7: Indica que o log será a facility local7. Podemos entender como facility a origem dos logs, ou seja, de onde ele está vindo. Podemos no arquivo de configuração do Syslog (serviço de log presente em muitas distribuições Linux) inserir uma entrada que direcione todos os logs do dhcpd para um arquivo separado, para facilitar nossa consulta por logs relacionados ao serviço de DHCP. No Debian, o arquivo de configuração do syslog fica em /etc/rsyslog.conf. A seguinte entrada pode ser adiciona ao mesmo:

    local7.* /var/log/dhcpd.log

    Com isso todos os logs com origem da facility local7 (facility essa que representa o serviço de DHCP) em qualquer priority (indica o nível de importância do log. No nosso caso, qualquer ocorrência representada pelo símbolo asterisco será logada) será direcionado ao arquivo /var/log/dhcpd.log.

  • range 192.168.1.20 192.168.1.30: Indica o range ou o intervalo de endereços que o servidor DHCP irá utilizar para distribuir aos hosts da rede;
  • option domain-name-servers 208.67.222.222,208.67.220.220,8.8.8.8: Servidores de Nomes (DNS) que serão atribuídos aos hosts da rede. Podem ser inseridos inúmeros servidores DNS. Os mesmos devem ser separados por vírgulas e sem espaço depois da vírgula;
  • option domain-name "tuxnetwork.local.net": Nome do domínio local que será atribuído aos hosts da rede. Essa opção é opcional e só deve ser usada caso desejado;
  • option routers 192.168.1.4: Endereço IP do gateway da rede. Geralmente esse dispositivo é um router e por isso a opção tem esse nome. Caso a comunicação dos hosts na rede seja somente local, essa opção também não é necessária.

No caso da entrada abaixo, é uma configuração especifica onde estará afetando somente um único host (devido a utilização das chaves). O host de nome "tux" estará recebendo um mesmo endereço IP sempre em que se conectar nessa rede. Isso é devido a uma entrada no arquivo de configuração do DHCP dizendo que um determinado endereço IP será sempre atribuído a um mesmo MAC Address - no caso o MAC Address do host tux:

host tux {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address tux.tuxnetwork.local.net;
}

1. É interessante indicarmos em qual interface de rede o daemon do DHCP receberá as solicitações de informações de rede. Podemos especificar qual será a interface de rede responsável por esse trabalho no arquivo de configuração /etc/default/dhcp3-server. Devemos procurar pela linha:

INTERFACES=""

e alterar a mesma para (estamos no caso inserindo qual será a placa de rede que recebera as solicitações dos clientes DHCP):

INTERFACES="eth0"

Observação importante: Para toda e qualquer configuração realizada no arquivo de configuração do servidor DHCP, o serviço do mesmo deverá ser reinicializado para que as novas alterações entrem em vigor.

2. Com o servidor DHCP já configurado, podemos realizar um teste a partir de uma estação cliente Linux configurado para receber informações de rede automaticamente (via DHCP). Existe um cliente DHCP para Linux chamado "dhclient", que tem o objetivo (quando utilizado) de enviar um broadcast na rede a procura de um servidor DHCP. Segue a sintaxe de utilização do mesmo:

# dhclient eth1

Obs.: No local de "eth1" você deve inserir a interface de rede que está em uso no seu sistema operacional.

Espero que tenham gostado.

Abraços,
Danilo.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Editando arquivo de configuração do servidor DHCP
Outros artigos deste autor

Instalando e Configurando o SAMBA3 no FreeBSD 8.1 Release

Anon-Proxy no Debian Lenny

Servidor SSH (Secure Shell Hosting)

Leitura recomendada

CoreOS no VirtualBox

Nagios + NagiosQL + PNP4Nagios

Instalação do PAP (PostgreSL, Apache2 e PHP7) no Debian Jessie

Compilando e instalando o Wine, WineTools e Internet Explorer(s) no Linux

zsh (Z shell) - Uma alternativa ao bash

  
Comentários
[1] Comentário enviado por removido em 17/02/2011 - 16:28h

Legal cara. Parabéns !


Abraço.

[2] Comentário enviado por pherde em 17/02/2011 - 17:38h

Artigo bacana, bem completinho, geralmente pessoal passa a instalação e um script e pronto, aqui tá tudo comentado.

Só achei que seria legal explicar como deixar sempre o mesmo Ip (que vc escolheria) para determinada placa de rede. Mas é basicamente a mesma coisa feita como na parte do MAC.

Parabéns.

Flw!

[3] Comentário enviado por Max_Fernandes em 19/02/2011 - 12:55h

legal, parabéns pelo post, já conhecia um pouco das confs, mas ainda não tinha visto como fazia o lance do MAC co IP fixo, legal mesmo e gostaria de saber se tem como fazer esta mesma atribuição para variar sempre que se conecta, ao invéz de colocar fixed-addres, colocar algo como no-fixed-address, agradeço e abraços e sucesso, porque todos somos livres!!!!!

[4] Comentário enviado por sayrus em 19/02/2011 - 17:48h

Dhcp no Debian 6 mudou o caminho da pasta e o modo de restart,os meus scripsts de instalação por exemplo não funciona mais como antes.

/etc/dhcp3/dhcpd.conf velho
/etc/dhcp/dhcpd.conf Debian 6

Parabéns,Danilo.

[5] Comentário enviado por joserf em 20/02/2011 - 17:20h

amigo sabe me dizer como faco pra instalar o dhcp3-server_3.1.1-3 no ubuntu 10.04 lts. obrigado

[6] Comentário enviado por danchiacchio em 20/02/2011 - 20:27h

Boa Noite Pessoal,

Eu quem agradeço por poder estar contribuindo com nossa comunidade.

:: Adex, sobre sua duvida se eu entendi corretamente, para que o endereço IP que é atribuído a um host variar a cada acesso, não é necessário criar uma chave com uma "exceção" de um determinado endereço IP para um endereço MAC Address especifico.

Talvez as opções abaixo terão que ser ajustadas para que isso funcione bem:

default-lease-time 600
max-lease-time 7200

:: Sayrus, ainda não realizei esses testes com o Debian 6. Mas mesmo assim, muito obrigado pela dica.

:: Joserf, sobre a instalação no Ubuntu, o process é basicamente parecido. Tente seguir esse artigo e faça alguns testes fazendo favor.

Abraços,
Danilo.

[7] Comentário enviado por fernandoborges em 29/03/2011 - 21:18h

Que legal!
Acho que vc baseou seu artigo no que o Morimoto publicou, né? Ou pode ser apenas uma coincidência, ;)
Veja: http://www.hardware.com.br/livros/servidores-linux/configurando-servidor-dhcp.html
:|

[8] Comentário enviado por danchiacchio em 29/03/2011 - 23:37h

Boa Noite Meu Amigo fernandoborges,

Sim, em partes. Mas assim é como eu configuro.

Muito Bom.

Abraços,
Danilo.

[9] Comentário enviado por aluxbruno em 30/03/2011 - 03:01h

meu velho eu sou usuaro linux a pouco tempo mais estou bem familiarizado com o linux já mais seu post esta bem simples e objetivo pra qualquer pessoa comum entender e querer a preder mais ainda sobre redes e servidores. parabéns parceiro que vc sempre venha a contribuir. abraço

[10] Comentário enviado por danchiacchio em 30/03/2011 - 09:58h

Bom dia amigo aluxbruno,

Que bom que gostou.

Abraços e Obrigado,
Danilo.

[11] Comentário enviado por vitortechno em 29/01/2012 - 13:51h

Amigo, tem como fazer controle de banda dos clientes ?


[12] Comentário enviado por danchiacchio em 29/01/2012 - 22:31h

Bom Noite "vitortechno", tudo bem?

Nesse caso, depende do objetivo que deseja alcançar em controlar a banda dos clientes. Esse controle seria para acesso a Internet? Se sim, pode utilizar outras ferramentas livres como o Squid para para fazer esse controle. Vai depender muito do seu ambiente e também das suas necessidades.

Já nesse esse artigo, visa apenas em conceder endereçamento IP e demais informações para hosts em uma rede, utilizando Linux para tal. Pelo que conheço, nesse caso não seria possivel fazer esse controle.

Abraço,
Danilo.

[13] Comentário enviado por vitortechno em 02/02/2012 - 00:27h

Opa, agora que fui ver Danilo!
Seria somente para acesso mesmo!
Seria no caso setar um limite de download para um usuário e para outro usuário setar outro limite... e também limitar o link mesmo de cada usário, tipo gostaria de colocar o ip 192.168.10.10 com um link de 200k e o ip 192.168.10.15 com um link de 300k, tem como fazer isso também no squid ?
Ainda estou engatinhando no linux.

[14] Comentário enviado por danchiacchio em 02/02/2012 - 17:53h

Boa Tarde "vitorechno",

A resposta é sim. Com Squid você pode fazer tudo isso é muito mais. Se sua rede local utiliza VLAN, ou seja, é segmentada em sub-redes, poderá definir uma velocidade que os hosts dessa sub-rede poderão possuir, ou em um host em especifico, caso necessário.

Aqui no VOL, existem alguns artigos sobre Squid. De uma olhada:

http://www.vivaolinux.com.br/artigos/verSubCategoria.php?codigo=101

http://www.vivaolinux.com.br/artigo/Implementacao-de-um-servidor-Linux-Squid-+-Iptables-+-DHCP

http://www.vivaolinux.com.br/artigo/Instalacao-e-configuracao-do-Squid-no-Fedora

Abraço,
Danilo.

[15] Comentário enviado por psychokill3r em 14/02/2012 - 11:38h

Ola a todos.

Antes de mais nada obrigado pelo artigo muito bom mesmo.

Tenho uma questão que depende de experiencia com dhcp .
To administrando uma rede pequena com 50 maquinas e todos setados na mão , quero por um dhcp nessa rede , mais a questão é o seguinte :

O DHCP server vai entender que ja tenho maquinas com ip setado , vou por um range 10.X.X.200 até 10.x.x.254, minha questão é : o dhcp vai entender um host que já tem um ip 10.x.x.210 por exemplo e pular esse endereço ou ele só reconhece ips que ele mesmo determinou?

Obrigado

E VIVA o GnuLinux.

[16] Comentário enviado por danchiacchio em 14/02/2012 - 17:30h

Boa Tarde psychokil3r,

Que bom que gostou.

Mas referente a sua duvida, para resolver essa questão não é necessário muita experiência com DHCP, mas sim conhecer basicamente como o protocolo DHCP funciona em si.

Basicamente, quando uma máquina está configurada para obter infomações de rede (como IP, Mask, Gateway, etc) de maneira automática, ou seja, via DHCP, no momento em que a mesma é ligada/conectada na rede ela envia um pacote do tipo Broadcast para o endereço de destino 255.255.255.255 e porta de destino 67 a procura de um DHCP Server. Existindo um DHCP Server nesse dominio de broadcast, o mesmo irá ofertar as devidas informações ao host.

Agora, se suas estações já possuem endereçamento IP inserido manualmente, elas permaneçam com esses endereços. Porém, atenção:

Se pretende deixar alguma estação com endereçamento IP estático na rede, crie uma reserva de endereço IP para mesma no DHCP, ou no momento da criação do POOL de endereços IP, reserve uma faixa de endereços que não será distribuida pelo servidor DHCP. Assim, você não terá problemas com conflito de endereços IP's em sua rede.

Espero ter ajudado.

Abraço,

Danilo.

[17] Comentário enviado por dalveson em 06/04/2012 - 15:49h

Bom dia danchiacchio,
Queria sua ajuda no conf meu dhcp, gostaria de fixar o ip ao MAC, ate consegui seguindo sua dica:
host tux {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address tux.tuxnetwork.local.net;
}
Funcionou legal, porem gostaria de fixar uns 70 computadores e se eu repetir essa regra 70 vezes meu dhcpd.conf vai ficar muito longo, por isso gostaria de saber se tem algum metodo deu criar um arquivo e colocar dentro dele o MAC;IP e configurar o dhcpd.conf para ler esse arquivo?
Assim ficaria mais organizado ao inves deu repetir 70 vezes a regra que fixa o ip dentro do arquivo dhcp.conf.
att

[18] Comentário enviado por danchiacchio em 07/04/2012 - 00:28h

Ola dalveson,

Nesse caso, poderá criar um arquivo externo com a definição/reservas que desejas criar para seus hosts.

Depois, no final do arquivo de configuração do DHCP, inserir:

include "/etc/dhcpd/clientes" ;

Onde:

/etc/dhcpd/clientes = Arquivo onde encontram-se as reservas.

Fonte: http://under-linux.org/f175/dhcp-conf-chamando-script-externo-100293/

;-)

Danilo.

[19] Comentário enviado por dalveson em 09/04/2012 - 11:36h

danchiacchio vlw pela dica, vou testa aqui e qualquer coisa lhe reporto
att

[20] Comentário enviado por Carlos_Cunha em 02/10/2012 - 14:41h

Foi de ajuda!

Abraço :-D

[21] Comentário enviado por nikole em 04/06/2014 - 07:49h

Existe algum comando para poder reiniciar o dhcp nas maquinas?

tipo tenho um computador que pegou o ip 1.20
ai dou um restart ou algum comando no dhcpd
que ele ira fazer outra entrega para todos os outros host ai no meu caso ele ira pegar outro ip ex 1.36

teria?
obrigada


Contribuir com comentário