Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Do que se trata o artigo:

O presente artigo demonstra como funciona o DHCP, e como implementá-lo para garantir uma melhor administração de redes Windows e Linux em uma organização.


Para que serve:

Serve principalmente para organizações em que a rede sempre está sofrendo alterações, como: aumento de computadores, troca de servidores e troca de endereços IPs em servidores.

Em que situação o tema útil:

Existem várias situações, dentre elas: quando surge a necessidade de adicionar novas máquinas à rede, não sendo necessário definir as configurações manualmente ponto a ponto. Dessa forma, quando for necessário mudar o endereço IP do servidor, por exemplo, isso será repassado automaticamente às máquinas da rede independente do Sistema Operacional utilizado.

O presente artigo tem por objetivo ensinar a configurar um servidor DHCP3 (Dynamic Host Configuration Protocol ou Protocolo de Configuração Dinâmica de Endereço de Rede) no Sistema Operacional Linux Ubuntu, tornando a administração de redes Linux e Windows mais eficiente. Isso só será possível depois que o leitor compreender o que é DHCP e como esta maravilhosa ferramenta funciona, demonstrando que sua utilização torna a administração de redes um trabalho prazeroso e transparente ao usuário independente do SO utilizado pelo mesmo.

Transparente: Geralmente em todo o texto na área da computação ele está presente e muitos o confundem. Este termo não significa transparência de ver através de algo como um vidro, mas sim o fato de esconder as definições e funcionamento técnico aos usuários comuns, como é o caso do DHCP. O usuário não precisa saber qual o IP de sua máquina e muito menos como esse endereço foi obtido.

DHCP

Antes da existência do DHCP, ser um administrador de uma grande rede de computadores era um trabalho árduo e muitas vezes ineficiente devido a toda e qualquer alteração no servidor como IP, Maskara, Gateway e DNS. Isto acabava causando a necessidade dessas configurações serem repassadas às máquinas clientes manualmente ou mesmo quando surgia uma nova máquina na rede. O que tornava o processo demorado e susceptível a diversos erros, como IPs duplicados na rede e, consequentemente, perda de comunicação entre as máquinas e a internet.

Com o surgimento do DHCP em outubro de 1993, veio a grande solução a este árduo processo de configuração, e por ser tão eficiente sobrevive até hoje como a melhor solução de Configuração Dinâmica de Endereços de Rede.

Um servidor DHCP é um serviço de protocolo de redes existente no Gnu/Linux utilizado para gerenciar as faixas de IPs que podem existir na rede, ou seja, é um mecanismo para gerenciar o protocolo TCP/IP liberando IPs válidos para as estações de uma rede. Isto torna possível ao administrador da rede de uma empresa ou instituição, que geralmente tem um grande número de máquinas, não necessite configurá-las manualmente digitando o IP, a Maskara, o Gateway e o DNS tomando todo seu tempo e causando muita dor de cabeça sempre que surgirem novas máquinas.

Maskara: Conhecido como sub-net, ou máscara de sub-rede, ao contrário do IP, que é formado por valores entre 0 a 255, a maskara é formada unicamente por valores 0 e o valor 255 servindo como indicativo de qual classe um determinado IP de rede pertence. O IP classe A terá a maskara 255.0.0.0; o IP classe B 255.255.0.0; o IP classe C, que é o mais utilizado, 255.255.255.0.

]DNS: Domain Name System (Sistema de Resolução de Nomes) é através deste sistema que quando se digita um endereço no navegador ele consegue acessá-lo. Exemplo: quando se digita o endereço www.devmedia.com.br no navegador é necessário que um servidor DNS leia essa String e retorne ao navegador da máquina solicitante o IP da máquina na Internet que contém os arquivos que compõem a estrutura do site relacionado a este endereço, no caso o IP 74.53.3.20. Experimente digitar este IP no navegador, irá carregar o site da DevMedia.

Funcionamento do DHCP

O protocolo DHCP funciona de uma forma muito inteligente. Inicialmente ele estará rodando no servidor verificando constantemente se há alguma máquina na rede que solicitou seu serviço via Broadcast (mensagem enviada através de UDP a todas as máquinas na rede). Se houver, então o servidor DHCP captura esta mensagem e responsabiliza-se por liberar quatro informações: IP, Maskara, Gateway e DNS, que foram explicitamente informados no seu arquivo de configuração. Onde o IP liberado para a maquina solicitante será randômico, de acordo com a faixa definida no seu código de configuração, e se este ainda não estiver sendo usado por alguma máquina on-line na rede.

Depois de toda essa verificação por parte do servidor DHCP, será finalmente liberado um pacote do servidor para a máquina solicitante que contém uma configuração válida para que o computador da rede possa utilizar. Finalmente, a máquina solicitante conseguirá agrupar-se na rede e navegar na internet sem causar nenhum conflito com as que já estavam on-line.

O administrador pode definir que o DHCP funcionará de uma das quatro formas seguintes: Automática, Dinâmica, Manual ou todas juntas, através da edição do arquivo dhcpd.conf.

Automática: Nesta configuração, uma determinada quantidade de IPs é definida para utilização na rede. Por exemplo, imagine que no código foi especificado que o servidor iria fornecer IPs no intervalo de 192.168.10.1 a 192.168.10.50. Dessa forma, toda hora que uma máquina cliente fizer uma solicitação, será direcionado a esta máquina um IP que ainda não esteja sendo utilizado dentro desta faixa;

Dinâmica: Muito parecido com o Automático. Entretanto, nesta configuração especifica-se o tempo que a máquina poderá ficar conectada na rede. Isso é útil quando o administrador deseja definir um tempo limite de conexão. Mas essa configuração geralmente não é utilizada, pois os funcionários utilizam as maquinas de uma corporação constantemente e seria estressante toda hora chegar alguém falando que a maquina saiu da rede;

Manual: Com essa configuração torna-se possível definir que uma máquina X sempre tenha o mesmo IP, independente do lugar e horário que ela se encontre conectada na rede. Isso se torna possível devido à utilização do endereço MAC da placa de rede no código de configuração do DHCP, que garantirá sempre um IP específico para este endereço MAC, conhecido amplamente como endereço físico da placa de rede.

A principal vantagem de ter um servidor DHCP gerenciando a rede é que bastando conectar um computador ou notebook em um terminal gerenciado pelo servidor já será o suficiente para termos acesso à internet. Isto acontece por que o DHCP reconhece o computador e libera as configurações de IP, Maskara, Gateway e DNS automaticamente via rede. Essa vantagem é muito útil em duas vertentes, uma quando se muda constantemente o computador de lugar no caso do notebook, e outra quando se faz necessário colocar uma nova máquina na rede.

Protocolos UDP & TCP/IP

Como podemos notar, o DHCP trabalha em função destes protocolos de rede: o UDP para mensagens via Broadcast; e o TCP/IP para comunicação e troca de arquivos. Então nada mais justo do que compreender um pouco sobre estes três protocolos que são vitais para o funcionamento das redes de computadores:

UDP: ou User Datagram Protocol, é um padrão de protocolo de rede definido pela RFC 768. Este padrão é utilizado por alguns programas para transportar dados de forma mais rápida entre dois hosts (computadores) do que o TCP. O UDP consegue essa velocidade por não verificar se os dados foram entregues sem erros e se chegaram ao destinatário;

TCP: ou Transmission Control Protocol, é o principal protocolo de rede devido a sua alta confiabilidade. Este protocolo executa importantes funções de verificação de integridade dos dados, o que garante sua confiabilidade, porém, não consegue ser tão rápido quanto o UDP. Por outro lado, também garante que os dados cheguem ao destinatário de forma incorruptível;

IP: ou Internet Protocol, é o protocolo conhecido como protocolo de endereçamento. O protocolo IP tem a finalidade de endereçar as mensagens (dados) que trafegam na rede por este ser o protocolo responsável em definir o endereço IP único de cada maquina na rede.

Comparação entre UDP e TCP

É sempre interessante verificar como os protocolos se comportam perante a necessidade de estabelecer uma conexão para entrega de dados, pois o DHCP só funciona pela existência deles.

A Tabela 1 apresenta um comparativo do funcionamento dos dois protocolos.

TCP Transmission Control Protocol

UDP User Datagram Protocol

É orientado à conexão, tornando-se muito confiável uma vez que se utiliza de uma sessão para realizar a conexão entre os hosts e posteriormente iniciar a comunicação.

Não é orientado à conexão, tornando-se um protocolo não confiável, pois o UDP ao contrário do TCP já inicia a comunicação sem saber se a máquina destino está on-line.

Fragmenta a mensagem em partes numeradas (pacotes), garantindo a sequência dos pacotes.

Não garante a sequência dos pacotes e não confirma suas entregas.

Implementa controle de erros, como: o reenvio de pacotes caso algum não chegue ao destino ou chegue corrompido.

Não implementa controle de erros. As aplicações que utilizam UDP é que ficam responsáveis por tentar tratar a confiabilidade do transporte de dados.

É mais lento, utiliza alta sobrecarga podendo oferecer suporte à conexão apenas ponto a ponto, ou seja, máquina a máquina.

É mais rápido, utiliza baixa sobrecarga podendo oferecer suporte à conexão ponto a ponto e de ponto a vários pontos.

Tabela 1. Comparação entre o protocolo TCP e o UDP.

A partir de agora fica mais fácil entender como funciona o processo de comunicação entre a máquina solicitante e o servidor DHCP. Quando uma máquina está na rede e precisa de configurações válidas, ela irá enviar uma solicitação de configurações válidas via Broadcast através do protocolo UDP por ser mais rápido. E o servidor DHCP irá liberar para a máquina um IP para esta conseguir utilizar o protocolo TCP para suas tarefas que devem ser seguras, como tráfego de dados incorruptíveis.

Instalando o Servidor DHCP

Agora que já foi transmitido o conhecimento de como o DHCP funciona, é hora de colocar o mesmo na prática instalando o DHCP.

O processo de instalação no Ubuntu é muito simples, basta entrar no shell como root, digitar o seguinte comando: apt-get install dhcp3-server e esperar pela realização do download e instalação do pacote.

Configurando o Servidor DHCP

Depois de instalado o pacote dhcp3-server, o serviço estará pronto para ser configurado. Basicamente tudo que envolve configuração no Linux, seja qual distribuição for, as configurações são feitas por intermédio da edição de arquivos e o principal arquivo que deverá ser editado para configurar o servidor DHCP é o dhcpd.conf, encontrado no diretório /etc/dhcp3/.

Para tal, serão realizados três passos que devem ser seguidos à risca no servidor para que tudo funcione corretamente.

Primeiro Passo: Estando como root no Shell, abra o arquivo com o vim da seguinte forma:


  vim dhcpd.conf 

Ele deve mostrar um conteúdo similar à Listagem 1.

Listagem 1. Código fonte padrão do DHCP quando ele é instalado.


  #
  # Sample configuration file for ISC dhcpd for Debian
  #
  # Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as
  # configuration file instead of this file.
  #
  # $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $
  #
  # The ddns-updates-style parameter controls whether or not the server will
  # attempt to do a DNS update when a lease is confirmed. We default to the
  # behavior of the version 2 packages ('none', since DHCP v2 didn't
  # have support for DDNS.)
  ddns-update-style none;
  # option definitions common to all supported networks...
  option domain-name "example.org";
  option domain-name-servers ns1.example.org, ns2.example.org;
  default-lease-time 600;
  max-lease-time 7200;
  # If this DHCP server is the official DHCP server for the local
  # network, the authoritative directive should be uncommented.
  #authoritative;
  # Use this to send dhcp log messages to a different log file (you also
  # have to hack syslog.conf to complete the redirection).
  log-facility local7;
  # No service will be given on this subnet, but declaring it helps the 
  # DHCP server to understand the network topology.
  #subnet 10.152.187.0 netmask 255.255.255.0 {
  #}
  # This is a very basic subnet declaration.
  #subnet 10.254.239.0 netmask 255.255.255.224 {
  #  range 10.254.239.10 10.254.239.20;
  #  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
  #}
  # This declaration allows BOOTP clients to get dynamic addresses,
  # which we don't really recommend.
  #subnet 10.254.239.32 netmask 255.255.255.224 {
  #  range dynamic-bootp 10.254.239.40 10.254.239.60;
  #  option broadcast-address 10.254.239.31;
  #  option routers rtr-239-32-1.example.org;
  #}
  # A slightly different configuration for an internal subnet.
  #subnet 10.5.5.0 netmask 255.255.255.224 {
  #  range 10.5.5.26 10.5.5.30;
  #  option domain-name-servers ns1.internal.example.org;
  #  option domain-name "internal.example.org";
  #  option routers 10.5.5.1;
  #  option broadcast-address 10.5.5.31;
  #  default-lease-time 600;
  #  max-lease-time 7200;
  #}
  # Hosts which require special configuration options can be listed in
  # host statements.   If no address is specified, the address will be
  # allocated dynamically (if possible), but the host-specific information
  # will still come from the host declaration.
  #host passacaglia {
  #  hardware ethernet 0:0:c0:5d:bd:95;
  #  filename "vmunix.passacaglia";
  #  server-name "toccata.fugue.com";
  #}
  # Fixed IP addresses can also be specified for hosts.   These addresses
  # should not also be listed as being available for dynamic assignment.
  # Hosts for which fixed IP addresses have been specified can boot using
  # BOOTP or DHCP.   Hosts for which no fixed address is specified can only
  # be booted with DHCP, unless there is an address range on the subnet
  # to which a BOOTP client is connected which has the dynamic-bootp flag
  # set.
  #host fantasia {
  #  hardware ethernet 08:00:07:26:c0:a5;
  #  fixed-address fantasia.fugue.com;
  #}
  # You can declare a class of clients and then do address allocation
  # based on that.   The example below shows a case where all clients
  # in a certain class get addresses on the 10.17.224/24 subnet, and all
  # other clients get addresses on the 10.0.29/24 subnet.
  #class "foo" {
  #  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
  #}
  #shared-network 224-29 {
  #  subnet 10.17.224.0 netmask 255.255.255.0 {
  #    option routers rtr-224.example.org;
  #  }
  #  subnet 10.0.29.0 netmask 255.255.255.0 {
  #    option routers rtr-29.example.org;
  #  }
  #  pool {
  #    allow members of "foo";
  #    range 10.17.224.10 10.17.224.250;
  #  }
  #  pool {
  #    deny members of "foo";
  #    range 10.0.29.10 10.0.29.230;
  #  }
  #} 

Note que a maior parte do arquivo fonte da Listagem 1 é constituída por comentários (“#”) que definem especificações de uso, que podem ser pesquisadas afim de um aprofundamento em um estudo futuro por sua parte.

Para simplificar as coisas, exclua todas as linhas. Dessa forma o código ficará mais limpo, contendo apenas suas especificações, tornando o processo de alteração mais rápido e simples.

Segundo Passo: Adicione as linhas como informado na Listagem 2.

Listagem 2. Código fonte para configuração do DHCP.


  option domain-name "ServidorDHCP";
  ddns-update-style none;
  authoritative;
  subnet 192.168.10.0 netmask 255.255.255.0 {
   
    range 192.168.10.1 192.168.10.200;
    option domain-name-servers 200.165.132.148, 200.165.132.155;
    option routers 192.168.10.170;
    option broadcast-address 192.168.10.255;
    default-lease-time 600;
    max-lease-time 7200;
   
  }
   
  host micro1{
   
    hardware ethernet 00:0d:87:ee:dd:a7;
    fixed-address 192.168.10.100;
  /
  } 
Ao término da edição do arquivo salve-o.

Explicação

As três primeiras linhas devem existir por padrão para o funcionamento do DHCP. A linha subnet 192.168.10.0 netmask 255.255.255.0 serve como a criação de uma classe, que neste caso foi denominada subnet 192.168.10.0 netmask 255.255.255.0{...}. Dentro dessa classe serão realizadas as principais especificações, que são: • range 192.168.10.1 192.168.10.200 – Define o intervalo de IPs liberados para as máquinas da rede pela classe. Podendo, por exemplo, liberar outra faixa como 10.10.10.1 10.10.10.158, entretanto para isso será necessário criar uma classe 10.10.10.0, caso contrário não irá funcionar; • option domain-name-servers – Define quais são os servidores de resolução de nomes (DNS). Sempre é bom utilizar estes: 200.165.132.148 e 200.165.132.155, uma vez que os mesmos são da própria Oi/Telemar; • option routers 192.168.10.170 – Define qual o IP do servidor que irá liberar para a rede os IPs. Geralmente este IP é o da segunda placa de rede eth1; • option broadcast-address 192.168.10.255 – Define qual IP será utilizado para enviar uma mensagem para todas as máquinas na rede. A linhas default-lease-time 600 e max-lease-time 7200 definem respectivamente os tempos mínimo e máximo que o servidor DHCP irá liberar um IP válido para uma máquina. Após o esgotamento do tempo mínimo, ele oferece (de forma automática) um pouco mais de tempo caso o usuário solicite ficar mais tempo logado na máquina. Caso não queira passar pelo transtorno de mais de 10 pessoas te procurando dizendo que não está conseguindo acessar a internet remova essas duas linhas. Note que foi realizada uma configuração mista, ou seja, dentro do subnet 192.168.10.0 netmask 255.255.255.0 { ... } foram realizadas especificações da distribuição geral dos IPs pela rede. E depois foi definido um IP fixo para uma determinada máquina na rede através de associação do MAC da placa de rede ao IP escolhido nesta sessão:

  host micro1{
   
    hardware ethernet 00:0d:87:ee:dd:a7;
    fixed-address 192.168.10.100;
   
  } 

Geralmente o mais utilizado é simplesmente configurar a faixa de IP para a rede e pronto, como foi feito na classe subnet 192.168.10.0 netmask 255.255.255.0{...}. Mas também demonstramos que é possível especificar via MAC qual IP você deseja que uma determinada máquina tenha, conforme vimos na classe host micro1{...}. Isso possibilita fazer a configuração mista, ou seja, automática e via MAC ao mesmo tempo.

Terceiro Passo: Agora é importante reiniciar o serviço. Para isso, acesse como root o diretório /etc/init.d/ e digite os seguintes comandos:


   ./dhcp3-server stop
   
  Depois:
 
 
  ./dhcp3-server start 

Sempre que se realiza alguma configuração no SO Linux, é extremamente recomendável parar e iniciar o serviço correspondente, pois só assim terá certeza que as configurações entraram e estão em vigor.

Configurando os Clientes DHCP no Linux

Esta etapa é muito simples, sendo necessária a realização de dois passos. Basta ir até as máquinas da rede e editar o arquivo interfaces, encontrado em /etc/network/.

Primeiro Passo: Editar o arquivo interfaces utilizando o vim ou vi.

• Conteúdo a ser colocado dentro do arquivo de configuração interfaces:

auto lo: Indica que as placas de rede deverão ser ativadas automaticamente durante o boot;

iface lo inet loopback: Utilizado para comunicação entre aplicações do sistema e demais aplicativos;

auto eth0: Este ponto define quais das placas deverá ser ativada e configurada de acordo com a linha abaixo;

iface eht0 inet dhcp: Define que a configuração da rede será via DHCP, onde esta máquina solicitará ao servidor os quatro padrões de configuração, que são: endereço IP, Maskara, Gateway e DNS.

O conteúdo do arquivo ficará como o mostrado na Listagem 3.

Listagem 3. Código fonte para configuração do arquivo interfaces.


  auto lo
  iface lo inet loopback
  auto eth0
  iface eth0 inet dhcp 

Feito isso basta salvar o arquivo.

Segundo Passo: Agora que o arquivo está configurado, será necessário reiniciar o serviço de rede. Para isso acesse o diretório /etc/init.d e digite os seguintes comandos:


  ./networking stop 

Depois:


  ./networking start 

Com isso esta máquina conseguirá adquirir todas as configurações do servidor que foi configurado anteriormente.

Configurando os Clientes DHCP no Windows XP

Configurar computadores que tenham o SO Windows a adquirirem suas configurações de rede via DHCP assim como no Linux também é um processo muito simples. Estando em uma máquina Windows siga os seguintes passos:

Primeiro Passo: Acesse Iniciar > Configurações > Conexões de Rede. Então será mostrada uma janela com um ícone chamado “Conexão local”, como o mostrado na Figura 1.

Figura 1. Ícone de configuração de rede denominado “conexão local”.

Agora clique com o botão direito sobre este ícone. Surgirá um menu flutuante. Neste menu selecione “Propriedades”, sendo exibida uma janela de configurações da rede, como a da Figura 2.

Figura 2. Janela de Propriedades de Conexão local.

Segundo Passo: Localize a opção “Protocolo TCP/IP”, dê um clique sobre ela e posteriormente clique no botão “Propriedades”. Logo em seguida será aberta outra janela, semelhante à Figura 3.

Figura 3. Janela de Propriedades de Protocolo TCP/IP.

Terceiro Passo: Estando com a janela da Figura 3 aberta, basta marcar as opções como mostrado na figura, que são: “Obter um endereço IP automaticamente” e “Obter o endereço dos servidores DNS”. Clique no botão “Ok”; será retornada a janela da Figura 2, nela basta clicar novamente em “Ok” e pronto, o computador está configurado para adquirir todas as configurações de rede via DHCP.

Conclusão

Através deste artigo ficou claro que configurar um servidor DHCP é muito simples, e possibilita ao administrador de redes administrá-la com mais facilidade, pois quando for necessário mudar o IP do servidor ou o gateway, não precisaremos informar essas mudanças máquina a máquina. Isso permitirá ao administrador de redes uma administração que não incomode e/ou permita que os usuários tenham acesso direto a estes processos, tornando sua administração transparente ao usuário.

A computação é uma ciência muito dinâmica e esse dinamismo torna os processos organizacionais mais eficientes. Portanto, é necessário que todos os profissionais de TI sempre estejam preparados para utilizar seus subsídios, garantindo não só o mero funcionamento de computadores em suas organizações, mas sim utilizar da melhor solução possível em termos de gestão de TI.

Compreender como funcionam as redes de computadores torna-se vital, uma vez que não se pode implementar uma solução para algo sem conhecer seu funcionamento, e muito menos se nem souber da existência de mecanismos computacionais que auxiliam sua administração, como é o caso do DHCP.

Agora você tem conhecimento suficiente para montar um servidor DHCP distribuindo as faixas de IPs ou especificando por MAC qual IP uma determinada máquina deve ter. Isto tornará a administração um processo mais fácil e eficaz, evitando transtornos como fazer tudo ponto a ponto na rede. Então administrador, mão na massa que essa tecnologia vai lhe garantir uma administração descomplicada e estará colocando-o no quadro de profissionais que usam o melhor em gestão de TI.

Links

Artigo sobre configuração do serviço DHCP feito pela UNICAMP.
http://www.ccuec.unicamp.br/revista/infotec/linux/linux19-1.html

Artigo do site vivaolinux que aborda uma maneira fácil e rápida de configurar o servidor DHCP no Linux Conectiva.
http://www.vivaolinux.com.br/artigo/Servidor-DHCP-rapido-e-facil-para-Conectiva-Linux

Tutorial que explica como deve ser o conteúdo do arquivo dhcpd.conf no Linux Ubuntu.
http://thiagodfreitas.wordpress.com/2007/11/13/arquivo-de-configuracao-etcdhcp3dhcpdconf-no-ubuntu/

Artigo do site vivaolinux que mostra como implementar um servidor DHCP.
http://www.vivaolinux.com.br/artigo/Implementando-um-servidor-DHCP/

Tutorial feito pelo MIT explicando como configurar um servidor DHCP no Linux Red Hat Enterprise.
http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/s1-dhcp-configuring-server.html

Blog com tutorial que explica como configurar um servidor DHCP no Linux Debian e Ubuntu utilizando DHCP3.
http://www.xjulio.info/blog/configurando-um-servidor-de-dhcp-no-ubuntu-e-debian-com-o-dhcp3-server

Site que visa responder algumas perguntas básicas sobre DHCP, como: O que é DHCP?
Para que serve? Como funciona? etc.

http://www.rnp.br/newsgen/9705/n1-2.html

Site de Julio Battisti com um excelente artigo explicando sobre os protocolos de redes.
http://www.juliobattisti.com.br/artigos/windows/tcpip_p11.asp

Site Guia do Hardware com um artigo que visa explicar as máscaras de sub-rede.
http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap3-2