DHCP no GNU/Linux – Guia para ISC-DHCP Server

DHCP

Este pequeno guia faz parte de um artigo postado no site esli-nux.com, porém lá, além de DHCP Server usando GNU/Linux, também há um passo a passo demonstrando sob Windows Server, Equipamento CISCO (via CLI) e esses roteadores SOHO “tudo em 1”, de R$ 100.

Claro que meu foco é favorecer o uso do GNU/Linux para prover este serviço, para isto, mostro desde a configuração mais simples, até algumas avançadas, tanto em modo texto, quanto as mais variadas interfaces gráficas existentes no S.O., para configurar e monitorar este simples serviço de rede.

No GNU/Linux, abordo o DHCP Server mais utilizado no mundo (da ISC), as configurações mais utilizadas, o cliente de DHCP e alguns macetes a mais.

Softwares para prover o serviço

Diferentemente do Windows Server, cujo software que irá prover o serviço de DHCP já está incluso no sistema operacional, cabendo ao administrador ativá-lo e configurar; não havendo, portanto, uma opção de escolha sobre o software, já que não é o sistema operacional que provê o serviço, e sim um software nele instalado, no GNU/Linux existe esta capacidade, pois seu Kernel não é fechado, e nenhum software exerce um monopólio sobre algum serviço.

Dentre os programas que podem ser instalados nas distribuições GNU/Linux e prover o servidor de DHCP, há o BusyBox, Dibbler, ISC DHCP, e mais alguns.

BusyBox DHCP server, ou também conhecido como “udhcpd” (servidor) e “udhcpc” (cliente), é famoso por ser um pequeno servidor/cliente. Geralmente adotado em sistemas embarcados ou em situações onde as memórias ROM e RAM, são extremamente escassas, e que o sistema GNU/Linux é modificado para ocupar, por exemplo 20 MB de espaço no disco e 8 ou 10 MB na memória RAM.

Wide-DHCPv6 originalmente desenvolvido no projeto KAME, pela universidade Keio do Japão (Minato, Tokyo), é um servidor DHCPv6, ou seja, somente IPv6, para os sistemas operacionais GNU/Linux e BSD, ele foi concluído e parado em 2006.

Há também uma modificação do Wide-DHCPv6, chamada Dibbler, que provê o DHCPv6 server e provê endereçamento para GNU/Linux (kernel 2.4 e 2.6), Windows (a partir do XP, 2003 e superiores), Windows NT4 e 2000 (mas é experimental), e Mac OS X. Porém, o Dibbler está com seu desenvolvimento parado.

DHCP é a sigla para: Dynamic Host Configuration Protocol, ou Protocolo de Configuração Dinâmica de Hosts. O Protocolo DHCP é definido pela RFC 2131 (Request For Coments).

Além das RFC 3315 (para DHCP com IPv6), RFC 2132 (opções de extensões e parâmetros DHCP e BOOTP), RFC 2489 (processo para a definição de novas opções DHCP) e RFC 1584 (interoperabilidade entre o DHCP e BOOTP).

As documentações e textos das RFCs, não só as citadas acima, mas todas as RFCs existentes estão disponíveis online, através do endereço:

A função do serviço DHCP (ou de um servidor de DHCP), é atribuir números de IP para os computadores, ou qualquer interface conectada em uma rede, o principal formato deste serviço, e também um dos principais motivos de sua adoção, é para utilizar a forma dinâmica de endereçamento.

O DHCP é uma evolução do Bootstrap Protocol (BOOTP, descrito na RFC 951), que por sua vez, vem do protocolo RARP, para que uma máquina soubesse seu endereço de IP, era utilizado o RARP (Reverse Address Resolution Protocol), ou Protocolo reverso de resolução de endereços, definido na RCF 903. Este protocolo permite que uma estação, recém inicializada com seu sistema operacional obtido através de um servidor de arquivos remoto, informasse seu endereço físico na rede, solicitando o seu endereço IP, o servidor RARP recebia esta solicitação, consulta o endereço físico da máquina na rede e respondia com o seu endereço IP correspondente.

Seu problema era que o servidor tinha que estar em cada rede, pois a mensagem de difusão solicitando o endereçamento não passava pelos roteadores. Para solucionar este problema, foi criado um protocolo alternativo de inicialização, o chamado BOOTP, que utiliza mensagem UDP, sendo assim possível sua retransmissão, ou encaminhamento pelos roteadores.

O BOOTP já possui a capacidade de informar outras configurações para a máquina cliente, como o endereço do roteador (chamado gateway), máscara de sub-rede e o endereço do servidor de arquivo que contém a imagem da memória.

Porém, o principal problema no BOOTP, é que somente a atribuição manual de endereços IP é possível, ou seja, o administrador deve cadastrar no servidor BOOTP, todos os endereços físicos/endereço MAC (Media Access Control address) das máquinas conectadas à rede, e seus respectivos endereços IP.

Concluindo, portanto, que no BOOTP o endereço IP pertence à máquina cliente, o servidor apenas a informa quando solicitado.

No início da década de 90, o IETF (Internet Engineering Task Force) trabalhou em um substituto, capaz de superar as limitações do BOOTP e adicionasse recursos novos, definindo-o então, como DHCP através da RFC 2131 de Maio de 1997.

Nas documentações RFC, há uma tentativa de aplicar uma Interoperabilidade entre o BOOTP e DHCP, ou seja, servidores DHCP trabalhar com antigas máquinas cliente BOOTP, e servidores BOOTP com máquinas DHCP. Porém, o BOOTP possui muitas limitações, comparado ao DHCP.

Claro, esta interoperabilidade é funcional, porém, nem sempre ocorre. Mesmo assim, a troca dos equipamentos e o seu desuso faz com que esta interoperabilidade não seja adotada, nem necessária com o passar do tempo.

Funcionamento do DHCP – ISC-DHCP Server

Funcionamento do DHCP

Inicialmente, as configurações sobre a rede e o endereçamento, são inseridas no servidor, que passa a distribuir os endereços de IP às interfaces conectadas a rede, claramente, que estas interfaces devem possuir suporte a tal serviço e estarem configuradas a solicitar o endereço a algum DHCP Server.

Além dos endereços, o servidor de DHCP pode realizar a “concessão” de outras configurações/serviços da rede, como endereços de servidores DNS, gateways, entre outros.

O DHCP usa a estrutura de Cliente/Servidor:

  • No Servidor, está o software que prove o serviço, onde encontramos as configurações e parâmetros e mantém o gerenciamento dos endereços atribuídos.
  • Já os clientes, desde que tenham suporte ao serviço, solicitam o endereço e obtém a concessão de um IP.

Esse procedimento, envolve quatro passos:

  1. Discover – Quando o cliente solicita o endereçamento;
  2. Offer – É fornecido o endereço ao cliente;
  3. Request – O endereçamento é aceito;
  4. Acknowledge – O endereço é listado no servidor, o IP é nomeado como pertencente aquele host ou interface.

Uma negociação simples de solicitação DHCP, ocorre com a troca das mensagens: DHCP Discover, DHCP Offer, DHCP Request e o DHCP Ack.

ISC-DHCP Server

ISC DHCP é o mais conhecido e utilizado, desenvolvido pela “Internet Systems Consortium”, uma organização sem fins lucrativos que desenvolve e distribui softwares no formato Open Source, além de prestar suporte, prezando pela mesma qualidade das maiores empresas de softwares comerciais.

Além do DHCP mais utilizado, eles também desenvolvem o sistema de DNS mais adotado, conhecido como BIND, entre outros projetos também desenvolvidos e/ou distribuídos pela ISC estão o NTP, INN, IRRToolSet, libbind, OpenReg, operam também o “F-root”, que é um dos 13 roteadores DNS que mantém a Internet funcionando. ;-O

ISC-DHCP é uma coleção do software que executa todos os aspectos do DHCP (protocolo de configuração de host dinâmico). Inclui um servidor DHCP, que recebe pedidos e responde, um cliente DHCP, que estará no sistema operacional do computador do cliente, e que emita pedidos ao servidor, um agente relay DHCP, que passa pedidos do DHCP de uma rede LAN à outra de modo que não precise de um servidor DHCP em cada LAN.

O servidor de ISC-DHCP responderá a pedidos de todos os clientes que cumprem com os padrões de protocolo definidos na RFC, e o cliente ISC-DHCP pode interagir com qualquer servidor, desde que também cumpra esses padrões.

Portanto, os componentes do ISC-DHCP não precisam ser utilizados em conjunto, por haver a padronização que é regida pelas RFC’s, há a interoperabilidade entre clientes e servidores de todas as soluções para a implantação do DHCP, comercial ou Open Source, e de qualquer plataforma e/ou sistema operacional.

O ISC DHCP server foi desenvolvido originalmente por Ted Lemon, que o manteve até o release 3.0, com a versão alpha liberada em março/1999, e sua versão final em janeiro 2003. Desde 2004, a manutenção e o desenvolvimento preliminar do ISC DHCP, especialmente o suporte ao IPv6 está ao cargo de David Hankins no ISC.

A versão atual do ISC DHCP é: 4.2.4.P1, que foi lançada em 24 de Julho de 2012. Esta versão possui diversas características novas que a versão anterior (4.0.X) não possuía, entre elas, o DHCPv6 foi melhorado, suporte à delegação de prefixo, suporte a endereços IA_TA, agente relay DHCPv6 (dhcrelay6).

Todas as características desta versão são encontradas nos arquivos que o acompanham, no documento chamado “Release Notes” encontra-se também o que será implantado na próxima versão,que já está em testes e desenvolvimento.

Um dos recursos que está sendo melhorado, é o suporte ao DHCPv6, uma de suas limitações na versão atual, é que apenas tem suporte para os sistemas operacionais Solaris, GNU/Linux, FreeBSD, NetBSD, e OpenBSD.

O cliente e o servidor somente operam com DHCPv4, ou DHCPv6, por vez, não ao mesmo tempo. Para que haja este serviço simultâneo, deve ser executado duas instâncias do serviço.

Uma das fontes de receita e captação de recursos da ISC é a disponibilização de suporte profissional à empresas, consultoria, treinamento a administradores de sistemas e em breve, um programa de certificação para profissionais.

Instalação – Configuração básica

Instalação e configuração do ISC-DHCP

A versão mais recente, pode ser obtida no endereço:

Após baixar, basta descompactar e compilar o pacote.

Outra forma de instalar o ISC-DHCP server, é através do repositório da distribuição GNU/Linux que está sendo utilizada. O repositório é basicamente um servidor de arquivos disponível na Internet, onde possui diversos programas e pacotes pré-compilados para a distribuição GNU/Linux especifica, a maioria dos repositórios somente são acessíveis através do gerenciador de pacotes presente na distribuição GNU/Linux, basta que a máquina em questão esteja conectada com a Internet.

Nas distribuições derivadas do Debian (Ubuntu, Kurumin, Linux Mint, etc…), o pacote correspondente ao servidor DHCP chama-se “dhcp3-server”. Para instalá-lo, basta digitar:

# apt-get install dhcp3-server

No Red Hat (e distribuições derivadas dele, como o Fedora e CentOS), o pacote chama-se, simplesmente, “dhcp”. Para instalá-lo, basta digitar:

# yum install dhcp

Embora o pacote chama-se apenas “dhcp”, o script referente ao serviço, chama-se “dhcpd”, de forma que os comandos para iniciar, parar o serviço, ou reiniciá-lo, são:

# service dhcpd start
# service dhcpd stop
# service dhcpd restart

Ou também, através dos comandos:

# /etc/init.d/dhcp3-server start
# /etc/init.d/dhcp3-server stop
# /etc/init.d/dhcp3-server restart

Também pode haver a necessidade de ativá-lo, ou desativar manualmente para iniciar junto com o sistema (junto ao boot), usando o comando chkconfig:

# chkconfig dhcpd on
# chkconfig dhcpd off

Configuração básica

O arquivo de configuração é o “dhcpd.conf”. Neste, será configurado o servidor, e lá estará inserido todas as informações a cerca de seu funcionamento. Ao instalar o serviço, ele já adiciona o arquivo, porém, como não está configurado, o serviço não ficará ativo até que esteja configurado corretamente e dado o comando para iniciar o serviço.

Este arquivo, originalmente, possui cerca de 110 linhas, sendo que 90% delas são textos comentados, explicando cada item da configuração, como configurar e dando exemplos de configurações.

A localização do arquivo “dhcpd.conf” no sistema GNU/Linux é /etc/dhcp3/dhcpd.conf, em algumas distribuições, pode ser em /etc/dhcpd.conf.

Após instalar o ISC-DHCP, deve-se determinar, caso haja mais de uma, qual placa de rede o servidor DHCP estará ativo, ou seja, em qual placa ele atenderá as requisições.

Para isto, basta editar o arquivo presente em /etc/default/dhcp3-server, na maioria das distribuições. Ao editar o arquivo, haverá uma linha apenas escrito “INTERFACES” nela, deverá ser inserido o nome da placa de rede em que deseja que o serviço seja ativado:

INTERFACES=”eth0”

O GNU/Linux identifica as placas de rede como “eth”, seguido do número a partir do 0, caso tenha 3 placas, serão respectivamente, “eth0”, “eth1” e “eth2”. Em caso de utilização de placa Wireless, ela pode ser identificada “wlan0”, “ath0” ou “ra0”, por exemplo. Ao definir em qual placa o servidor DHCP irá atender, deve-se finalmente configurar.

Nesta etapa, há 3 opções:

  1. Utilizar o arquivo “dhcpd.conf” original, seguindo as instruções e usando a configuração desejada;
  2. Criar um novo arquivo “dhcpd.conf” e adicionar a configuração;
  3. Utilizar um aplicativo em modo gráfico para a configuração.

Nas 2 primeiras opções, o arquivo “dhcpd.conf” ficará, basicamente, semelhante ao seguinte:

# /etc/dhcp3/dhcpd.conf
ddns-update-style none;
default-lease-time 1800;
max-lease-time 14400;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.250;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8,8.8.4.4;
option broadcast-address 192.168.1.255;
host Win2003 {
hardware ethernet 09:0F:B0:FF:EA:10;
fixed-address 192.168.1.2;
}
}

Com a exceção de que, na primeira opção de configuração, entre cada uma dessas linhas haverá textos explicando cada função, para que serve, como funciona e um exemplo de configuração.

default-lease-time 1800;

Nesta linha, é indicado ao servidor, checar a cada 1800 segundos (30 minutos), se a máquina está ativa, ou seja, utilizando o endereço DHCP.

max-lease-time 14400;

Nesta opção, a máquina cliente irá receber o “aluguel” do endereço IP por 14400 segundos (4 horas), ou seja, é o tempo que a máquina vai receber para utilizar o endereço. Depois de decorrido um percentual deste tempo, a máquina cliente vai requisitar a renovação.

Caso a rede possua, por algum motivo, um pool de endereços pequeno, e haja mais máquinas do que IP’s disponíveis, estas duas configurações deverão ter seu tempo reduzido, pois assim, a máquina utiliza o IP apenas pelo tempo em que necessita, e caso seja desligada ou desconectada da rede, o servidor DHCP irá detectar isso em menos tempo, tendo assim o endereço IP, disponível novamente para ser atribuído à outro host.

subnet 192.168.1.0 netmask 255.255.255.0

Essa linha determina a rede, sub-rede e a máscara da rede em que o servidor irá trabalhar, atribuindo os endereços IP. As linhas de configuração seguintes definirão a rede, o pool de endereços (range), exceções (IP fixo), endereços de servidores de nome de domínio.

range 192.168.1.100 192.168.1.250;

Range, define o pool de endereços que ficarão disponíveis para a atribuição automática de endereços. Neste exemplo, os endereços que o servidor irá atribuir ficam no “espaço” entre “192.168.1.100” e “192.168.1.250”, ou seja, há 150 endereços disponíveis para os hosts da rede.

Conclui-se portanto, que há 102 endereços que não fazem parte do range, destinados portanto para máquinas que desempenham algum papel importante na rede e precisam de um endereço físico.

option routers 192.168.1.1;

Esta linha informa para as máquinas qual é o endereço de “gateway” ou do roteador, que está na “divisa” entre a rede interna e a Internet, por exemplo, exercendo a função de firewall ou proxy na maioria dos casos.

option domain-name-servers 8.8.8.8,8.8.4.4;

Aqui, deve ser informado (opcionalmente) os endereços de servidores de resolução de nomes de endereço/domínio, ou DNS. Redes pequenas, em sua maioria, não possuem DNS’s próprios, os endereços aqui inseridos são os DNS’s fornecidos pela provedora de Internet, pode-se usar qualquer endereço de DNS público, como por exemplo, o OpenDNS (208.67.222.222 e 208.67.220.220) ou o DNS do Google (8.8.8.8 e 8.8.4.4).

option broadcast-address 192.168.1.255;

Informado opcionalmente, o endereço de broadcast da rede. O endereço com final 255 é reservado para broadcast.

host Win2003 {
hardware ethernet 09:0F:B0:FF:EA:10;
fixed-address 192.168.1.2;
}

O bloco acima é para definir a atribuição manual de IP fixo para uma determinada máquina, inicia-se com o nome da máquina.

Neste exemplo, ela chama-se “Win2003”, declarando que trata-se de um servidor Microsoft Windows 2003, e que desempenha algum serviço importante na rede, após o nome, indica-se o seu endereço físico de rede (o MAC da placa), e finalmente, o IP que sempre será dado a esta máquina quando ela requisitar. Para adicionar mais máquinas que receberão este tipo de atribuição, basta inserir um bloco semelhante a este, mudando apenas o nome, o MAC e o IP destinado a ela.

Monitorando o servidor e o cliente – ISC-DHCP Cliente

Monitorando o serviço via terminal

/var/lib/dhcp/dhcpd.leases

É neste arquivo onde monitora-se, em tempo real, o que o DHCP Server está fazendo em relação a concessão dos IPs (usando o Debian GNU/Linux, pode haver alguma alteração no caminho do arquivo em outras distribuições).

Exemplo de trecho do arquivo:

}
lease 192.168.0.110 {
  starts 4 2012/07/26 15:31:11;
  ends 4 2012/07/26 15:36:13;
  tstp 4 2012/07/26 15:36:13;
  cltt 4 2012/07/26 15:31:11;
  binding state free;
  hardware ethernet 00:26:5a:06:3d:a2;
  uid "\001\000&Z\006=\242";
}
lease 192.168.0.112 {
  starts 5 2012/07/27 19:52:39;
  ends 5 2012/07/27 20:02:39;
  tstp 5 2012/07/27 20:02:39;
  cltt 5 2012/07/27 19:52:39;
  binding state free;
  hardware ethernet 74:a7:22:9d:a7:0e;
}
lease 192.168.0.100 {
  starts 1 2012/07/30 14:14:15;
  ends 1 2012/07/30 14:24:15;
  cltt 1 2012/07/30 14:14:15;
  binding state active;
  next binding state free;
  hardware ethernet 92:b3:43:b5:c3:fb;
  uid "\001\222\263C\265\303\373";
  client-hostname "vmxp";
}
lease 192.168.0.102 {
  starts 1 2012/07/30 14:18:22;
  ends 1 2012/07/30 14:28:22;
  cltt 1 2012/07/30 14:18:22;
  binding state active;
  next binding state free;
  hardware ethernet 42:d9:7e:be:11:f8;
  client-hostname "lamp";
}

O arquivo /var/lib/dhcp/dhcpd.leases~, contém dados mais antigos.

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 paradhcpd.leases~, e o banco de dados temporário é salvo como “dhcpd.leases”.

Cliente

No caso do cliente DHCP, o arquivo chama-se /var/lib/dhcp/dhclient.leases

Num dos servidores usado para criar este guia, ele tanto é um servidor DHCP quanto um cliente, pois também está funcionando como roteador/firewall/proxy.

Exemplo de trecho do arquivo:

lease {
  interface "eth1";
  fixed-address 187.22.179.60;
  option subnet-mask 255.255.252.0;
  option dhcp-lease-time 10800;
  option routers 187.22.176.1;
  option dhcp-message-type 5;
  option dhcp-server-identifier 201.46.240.45;
  option domain-name-servers 201.46.240.40,201.46.240.45;
  option dhcp-renewal-time 5400;
  option dhcp-rebinding-time 9450;
  renew 1 2012/05/14 13:02:34;
  rebind 1 2012/05/14 14:15:36;
  expire 1 2012/05/14 14:38:06;
}

ISC-DHCP Cliente

O ISC-DHCP também possui um cliente, como dito anteriormente, no arquivo /var/lib/dhcp/dhclient.leases, você tem um monitoramento onde verifica as ações do cliente quando recebe o endereçamento.

Com o ISC cliente instalado, você terá o programa dhclient, com ele você pode “resetar” uma placa com IP manual, para pegar IP pelo DHCP Server, removendo assim, as configurações de IP feitas manualmente.

Abaixo, o resultado do comando:

# dhclient eth0 -v

Internet Systems Consortium DHCP Client
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/10:78:d2:1e:32:30
Sending on LPF/eth0/10:78:d2:1e:32:30
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8
DHCPOFFER from 192.168.0.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.40 — renewal in 270 seconds.

No log acima, meu servidor DHCP é o “192.168.0.1”, meu host recebeu o IP “192.168.0.40” na interface “eth0”.

Modelos de dhcpd.conf e configurações opcionais/avançadas

Exemplo 1

ddns-update-style interim;
update-static-leases on;
ddns-domainname "teste.com.br.";
ddns-rev-domainname "0.168.192.in-addr.arpa.";
key DHCP_DNS {
algorithm hmac-md5;
secret "qLBp520GmSiCXEhM6Y6nyQ==";
};
zone 0.168.192.in-addr.arpa. {
primary 127.0.0.1;
key "DHCP_DNS";
}
zone teste.com.br. {
primary 127.0.0.1;
key DHCP_DNS;
}
authoritative;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.0.0 {
range 192.168.0.100 192.168.0.120;
option domain-name-servers 192.168.0.1;
option domain-name "teste.com.br";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
option netbios-name-servers 192.168.0.1;
}

No exemplo 1 acima, o meu servidor DHCP também é o meu DNS server e proxy (firewall + roteador) e login (uma solução para pequena empresa, onde tenho um Debian disponibilizando diversos serviços), nestas “configurações globais” as únicas mudanças são em relação ao DNS.

Exemplo 2 (trecho)

subnet 172.16.200.0 netmask 255.255.255.0 {
range 172.16.200.50 172.16.200.200;
range 172.16.200.230 172.16.200.253;
option domain-name-servers 172.16.200.1, 172.16.200.2;
option domain-name "teste.com.br";
option routers 172.16.200.254;
}

No exemplo acima, podemos colocar mais de um intervalo (range) de IPs que serão oferecidos para os clientes, nele está configurado do final x.50 até o x.200, e depois, do x.230 ao x.253.

Veja que isso já é uma facilidade no GNU/Linux, como exemplo, se fosse no Cisco, eu deixaria o range do x.50 até o x.253, e colocaria o intervalo de x.201 ao x.229, como reservado.

Exemplo 3

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.200;
option domain-name-servers 192.168.0.1, 192.168.0.2;
option domain-name "teste.com.br";
option routers 192.168.0.254;
}
          host maq01 {
          hardware ethernet 00:1e:8c:66:97:f1;
          fixed-address 192.168.0.3; option routers 192.168.0.1; }
          host maq02 {
          hardware ethernet 00:50:56:c0:00:01;
          fixed-address 192.168.0.55;
          option domain-name-servers 192.168.0.5;
          option routers 192.168.0.9; }
          host maq03 {
          hardware ethernet 00:55:56:c0:a1:51;
          fixed-address 192.168.0.102;}

Acima, está sendo definido informações individuais para máquinas com IP fixo, ou seja, o que está nas configurações globais será aplicado em todas as máquinas, mas, você pode deixar algumas com configurações diferentes e exclusivas para aquele host (já que o IP estará atrelado com o MAC address).

No nosso exemplo, a “maq01” receberá um router (gateway / acesso à rede) diferente de todas as outras máquinas da rede, enquanto as outras máquinas recebem o router 192.168.0.254, a “maq01” receberá o router 192.168.0.1.

A “maq02”, além de receber um router diferente, também recebe outro servidor DNS para usar como sua configuração de rede. A “maq03”, recebe os valores padrões definidos na configuração global.

Exemplo 4

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.200;
option domain-name-servers 172.16.200.1, 172.16.200.2;
option domain-name "teste.com.br";
option routers 172.16.200.254;
}
          group servidores {
          option domain-name-servers 208.67.222.222;
                    host server01{
                    hardware ethernet 00:50:51:e1:00:01;
                    fixed-address 192.168.0.43;
                    option routers 192.168.0.9;}
                    host server02 {
                    hardware ethernet 00:80:54:c5:30:02;
                   fixed-address 192.168.0.39;
                    option routers 192.168.0.11;}
          }
          group roteadores {
          option routers 192.168.0.1;
          option domain-name-servers 192.168.0.41;
                    host router01 {
                    hardware ethernet 00:20:51:e1:00:21;
                    fixed-address 192.168.0.13;}
                    host router02 {
                    hardware ethernet 00:80:14:c5:32:22;
                    fixed-address 192.168.0.19; }
          }
           group maquinas {
                    host maq01 {
                    hardware ethernet 00:20:51:e1:00:50;
                    fixed-address 192.168.0.13; }
                    host maq02 {
                    hardware ethernet 00:80:14:c5:32:51;
                    fixed-address 192.168.0.19;}
          }

Uma outra opção, é trabalhar com grupos. No exemplo acima, tenho as configurações globais, um grupo chamado “servidores” que tem uma alteração no DNS, ou seja, a configuração sobre DNS que as máquinas do grupo “servidores” irão usar não são as definidas nas configurações globais, mas sim, no início da configuração do grupo.

Outro grupo, chamado “roteadores”, também terá configurações exclusivas, neste caso, além do DNS diferente, o router também é outro. No grupo “maquinas”, configurei 2 IPs fixos para máquinas da rede, tanto estas 2 quanto as demais máquinas da rede receberão a configuração padrão, definida no campo de configurações globais.

Exemplo 5

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.200;
option domain-name-servers 192.168.0.1, 192.168.0.2;
option domain-name "teste.com.br";
option routers 192.168.0 .254;
}
subnet 172.22.0.0 netmask 255.255.255.0 {
range 172.22.0.30 172.22.0.100;
option domain-name-servers 172.22.0.5;
option domain-name "reload.br";
option routers 172.22.0.252;
}

No exemplo acima, tenho um trecho da configuração global. Perceba que aqui, tenho 2 sub-redes definidas com a qual o servidor irá realizar o endereçamento. Note que com isto, você deve indicar na configuração global as interfaces que o servidor irá trabalhar.

A seguir (Exemplo 6), tem-se um exemplo de como poderia ficar o arquivo de configuração. Nele, foram configuradas 2 sub-redes, 4 ranges, grupos, hosts, informações globais e individuais. Apesar de grande, não é complicado:

Exemplo 6:

subnet 172.16.200.0 netmask 255.255.255.0 {
range 172.16.200.50 172.16.200.200;
range 172.16.200.230 172.16.200.253;
option domain-name-servers 172.16.200.1, 172.16.200.2;
option domain-name "teste.com.br";
option routers 172.16.200.254;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.30 192.168.0.100;
range 192.168.0.120 192.168.0.200;
option domain-name-servers 192.168.0.5;
option domain-name "reload.br";
option routers 192.168.0.252;
}
group servidores {
option domain-name-servers 172.16.200.7;
host server01 {
hardware ethernet 00:50:51:e1:00:01;
fixed-address 172.16.200.43;
option routers 172.16.200.2; }
host server02 {
hardware ethernet 00:80:54:c5:30:02;
fixed-address 172.16.200.39;
option routers 172.16.200.9;}
}
group roteadores {
option routers 172.16.200.1;
option domain-name-servers 172.16.200.41;
host router01 {
hardware ethernet 00:20:51:e1:00:21;
fixed-address 172.16.200.13;}
host router02 {
hardware ethernet 00:80:14:c5:32:22;
fixed-address 172.16.200.19;}
}
group dmz {
option routers 192.168.0.1;
option domain-name-servers 192.168.0.32;
host mail1 {
hardware ethernet 00:20:51:e1:03:29;
fixed-address 192.168.0.32; }
host mail2 {
hardware ethernet 00:80:14:c5:15:63;
fixed-address 192.168.0.7;}
}
group hosts {
host financeiro01 {
hardware ethernet 00:20:51:e1:00:50;
fixed-address 192.168.0.13;}
host financeiro02 {
hardware ethernet 00:80:14:c5:32:51;
fixed-address 192.168.0.19;}
}
Interface gráfica e interface web para gerenciamento e monitoramento

Interface gráfica para gerenciamento/monitoramento

Criar, gerenciar, realizar alterações e manutenções no arquivo de configuração do DHCP via terminal, não é problema algum para um administrador de redes/servidores GNU/Linux. Porém, quanto maior as particularidades que possuir em sua rede, quanto mais rápido devem ser realizadas as mudanças, relatórios, documentação, ou outras variedades de razões, podem ser ótimos motivos para a utilização de interfaces gráficas de gerenciamento.

As interfaces gráficas para gerenciamento de servidores no GNU/Linux são extremamente intuitivas e muito avançadas, além do excelente grau de maturidade destas ferramentas. Muitos administradores possuem resistência à adoção destas ferramentas em sistemas GNU/Linux, mas esta visão é ultrapassada, e não há argumentos que impeçam seu uso, não há bons motivos para não usar. 😉

Estas interfaces possibilitam gerenciar todos os serviços implantados num servidor (banco de dados, servidor Web, DHCP, DNS, firewall, LDAP, controlador de domínio, compartilhamento de arquivos, etc.. ), além de realizar configurações do S.O., monitoramento, relatórios e outras possibilidades.

Podemos dividir as interfaces gráficas para gerenciamento de servidores em 2 grupos básicos: Aplicação e Interface Web

Aplicação

Aplicativo instalado no servidor (quando o mesmo possui ambiente gráfico, como GNOME, KDE, Xfce, LXDE, …). Os aplicativos que permitem o gerenciamento/configuração dos serviços implantados no servidor são acessíveis através do menu do desktop.

Vantagem:

  • Os paranoicos não precisam esquentar a cabeça sobre a transmissão de dados via rede ou algum sniffer.

Desvantagem:

  • Precisa acessar o ambiente gráfico do servidor, ou seja, ter um teclado+mouse+monitor em seu servidor ou configurar algum acesso remoto como VNC por exemplo. Outro problema, é que grande parte dos servidores GNU/Linux não possuem ambiente gráfico, o que impossibilita usar este tipo de programa.

Um exemplo é o GAdmin, que possui um modulo para DHCP.

Web

Serviço instalado no servidor, porém, acessível via rede (ou disponível também com acesso pela Internet, caso o firewall esteja devidamente configurado), ao instalar, é liberada uma determinada porta no servidor, e o administrador irá acessar via navegador através de qualquer host dentro da rede. É o modo mais utilizado e mais comum de se encontrar em servidores instalados.

Vantagem:

  • Mais rápido, acessível através de qualquer máquina, pode-se determinar qual porta será usada e habilitar o HTTPS (para os paranoicos), o servidor continua em modo texto, sem ambiente gráfico, não precisa realizar nenhuma configuração a mais no servidor.

Desvantagem:

  • Nenhuma. Apenas precaução, pois você irá acessar através de qualquer máquina, cuidado ao fazer login, keyloggers, etc… Outro ponto é, caso a rede parar, você não terá acesso (mas caso sua rede pare, o DHCP será o último dos seus problemas….)

Existem diversas ferramentas para administração/gerenciamento e configuração de servidores GNU/Linux via Web. Algumas distribuições com foco para uso em servidores possuem suas próprias interfaces já instaladas, outras interfaces possuem pacotes para instalação nos mais diversos GNU/Linux e outros (como BSD por exemplo).

Exemplos: A mais famosa das interfaces, com certeza é o Webmin, com diversos temas, muitos módulos (cada um para tipos de serviços e aplicações).

Algumas distribuições focadas para servidor, possuem suas próprias interfaces Web, é o caso do ClearOS (Red Hat), openSUSE, Zentyal (Ubuntu), pfSense (BSD), Zeroshell, Endian

Coisas que faltaram…

Algumas coisas ficaram de fora. 😉

O que faltou neste artigo: Failover de DHCP (redundância com 2 servidores, primário e secundário), além de mais quatro ou cinco pontos interessantes…

Uma vez em que a rede esteja configurada com o uso de um servidor de DHCP, este passa a ser extremamente essencial para o funcionamento da rede, pois ele irá endereçar os equipamentos e fornecer informações como máscara, gateway e DNS.

Caso, por algum motivo o servido fique inacessível, como por exemplo desligado, travado, desconectado, defeito no cabeamento, para na sua placa de rede, etc, toda a rede irá paralisar.

Nos casos em que o servidor DHCP não esteja dentro da rede, a atenção é redobrada, pois deve-se ficar atento também a possíveis problemas nos roteadores, por exemplo.

O DHCP consome poucos recursos do sistema, por isso, ele não á aplicado como um servidor dedicado de DHCP, ou seja, um sistema/servidor completo em que somente prove este serviço. O mais comum desde pequenas a grandes redes de computadores, é um ambiente em que o sistema que prove o DHCP também disponibilize e exerce outros serviços como firewall, proxy, sistema de gerenciamento e monitoramento, etc.

O dhcp3-server usado no GNU/Linux, é bastante rápido (desde que a configuração não seja muito complexa), por isso, costuma responder antes dos servidores DHCP usados nos servidores Windows e na maioria dos modems ADSL e/ou roteadores.

Ao utilizar roteadores para prover o serviço de DHCP em nosso ambiente, haverá duas situações, na primeira, os custos serão baixos e a configuração é simples e intuitiva, porém não suportará grandes mudanças, e a evolução da pequena rede.

Além da questão da segurança, pois estes equipamentos não dispõem de complexos sistemas de segurança, e para destruir todas as configurações feitas, basta apertar o botão reset, localizado no corpo do equipamento.

Na segunda situação, os custos são altos, além da configuração e implantação serem complexas, deparando-se com as inúmeras possibilidades do IOS Cisco e seu preço, porém, o equipamento já estaria pronto para sofrer modificações em sua configuração e suportar todo o crescimento da rede e sua evolução.

O guia completo: DHCP – Guia Completo « www.esli-nux.com

Lá, além deste texto, tem algumas screenshots (hã??) e também o How-to sobre DHCP com Windwos Server, Small routers e equipamentos Cisco (através da CLI, Cisco IOS).

Rolar para cima