Mini-COMO FAZER DHCP (DHCPd/DHCPcd)
  Vladimir Vuksan, vuksan@veus.hr
  v2.3, 24 May 1998

  Este documento tenta responder as questões básicas sobre como
  configurar uma máquina Linux para atuar como um servidor ou cliente
  DHCP.
  ______________________________________________________________________

  Índice geral


  1. Introdução

     1.1 Garantias Padrões
     1.2 Novas Versões Deste Documento
     1.3 Sugestões & Opiniões
     1.4 Colaboradores
     1.5 Direitos Autorais

  2. Protocolo DHCP

  3. Configuração do Cliente

     3.1 Obtendo O Programa Cliente
     3.2 Configuração no Slackware
     3.3 Red Hat 5.0, Conectiva Linux 3.0 e posteriores
     3.4 Configuração no RedHat 4.x e Caldera OpenLinux 1.1
     3.5 Configuração no Debian 1.3.1
     3.6 Configuração no LinuxPPC e MkLinux
     3.7 Redes Token Ring
     3.8 Executando o DHCPCD
     3.9 Notas Diversas
     3.10 Soluções de Problemas

  4. Configuração do Servidor DHCP

     4.1 Servidor DHCP para UNIX
     4.2 Configuração de Rede
     4.3 Opções do DHCPd
     4.4 Inicializando o Servidor


  ______________________________________________________________________



  11..  IInnttrroodduuççããoo




  11..11..  GGaarraannttiiaass PPaaddrrõõeess

  Nenhuma garantia fornecida ao conteúdo deste documento pode ser
  aceita. Use os conceitos, exemplos e outros conteúdos por sua própria
  conta. Por se tratar de uma nova edição, este documento pode conter
  alguns erros e informações imprecisas que, obviamente, podem causar
  algum tipo de dano a um sistema existente. Prossiga com cautela, sendo
  que o autor e os editores não tem qualquer responsabilidade sobre o
  uso deste conteúdo.

  Tenha em mente ainda que esta não é um informação oficial, onde vários
  aspectos aqui descritos são conclusões de experiências funcionais para
  algumas pessoas.

  11..22..  NNoovvaass VVeerrssõõeess DDeessttee DDooccuummeennttoo

  Novas versões deste documento serão periodicamente postadas na lista
  _c_o_m_p_._o_s_._l_i_n_u_x_._a_n_s_w_e_r_s. Serão ainda adicionadas ao vários sites de FTP
  anônimos que arquivam este tipo de informação, incluindo:



  Adicionalmente, pode-se normalmente encontrar este documento na página
  do Projeto de Documentação Linux localizada em:




  11..33..  SSuuggeessttõõeess && OOppiinniiõõeess

  Sugestões e opiniões sobre este documento são certamente bem vindas.
  Sem este tipo de retorno este documento certamente não existiria.
  Então, por favor envie as suas contribuições, comentários e críticas
  para vuksan@veus.hr.



  11..44..  CCoollaabboorraaddoorreess

  Este documento foi modificado a partir da versão original criada por
  Paul Makeev.

  As seguintes pessoas contribuíram para este Mini-COMO FAZER.

  ·  Heiko Schlittermann

  ·  Jonathan Smith

  ·  Dan Khabaza

  ·  Hal Sadofsky

  ·  Henrik Stoerner

  ·  Paul Rossington



  11..55..  DDiirreeiittooss AAuuttoorraaiiss

  Este documento está sob os direitos de (c)1998 Vladimir Vuksan e é
  distribuído dentro dos seguintes termos:



  ·  Documentos COMO FAZER do Linux podem ser reproduzidos e
     distribuídos em todo ou em parte em qualquer meio físico ou
     eletrônico, desde que as informações sobre os direitos autorais
     sejam mantidas em todas as cópias

  ·  Todas as traduções, trabalhos derivados ou agregados de qualquer
     documento COMO FAZER do Linux devem ser cobertos por este aviso de
     direitos autorais.







  22..  PPrroottooccoolloo DDHHCCPP

  DHCP significa Protocolo de Configuração Dinâmica de Máquinas. É usado
  para controlar parâmetros de controle de rede vitais para as máquinas
  (ao ser executado em clientes) com a ajuda de um servidor. O DHCP
  mantém compatibilidade reversa com o BOOTP. Para maiores informações
  veja a RFC 2131 (antiga RFC 1531) e outras (veja a seção de Recursos
  Internet no final deste documento). Pode-se verificar ainda o PR sobre
  DHCP.


  Este Mini-COMO FAZER aborda tanto o servidor DHCP como o cliente.
  Muitos usuários necessitarão do cliente o qual é usado nas estações de
  trabalho para obter as informações de rede de um servidor remoto. O
  servidor é usado pelos administradores de sistemas para distribuir
  informações de rede para os clientes. Então caso o leitor seja somente
  um usuário normal de rede, necessitará somente do programa cliente.


  33..  CCoonnffiigguurraaççããoo ddoo CClliieennttee

  33..11..  OObbtteennddoo OO PPrrooggrraammaa CClliieennttee

  kkeerrnneellss 22..00..xx

  Independente da distribuição que se esteja utilizando será necessário
  obter um programa cliente DHCP para Linux. O pacote necessário é
  chamado dhcpcd e a sua versão atual é 0.70. Pode-se obter uma
  descrição do pacote em aqui.


  kkeerrnneellss 22..11..xx

  Devido a mudanças no pacote de rede ipv4 nos kernels da série 2.1.x,
  em especial na forma como ele configura diversos campos, o programa
  dhcpcd pode não funcionar adequadamente. Muitos usuários não usam
  kernels em desenvolvimento, logo isso não será problema. Caso o leitor
  esteja usando um kernel desta série deve então utilizar o dhcpcd 1.3.3
  o qual é uma versão modificada que foi escrita por Sergei Viznyuk
  sergei@phystech.com a fim de evitar os problemas mencionados
  anteriormente. Ela pode ser obtida em:



  33..22..  CCoonnffiigguurraaççããoo nnoo SSllaacckkwwaarree

  Pode-se obter a última versão do DHCPcd a partir de qualquer espelho
  do Metalab ou nos seguintes endereços:

  ·

  ·


  ·   (site localizado no Japão)



  Transfira a última versão do programa dhcpcd.tar.gz


  ·  Descompacte-a através do comando:


     tar -zxvf dhcpcd-0.70.tar.gz

  ·  vá para o diretório gerado e crie o dhcpcd, através dos seguintes
     comandos:


     cd dhcpcd-0.70

     make


  ·  Execute a instalação, utilizando-se dos poderes do superusuário na
     execução desta tarefa, através do comando:


     make install


     Este procedimento irá criar o diretório /etc/dhcpc onde o DHCPcd
     irá armazenar as informações DHCP e o arquivo dhcpcd será copiado
     em /usr/sbin.

  Para que o sistema utilize o DHCP durante a inicialização, execute os
  seguintes comandos:

  cd /etc/rc.d

  mv rc.inet1 rc.inet1.antigo


  Isso moverá o programa antigo de inicialização da rede para
  rc.inet1.antigo. Agora será necessário criar o novo programa rc.inet1.
  Utilize o código a seguir:


  ______________________________________________________________________
  #!/bin/sh
  #
  # rc.inet1      Este programa inicializa a base de rede do sistema

  HOSTNAME=`cat /etc/HOSTNAME` # este procedimento não é realmente necessário
                               # mas será mantido

  # Anexar os dispositivos locais de rede
  /sbin/ifconfig lo 127.0.0.1
  /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

  # caso se tenha uma conexão Ethernet, as linhas a seguir devem ser utilizadas
  # para configurar a interface eth0. Caso se esteja usando a interface local ou
  # SLIP, não inclua as linhas a seguir no arquivo.

  /usr/sbin/dhcpcd
  ______________________________________________________________________



  Salve o programa e reinicialize o computador.


  Ao finalizar vá para a seção ``último passo''


  33..33..  RReedd HHaatt 55..00,, CCoonneeccttiivvaa LLiinnuuxx 33..00 ee ppoosstteerriioorreess


  Na configuração do DHCPcd sobre estas distribuições de Linux, tudo que
  se necessita fazer é inicializar o Painel de Controle digitando-se:

  control-panel


  Após selecione "Configuração de Rede" e na interface Ethernet desejada
  (normalmente eth0) defina DHCP como o protocolo. Os demais parâmetros
  devem ser deixados em branco.



  Ao finalizar vá para a seção ``último passo''



  33..44..  CCoonnffiigguurraaççããoo nnoo RReeddHHaatt 44..xx ee CCaallddeerraa OOppeennLLiinnuuxx 11..11

  O DHCPcd é incluído na distribuição padrão do Red Hat no formato RPM.
  Ele pode ser encontrado no diretório padrão denominado RPMS ou pode
  ser obtido em:



  Para instalá-lo use o seguinte comando:

  rpm -i dhcpcd-0.6-2.i386.rpm



  Alternativamente pode-se compilar uma versão própria através dos
  passos descritos na distribuição Slackware.


  Esta informação foi provida por nothing@cc.gatech.edu:


  ______________________________________________________________________
  Removi o endereço IP estático e o nome de /etc/resolv.conf. De qualquer forma deixei a linha de pesquisa e as duas linhas do servidor de nomes (por alguma razão meu programa dhcpcd nunca cria um arquivo /etc/dhcpc/resolv.conf, então eu tive que usar um arquivo estático).

  Em /etc/sysconfig/network removi as entradas para HOSTNAME e GATEWAY. As entradas para NETWORKING, DOMAINNAME e GATEWAYDEV foram deixadas.

  Em /etc/sysconfig/network-scripts/ifcfg-eth0 foram removidas as entradas IPADDR,
  NETMASK, NETWORK e BROADCAST. Foram deixados os parâmetros DEVICE e ONBOOT  como estavam. A linha BOOTPROTO foi alterada para BOOTPROTO=dhcp.

  Salve o arquivo e reinicialize o computador.
  ______________________________________________________________________



  Ao finalizar vá para a seção ``último passo''


  33..55..  CCoonnffiigguurraaççããoo nnoo DDeebbiiaann 11..33..11

  Há um pacote Debian do DHCPcd em:



  ftp://ftp.debian.org/debian/stable/binary/net/

  ou pode-se seguir as instruções de instalação do Slackware. Para
  desempacotar um pacote do tipo deb deve-se executar o seguinte
  comando:

  dpkg -i /where/ever/your/debian/packages/are/dhcpd*deb



  Aparentemente não há necessidade de qualquer configuração para o
  DHCPcd conforme o descrito a seguir:

  De: Heiko Schlittermann (heiko@os.inf.tu-dresden.de)


  O pacote dhcpcd instala o programa de inicialização usual para pacotes
  debian em /etc/init.d/<nome_pacote>, neste caso como
  /etc/init.d/dhcpcd e estabelece a ligação dos diversos diretórios
  /etc/rc?.d/.



  O conteúdo dos diretórios /etc/rc?.d/ será então executado durante a
  inicialização do sistema.


  Caso o sistema não seja reinicializado após a instalação, o programa
  poderá se iniciado manualmente:


  /etc/init.d/dhcpcd start


  Ao finalizar vá para a seção ``último passo''



  33..66..  CCoonnffiigguurraaççããoo nnoo LLiinnuuxxPPPPCC ee MMkkLLiinnuuxx

  A seguinte seção foi escrita por R. Shapiro


  As versões 0.65 e 0.70 do programa dhcpcd de  Yoichi Hariguchi deverão
  funcionar adequadamente para ambas as versões de Linux em ppc, com as
  seguintes ressalvas:



  * Caso se deseje ou se necessite construir executáveis a partir dos
  fontes, deve-se atentar que os compiladores ppc Linux assumem que
  'char' é na verdade 'unsigned char' enquanto os fontes de Hariguchi
  assumem que  'char' é 'signed char'. Para construí-los a partir dos
  fontes deve-se editar o arquivo Makefile e incluir a seguinte opção
  nos CFLAGS: "-fsigned-char".


  * A versão atual do linuxppc (também conhecida como linux-pmac) é a
  2.1.24 e requer o pacote atualização 2.1. Ambas as versões  DR 2.1 e
  DR 3.0 do mklinux usam o kernel 2.0 (2.0.33) e não necessitam desta
  atualização. Note que o RPM do dhcpcd no CD do linuxppc não inclui a
  atualização 2.1 e não funcionará com ela. De qualquer forma funcionará
  com o mklinux.


  * No kernel do linuxppc 2.1, será apresentado um aviso de roteamento
  após o dhcpcd ser inicializado. Ele pode ser ignorado.



  * O programa dhcpcd de Hariguchi demora um pouco mais, cerca de 30
  segundos, para fazer a sua conexão inicial com o servidor e configurar
  o roteamento. No kernel do linuxppc 2.1, o aviso mencionado acima é
  uma indicação de que o roteamento está pronto. No mklinux será
  necessário checar através do comando netstat -r  o estado da conexão
  da rede.
  Não fui capaz de compilar o dhcpcd de Sergei Viznyuk versão 1.3.3 em
  ambas as versões para o Linux para ppc. Logo não posso comentá-la.



  Uma vez que o dhcpcd é instalado, execute os seguintes passos no
  resolv.conf, conforme mencionado na seção  ``último passo''.




  ·  Apague ou renomeie o arquivo /etc/sysconfig/network-scripts/ifcfg-
     eth0

  ·  Remova o conteúdo de /etc/sysconfig/network exceto NETWORKING e,
     caso se tenha um nome fixo para ligações simbólicas, e HOSTNAME.



  Caso se deseje uma versão pré compilada do dhcpcd 0.70 para kernels
  2.1 para linuxppc, envie uma mensagem para reshapiro@mediaone.net.



  33..77..  RReeddeess TTookkeenn RRiinngg

  Caso se esteja tentando executar o dhcpcd em uma rede Token Ring é bom
  avisar: ele não funcionará. Esta é a solução fornecida por Henrik
  Stoerner (henrik_stoerner@olicom.dk)


  O problema reside no fato de dhcpcd funcionar somente em placas
  Ethernet. Caso seja encontrada uma placa Token-Ring, o programa se
  recusa a executar qualquer comando e gera a mensagem "não é uma
  interface Ethernet".

  A solução é aplicar uma atualização simples dos fontes do dhcpcd. A
  atualização está disponível na Internet em uma versão binária no
  formato RPM em


  A atualização foi enviada para o mantenedor do dhcpcd, a qual espero
  que seja incluída na próxima versão do dhcpcd.


  33..88..  EExxeeccuuttaannddoo oo DDHHCCPPCCDD

  Após a reinicialização da máquina, a interface de rede deve ser
  configurada.

  Digite:

  ifconfig

  Deve-se obter algo como:











  ______________________________________________________________________
  lo        Link encap:Local Loopback
            inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
            UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
            RX packets:302 errors:0 dropped:0 overruns:0 frame:0
            TX packets:302 errors:0 dropped:0 overruns:0 carrier:0 coll:0

  eth0      Link encap:Ethernet  HWaddr 00:20:AF:EE:05:45
  ------>   inet addr:24.128.53.102  Bcast:24.128.53.255  Mask:255.255.254.0
            UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
            RX packets:24783 errors:1 dropped:1 overruns:0 frame:1
            TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0 coll:96
            Interrupt:10 Base address:0x300
  ______________________________________________________________________





  Caso se tenha algum número normal no campo endereço inet, então a
  máquina estará configurada. Caso se obtenha um endereço igual a
  0.0.0.0 não se desespere, trata-se de uma configuração temporária
  antes que o dhcpcd obtenha o endereço IP. Se mesmo alguns minutos após
  se visualizar somente o endereço 0.0.0.0 por favor verifique a seção
  DHCPcd ``Resolução de Problemas''.  O DHCPcd é um servidor que seguirá
  sendo executado enquanto o computador estiver ligado. Mesmo três horas
  depois ele irá contactar o servidor DHCP e tentará renovar o endereço
  IP. Todas as mensagens serão registradas no arquivo do syslog (no
  Slackware em /var/adm/syslog, RedHat/Conectiva/OpenLinux em
  /var/log/syslog).

  Um detalhe final: É necessário especificar os servidores de nomes. Há
  duas formas de fazê-lo, pode-se solicitar ao provedor para informar os
  endereços do servidor de nomes e colocá-los no /etc/resolv.conf ou o
  DHCPcd obterá uma lista do servidores DHCP e construirá um resolv.conf
  em /etc/dhcpc. Decidi usar os arquivos gerados pelo DHCPcd da seguinte
  forma:


  Gere uma cópia de segurança do /etc/resolv.conf da seguinte forma:

  mv /etc/resolv.conf /etc/resolv.conf.antifo

  Caso o diretório /etc/dhcpc não exista, ele deve ser criado da
  seguinte forma:

  mkdir /etc/dhcpc

  Crie uma ligação simbólica de /etc/dhcpc/resolv.conf para
  /etc/resolv.conf, através do seguinte comando:

  ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf


  Caso isso não funcione, pode-se tentar o ajuste sugerido por
  nothing@cc.gatech.edu, com uma pequena correção de Henrik Stoerner.




  O último passo é executado somente porque meu dhcpcd não cria o
  arquivo /etc/dhcpc/resolv.conf. Em /etc/sysconfig/network-scripts/ifup
  efetuei as seguintes mudanças (as quais são mudanças simples, mas
  funcionam):


  ______________________________________________________________________
  elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
      echo -n "Usando DHCP para ${DEVICE}... "
      /sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE}
      echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh

      if [ -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
          echo "falhou."
          exit 1
  ______________________________________________________________________



  Foi mudada para:


  ______________________________________________________________________
  elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
      echo -n "Usando DHCP para ${DEVICE}... "
      /sbin/dhcpcd
      echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh

      if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
          ^^^^^^
         echo "falhou."
         exit 1
  ______________________________________________________________________





  NNoottee oo ssiinnaall ddee eexxccllaammaaççããoo eemm if [ ! -f /var/run/dhcp-
  wait-${DEVICE}.pid ];





  Agora sente-se e aprecie o seu desempenho. :-).

  33..99..  NNoottaass DDiivveerrssaass


  Os seguintes passos não são necessários mas podem ser úteis para
  algumas pessoas:

  aa))  Caso se necessite de conectividade de rede somente ocasionalmente,
  pode-se inicializar o dhcpcd a partir da linha de comando (deve-se
  reinicializar para se executar este passo) com:


  /usr/sbin/dhcpcd

  Quando se quiser finalizar as funcionalidades de rede, digite:

  /usr/sbin/dhcpcd -k



  33..1100..  SSoolluuççõõeess ddee PPrroobblleemmaass

  Caso se tenha seguido todos os passos descritos anteriormente e não
  foi possível acessar a rede, há algumas prováveis causas para isso:


  II.. AA ppllaaccaa ddee rreeddee nnããoo eessttáá ccoonnffiigguurraaddaa ccoorrrreettaammeennttee..


  Durante o processo de inicialização o Linux irá tentar localizar a
  placa de rede e deverá gerar algumas mensagens acerca deste processo:


  ______________________________________________________________________
  eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
  3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
  ______________________________________________________________________



  Se uma mensagem como esta não aparecer, aparentemente a placa Ethernet
  não foi reconhecida pelo Linux. Caso se utilize uma placa genérica
  (como um clone NE2000), procure por um disco com utilitários DOS que
  possam ser usados para configurar a placa. Tente diversos IRQs até que
  o Linux reconheça a placa (IRQs 9,10,12 são normalmente boas
  tentativas).



  IIII.. OO sseerrvviiddoorr DDHHCCPP ssuuppoorrttaa RRFFCC 11554411


  Tente executar o dhcpcd digitando:

  dhcpcd -r

  use o comando ifconfig para verificar se a interface de rede está
  configurada (espere alguns segundos pelo processo de configuração,
  pois inicialmente o endereço apresentado será Inet.addr=0.0.0.0)

  Caso o problema seja resolvido desta forma, deve-se adicionar o
  indicador "-r" aos programas de inicialização, ou seja além de usar o
  /sbin/dhcpcd deve-se comandar /sbin/dhcpcd -r



  IIIIII.. DDuurraannttee aa iinniicciiaalliizzaaççããoo ssee oobbttéémm aa mmeennssaaggeemm ""UUssaannddoo DDHHCCPP ppaarraa
  eetthh00 ...... ffaallhhoouu"" mmaass oo ssiisstteemmaa ffuunncciioonnaa ppeerrffeeiittaammeennttee..



  Aparentemente se está usando RedHat e as instruções não foram seguidas
  adequadamente :-). Você está esquecendo do ponto de exclamação em um
  dos comandos, vá até a seção ``aqui'' e verifique como corrigir o
  problema.



  IIVV.. AA rreeddee ffuunncciioonnaa ppoorr aallgguunnss mmiinnuuttooss ee ssuubbiittaammeennttee ppaarraa ddee
  rreessppoonnddeerr..



  Há algumas notícias de que o programa gated (servidor de caminho
  padrão) gera erros em máquinas Linux conforme o descrito acima.
  Verifique se o programa gated está sendo executado através do seguinte
  comando:



  ps -auxww | grep gate

  Caso ele esteja sendo executado, tente removê-lo com o gerenciador RPM
  ou da entrada em /etc/rc.d/



  VV.. AA ppllaaccaa EEtthheerrnneett éé rreeccoonnhheecciiddaa dduurraannttee aa iinniicciiaalliizzaaççããoo ddoo ssiisstteemmaa
  mmaass oobbttéémm--ssee aa mmeennssaaggeemm ""NNOO DDHHCCPPOOFFFFEERR"" nnooss aarrqquuiivvooss ddee rreeggiissttrrooss ddee
  ooccoorrrrêênncciiaass.. IIssssoo ooccoorrrree ttaammbbéémm ccoomm aa ppllaaccaa PPCCMMCCIIAA..


  É necessário estar seguro que se tem uma porta 10BaseT (conector do
  tipo "telefone") ativada na placa de rede. A melhor forma de verificar
  isso é checar qual o tipo de conector está configurado na
  inicialização ou seja:


  ______________________________________________________________________
  eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
                              ^^^^^^^^^^^^
  3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
  ______________________________________________________________________




  Tenho recebido notícias de usuários de portáteis que têm tido este
  tipo de problema com os utilitários PCMCIA (especificamente o ifport)
  o qual deve ser configurado para um conector de tipo 10Base2
  (thinnet). Deve-se estar seguro de estar usando o padrão 10BaseT para
  a conexão. Caso não se esteja , deve-se reconfigurar a placa e
  reinicializar o computador.



  VVII.. SSeegguuii ttooddooss ooss ppaassssooss mmaass aaiinnddaa nnããoo ccoonnssiiggoo ccoonneeccttaarr aa mmááqquuiinnaa àà
  rreeddee..


  O modem a cabo normalmente irá memorizar o endereço Ethernet da placa
  de rede, então ao se mudar o computador ou se tentar utilizar uma
  outra placa, será necessário ensinar o modem a reconhecer o novo
  hardware. Normalmente basta desligar o modem e religá-lo enquanto o
  computador estiver ligado ou então chamar o suporte técnico e avisá-lo
  de que a placa de rede foi alterada.


  A máquina está dentro de uma rede protegida por um firewall que
  desabilita o tráfego das portas 67/68 usadas pelo DHCP para distribuir
  informações. Verifique as regras do firewall cuidadosamente.






  44..  CCoonnffiigguurraaççããoo ddoo SSeerrvviiddoorr DDHHCCPP

  44..11..  SSeerrvviiddoorr DDHHCCPP ppaarraa UUNNIIXX

  Há diversos servidores DHCP disponíveis para sistema do tipo Unix,
  comerciais ou de livre distribuição. Um dos mais populares servidores
  DHCP de livre distribuição é o DHCPd de Paul Vixie/ISC. A versão atual
  é 1.0 (sugerida por muitos usuários) mas a 2.0 encontra-se em estágio
  beta. Ela pode ser obtida em:


  Descompacte-a, vá até o diretório da distribuição e digite:

  ./configure

  Levará algum tempo para se configurar todos os parâmetros. Após isto
  estar finalizado, digite:

  make

  e

  make install




  44..22..  CCoonnffiigguurraaççããoo ddee RReeddee

  Ao finalizar a instalação digite ifconfig -a. Deve-se obter um
  resultado similar a:




  ______________________________________________________________________
  eth0      Link encap:10Mbps Ethernet  HWaddr 00:C0:4F:D3:C4:62
            inet addr:183.217.19.43  Bcast:183.217.19.255  Mask:255.255.255.0
            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
            RX packets:2875542 errors:0 dropped:0 overruns:0
            TX packets:218647 errors:0 dropped:0 overruns:0
            Interrupt:11 Base address:0x210
  ______________________________________________________________________





  Caso o parâmetro MULTICAST não esteja presente, deve-se reconfigurar o
  kernel para sua adição. Em muitos sistemas isso não será necessário.



  O próximo passo será adicionar a rota 255.255.255.255. Apresentamos um
  extrato retirado ao arquivo README do DHCPd:



  "Para que o dhcpd funcione perfeitamente, escolha alguns clientes DHCP
  (por exemplo  Windows 9x), que sejam capazes de enviar pacotes com um
  endereço IP de destino 255.255.255.255.  Infelizmente o Linux teima em
  mudar 255.255.255.255 no endereço de divulgação da subrede local
  (neste caso 192.5.5.223). Isso cria uma violação do protocolo DHCP e
  enquanto muitos clientes DHCP não avisam do problema, outros (como os
  clientes DHCP Microsoft) o fazem. Clientes com este tipo de problema
  não visualizam a mensagem DHCPOFFER enviada pelo servidor."



  Digite:

  route add -host 255.255.255.255 dev eth0

  caso se obtenha a mensagem

  "255.255.255.255: máquina desconhecida"

  deve-se tentar adicionar a seguinte entrada ao arquivo /etc/hosts:

  255.255.255.255 all-ones

  tente então:

  route add -host all-ones dev eth0

  ou

  route add -net 255.255.255.0 dev eth0

  eth0 é obviamente o nome do dispositivo de rede que está sendo usado.
  Caso seja diferente, faça as devidas alterações.




  44..33..  OOppççõõeess ddoo DDHHCCPPdd

  Agora é necessário configurar o DHCPd. Para se fazer isso deve-se
  criar ou editar o arquivo /etc/dhcpd.conf.



  Comumente se deseja definir endereços IP de forma aleatória. Isso pode
  ser feito da seguinte forma:




  ______________________________________________________________________
  default-lease-time 600;
  max-lease-time 7200;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.1.255;
  option routers 192.168.1.254;
  option domain-name-servers 192.168.1.1, 192.168.1.2;
  option domain-name "dominio.org.br";

  subnet 192.168.1.0 netmask 255.255.255.0 {
     range 192.168.1.10 192.168.1.100;
     range 192.168.1.150 192.168.1.200;
  }
  ______________________________________________________________________




  Isso fará com que o servidor DHCP forneça ao cliente um endereço IP na
  faixa 192.168.1.10-192.168.1.100 ou 192.168.1.150-192.168.1.200. Ele
  liberará um endereço por 600 segundos caso o cliente não defina um
  tempo específico de utilização de endereço. De qualquer forma o tempo
  máximo permitido será de 7.2 segundos. O servidor irá "avisar" ao
  cliente que ele pode usar 255.255.255.0 como máscara de subrede,
  192.168.1.255 como endereço de distribuição, 192.168.1.254  como
  roteador ou caminho padrão, 192.168.1.1 e 192.168.1.2 como servidores
  DNS.


  Pode-se ainda definir endereços IP específicos baseados nos endereços
  Ethernet dos clientes, como por exemplo:




  ______________________________________________________________________
  host conec {
     hardware ethernet 08:00:2b:4c:59:23;
     fixed-address 192.168.1.222;
  }
  ______________________________________________________________________





  Este procedimento irá definir o endereço 192.168.1.222 para o cliente
  com endereço Ethernet igual a 08:00:2b:4c:59:23.


  Pode-se misturar os procedimentos, definindo-se certos clientes com
  endereços IP estáticos (por exemplo servidores) e outros com endereços
  dinâmicos (como por exemplo portáteis). Há diversas opções como:
  endereços de servidores Windows, servidores de data e horário, etc...
  Caso se necessite alguma destas opções por favor verifique a página de
  manual on line do dhcpd.conf.




  44..44..  IInniicciiaalliizzaannddoo oo SSeerrvviiddoorr


  Podemos agora acionar o servidor DHCP. Basta simplesmente digitar ou
  incluir nos programas de inicialização do sistema:

  /usr/sbin/dhcpd

  Caso se deseje verificar se tudo está funcionando perfeitamente, deve-
  se acionar inicialmente o modo de depuração e colocar o servidor em
  primeiro plano. Isso pode ser feito através do comando:

  /usr/sbin/dhcpd -d -f

  Inicialize algum dos clientes e verifique a console do servidor.
  Deverão ser apresentadas diversas mensagens de depuração.