  Mini-HOWTO DHCPcd
  Vladimir Vuksan vuksan@veus.hr
   _T_r_a_d_u_c_t_i_o_n  _f_r_a_n_c_a_i_s_e  _:  _I_g_o_r  _G_e_n_i_b_e_l (genibel@emi.u-bor-
  deaux.fr) .
  v2.5, Derniere revision: 11 Janvier 1998.

  Comment configurer Linux en tant que client DHCP.

  Attention: Les informations contenues dans ce  document  NE  SONT  PAS
  officielles  et  il  n'y  a  aucune garanties quant a la fiabilite des
  donnees. Toutes les informations sont fournies de bonne foi.  Utilisez
  les a vos propres risques.

  11..  IInnttrroodduuccttiioonn

  Ce HOWTO explique comment configurer un systeme LLiinnuuxx pour fonctionner
  comme client (DHCPcd) dans un environnement DHCP. Si vous  faites  des
  recherches  a  propos  du  serveur  DHCP, vous aurez besoin de lire le
  Mini-HOWTO DHCPd situe a: http://sunsite.unc.edu/LDP/HOWTO/mini/DHCPd.

  DHCP  est  un protocole qui permet a une machine cliente d'obtenir des
  parametres reseau depuis un serveur. Nombre d'organisations commencent
  a  l'utiliser  car  il  permet  de  simplifier l'administration reseau
  specialement pour de grands reseaux ou bien des reseaux qui  possedent
  de  nombreux utilisateurs mobiles. DHCP est en passe d'etre enormement
  utilise par les Fournisseurs  d'Acces  Internet  par  le  cable  comme
  MediaOne  Express,  Time  Warner,  etc.  De  plus  amples informations
  concernant DHCP peuvent etre trouvees dans la FAQ DHCP.

  22..  LLee sseerrvviiccee RRooaadd RRuunnnneerr

  Si vous utilisez le service Road Runner par  le  cable  allez  voir  a
  http://people.qualcomm.com/karn/rr/index.html

  Si cela ne resoud pas votre probleme, essayez ce qui suit.

  33..  NNooyyaauuxx 22..11..xx

  Si  vous  utiliser  une  version de noyau superieur a 2.0.30 (je ne me
  souviens pas du nombre exact de plus, www.linuxhq.com est en ce moment
  hors  service)  vous  pourrez  rencontrer  des  problemes avec dhcpcd.
  D'apres Dan Khabaza:
   _`_`_L_e _c_h_a_n_g_e_m_e_n_t _e_s_t _d_u _a _l_a _d_i_f_f_e_r_e_n_c_e _d_a_n_s _l_e _p_a_q_u_e_t_a_g_e _r_e_s_e_a_u _i_p_v_4_,
  _d_a_n_s _l_a _f_a_c_o_n _d_e _d_e_f_i_n_i_r _d_e_s _v_a_l_e_u_r_s _p_a_r _d_e_f_a_u_t _p_o_u_r _c_e_r_t_a_i_n_s _c_h_a_m_p_s_'_'

  Dan a fourni un patch pour resoudre ce probleme que l'on peut  obtenir
  a  http://www.cro.net/~vuksan/dhcppatch.  Pour  l'appliquer, copier le
  simplement dans le repertoire source de dhcpcd (les instructions  pour
  rapatrier  les  sources  sont  situees  plus  loins)  et tapez patch <
  dhcppatch

  dhcpcd devrait se compiler normalement apres l'application du patch.

  Un autre patch est  fourni  par  Paul  Rossington  si  vous  avez  des
  problemes  avec  le  patch  precedent.  C'est  en fait le fichier if.C
  entier. Recuperez le a www.cro.net/~vuksan/if.C et copier le  dans  le
  repertoire source de dhcpcd.

  44..  UUttiilliissaatteeuurrss ddee llaa RReeddHHaatt 55..00

  La  configuration  sous  la RedHat 5.0 est extremement facile. Tout ce
  que vous avez  a  faire  est  de  demarrer  panneau  de  configuration
  (Control Panel) en tapant:

       control-panel

  Selectionnez  alors  "Configuration Reseau (Network Configuration)" et
  pour l'interface eth0 definissez  DHCP  comme  protocole.  Les  autres
  parametres devront etre laisse vide.

  55..  RReesseeaauu TTookkeenn RRiinngg

  Si  vous  essayez d'utiliser dhcpcd sur un reseau Token Ring, celui-ci
  ne fonctionnera pas. Voici la solution qui m'a ete proposee par Henrik
  Stoener:  _`_`_L_e  _p_r_o_b_l_e_m_e  _e_s_t  _q_u_e  _d_h_c_p_c_d  ne  connait que les cartes
  Ethernet. S'il trouve une carte Token Ring, il refuse  de  faire  quoi
  que ce soit avec et retourne "interface is not ethernet".

  _L_a  _s_o_l_u_t_i_o_n  _e_s_t _d_'_a_p_p_l_i_q_u_e_r _u_n _s_i_m_p_l_e _p_a_t_c_h _a_u_x _s_o_u_r_c_e_s _d_h_c_p_c_d_-_0_._7_0.
  J'ai mis une petite page Web avec le patch, les fichier RPM de  RedHat
  et une version precompilee a http://eolicom.olicom.dk/~storner/dhcp _L_e
  _p_a_t_c_h _a _e_t_e _e_n_v_o_y_e_e _a_u_x _d_e_v_e_l_o_p_p_e_u_r_s_, _i_l  _s_e_r_a_,  _e_s_p_e_r_o_n_s_-_l_e_,  _i_n_t_e_g_r_e
  _d_a_n_s _u_n_e _f_u_t_u_r_e _v_e_r_s_i_o_n _d_e _d_h_c_p_c_d.''

  66..  MMeetthhooddee

  66..11..  PPrreemmiieerree eettaappee

  Quel  que soit la distribution que vous utilisez, vous aurez besoin de
  telecharger le demon client pour LLiinnuuxx. Le paquetage  dont  vous  avez
  besoin  est  appele dhcpcd et sa version actuelle est 0.70. Le fichier
  de description du paquetage ecrit:

  Title:          dhcpcd
  Version:        0.70
  Entered-date:   05MAY97
  Description:    dhcpcd is an RFC2131 compliant DHCP client daemon. It
                  gets an IP address and other information from a
                  corresponding DHCP server, configures the network
                  interface automatically, and tries to renew the lease
                  time according to RFC2131. It works in the RFC1541
                  compliant mode when the '-r' option is specified.
                  So far it is found that dhcpcd 0.70 works fine with
                  the
                  following DHCP servers:
                    1. ISC's dhcpcd-BETA-5.15
                    2. DHCP server on Windows NT server 3.51
                    3. DHCP server version 1.3b by WIDE project.
                    4. DHCP server in the SolarNet PC-Admin 1.5 package
                    5. DHCP server used in Time Warner Cable's
                       Internet Access Service
                    6. DHCP server used in Bell Atlantic ADSL
                  See the "Changes" file if you want to know the
                  difference
                  from the previous version.
  Keywords:       DHCP, client, Linux
  Author:         yoichi@fore.com (Yoichi Hariguchi)
  Maintained-by:  yoichi@fore.com (Yoichi Hariguchi)
  Primary-site:   ftp.kobe-u.ac.jp:/pub/PC-UNIX/Linux/network/dhcp
                  33kB dhcpcd-0.70.tar.gz
  Alternate-site: sunsite.unc.edu:/pub/Linux/system/network/daemons
                  33kB dhcpcd-0.70.tar.gz
  Original-site:
  Platforms:       Linux 1.2.xx, 1.3.xx, 2.0.x
  Copying-policy: GPL

  66..11..11..  SSllaacckkwwaarree

  Vous pouvez telecharger la derniere copie de DHCPcd  depuis  n'importe
  quel          mirroir          de         sunsite         ou         :
  ftp://ftp.cdrom.com/pub/linux/sunsite/system/network/daemons/
  ftp://ftp.sunsite.unc.edu/pub/Linux/system/network/daemons/

  ftp://ftp.lip6.fr/pub/linux/sunsite/system/daemons/ (site de reference
  en France)

  Telechargez la derniere version de dhcpcd.tar.gz

  Decompressez-le: tar -zxvf dhcpcd-0.70.tar.gz,

  deplacez-vous dans le repertoire: cd dhcpcd-0.70,

  tapez: make.

  Vous aurez besoin d'etre root pour l'installer en tapant make install.

  Cela   creera   le  repertoire  /etc/dhcpcd  ou  DHCPcd  stockera  les
  parametres et dhcpcd sera copie dans le repertoire  /usr/sbin/.   Vous
  pouvez passer a la deuxieme etape.

  66..11..22..  RReeddHHaatt

  DHCPcd  est  inclu  dans la distribution standard de RedHat sous forme
  RPM et vous pouvez le  trouver  dans  le  repertoire  RPMS  du  CD-ROM
  contenant   la   distribution   ou   bien   le   telecharger   depuis:
  ftp://tsx-11.edu/pub/linux/distributions/redhat/redhat-4.2/i386/RedHat/RPMS/
  le fichier dhcpcd-0.6-2.i386.rpm

  et installez-le avec

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

  Vous  pouvez aussi compiler votre propre version en suivant les etapes
  de la Slackware. Lorsque vous avez fini, passez a l'etape 2.

  66..11..33..  DDeebbiiaann

  Il      y      a      un      package       pour       DHCPcd       a:
  ftp://ftp.debian.org/debian/stable/binary/net/.    Vous  pouvez  aussi
  suivre les etapes de la Slackware.

  Pour     decompresser     les     paquetage     tapez:     dpkg     -i
  /ou/se/trouve/votre/paquetage/dhcpcd*deb.

  Apres allez a l'etape 2.

  66..22..  DDeeuuxxiieemmee eettaappee

  L'(Les) instruction(s) suivante(s) depend(ent) de vos besoins.

  1. Si  vous  avez  besoin de ressources reseau occasionnellement, vous
     pouvez lancer dhcpcd depuis la ligne de commande (vous avez  besoin
     d'etre root pour l'executer) en tapant: /usr/sbin/dhcpcd.

     Lorsque vous avez besoin d'arreter le service, tapez:

     /usr/sbin/dhcpcd -k.

     Il  ne  vous manque, maintenant, que la configuration du serveur de
     noms (/etc/resolv.conf). Pour connaitre les  instructions  afin  de
     creer le fichier /etc/resolv.conf allez a l'etape 3.

  2. Si  vous  souhaitez (avez besoin) d'une connexion permanente, ainsi
     que l'execution du demon au demarrage suivez les  instructions  qui
     suivent.

  66..22..11..  SSllaacckkwwaarree..

  Pour  que le systeme utilise DHCP au demarrage tapez: cd /etc/rc.d, mv
  rc.inet1 rc.inet1.old.

  Cela renommera l'ancienne initilisation  du  reseau  en  rc.inet1.old.
  Vous  avez  maintenant besoin de creer le nouveau fichier rc.inet1. Il
  devrait ressembler a:

  #!/bin/sh
  #
  # rc.inet1      This shell script boots up the base INET system.
  #
  # Version:      @(#)/etc/rc.d/rc.inet1  1.01    05/27/93
  #

  HOSTNAME=`cat /etc/HOSTNAME` #This is probably not necessary but I
                               #will leave it in anyways

  # Attache le peripherique loopback.
  /sbin/ifconfig lo 127.0.0.1
  /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

  # SI VOUS AVEZ UNE CONNEXION ETHERNET, utilisez les lignes suivantes
  # pour configurer votre interface eth0. Si vous utilisez uniquement
  # le loopback ou bien SLIP, il ne faut pas inclure les lignes
  # restantes.

  /usr/sbin/dhcpcd

  Nommez le fichier precedant rc.inet1 et sauvegardez-le. Rebootez votre
  machine et allez a l'etape 3.

  66..22..22..  RReeddHHaatt..

  Cette  information  a  ete fournie par nothing (nothing@cc.gatech.edu)
  _`_`_J_'_a_i _e_n_l_e_v_e _m_o_n _a_d_r_e_s_s_e _i_p _s_t_a_t_i_q_u_e _a_i_n_s_i _q_u_e _l_e _n_o_m _d_e  _m_a  _m_a_c_h_i_n_e
  _d_a_n_s  _l_e  _f_i_c_h_i_e_r  _/_e_t_c_/_r_e_s_o_l_v_._c_o_n_f.  Toutefois,  j'ai laisse la ligne
  search ainsi que mes deux lignes nameserver (pour une raison inconnue,
  mon  dhcpcd  n'a  jamais cree de /etc/dhcpcd/resolv.conf, je dois donc
  utiliser un /etc/resolv.comf statique).

  _D_a_n_s _/_e_t_c_/_s_y_s_c_o_n_f_i_g_/_n_e_t_w_o_r_k j'ai  supprime  les  valeurs  de  HOSTNAME
  ainsi  que  de  GATEWAY.   J'ai laisse les autres entrees comme telles
  (NETWORKING, DOMAINNAME, GATEWAYDEV).

  _D_a_n_s  _/_e_t_c_/_s_y_s_c_o_n_f_i_g_/_n_e_t_w_o_r_k_-_s_c_r_i_p_t_s_/_i_f_c_f_g_-_e_t_h_0  j'ai   supprime   les
  entrees  IPADDR,  NETMASK,  NETWORK,  et  BROADCAST.  J'ai  laisse les
  entrees DEVICE et ONBOOT telles quelles. J'ai  modifie  la  valeur  de
  BOOTPROTO a BOOTPROTO=dhcp.''

  Savegardez le fichier et rebootez la machine.

  66..22..33..  DDeebbiiaann..

  Il  semblerait  qu'il  n'y ait pas besoin de configuration pour DHCPcd
  car: D'apres Heik Schlittermann _`_`_L_e  _p_a_q_u_e_t_a_g_e  _d_h_c_p_c_d  _i_n_s_t_a_l_l_e  _s_o_n
  _s_c_r_i_p_t  _d_e _d_e_m_a_r_r_a_g_e _c_o_m_m_e _n_'_i_m_p_o_r_t_e _q_u_e_l _p_a_q_u_e_t_a_g_e _d_a_n_s _/_e_t_c_/_i_n_i_t_._d_/,
  ici /etc/init.d/dhcpcd, et le lie a differents repertoire  /etc/rc?.d.
  Le contenu des differents /etc/rc?.d/ sont alors execute au demarrage.
  Si vous ne rebootez  pas  votre  machine  apres  l'installation,  vous
  pouvez  quand  meme demarrer le demon manuellement: /etc/init.d/dhcpcd
  start'' Allez a. l'etape 3.

  66..33..  TTrrooiissiieemmee eettaappee

  Cette etape devrait etre la meme pour toutes les distributions.

  Apres que votre machine ait reboote, votre  interface  reseau  devrait
  etre  configuree. Tapez ifconfig : et vous devriez avoir quelque chose
  du genre:
  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

  Si vous avez un numero normal apres inet addr, c'est bon.  DHCPcd  est
  un  demon  et  continuera de s'executer tant que votre machine restera
  allumee. Toutes les trois heures il  contactera  le  serveur  DHCP  et
  essaiera  de  renouveler  le bail de l'adresse IP. Il placera tous les
  messages  journaux  dans  le  "journal  systeme"  (pour  la  Slackware
  /var/adm/syslog) si vous avez besoin de le consulter.

  Une  derniere  chose.  Vous  avez  besoin de specifier vos serveurs de
  noms. Il y a deux manieres de le faire, vous pouvez demander  a  votre
  fournisseur d'acces de vos donner les adresses de vos serveurs de noms
  et de les placer dans le  fichier  /etc/resolv.conf  ou  bien,  DHCPcd
  obtient  la  liste  depuis  le  serveur  DHCP et construira un fichier
  /etc/dhcpcd/resolv.conf. J'ai decide  d'utiliser  les  resolv.conf  de
  DHCPcd en faisant les choses suivantes:

  +o  Sauvegarder   votre   ancien   resolv.conf:   mv   /etc/resolv.conf
     /etc/resolv.conf.old,

  +o  Si  le  repertoire  /etc/dhcpcd/  n'existe  pas,  creez  le:  mkdir
     /etc/dhcpcd/,

  +o  Faire un lien entre /etc/dhcpcd/resolv.conf et /etc/resolv.conf: ln
     -s /etc/dhcpcd/resolv.conf /etc/resolv.conf

  Si cela ne marche pas, essayez cela (propose par nothing@cc.gatech.edu
  avec une retouche de Henrik Stoerner)

  _C_e_t_t_e  _d_e_r_n_i_e_r_e  _e_t_a_p_e  _d_o_i_t _e_t_r_e _e_x_e_c_u_t_e_e _s_e_u_l_e_m_e_n_t _s_i _d_h_c_p_c_d ne cree
  pas     le     /etc/dhcpcd/resolv.conf.      Dans      le      fichier
  /etc/sysconfig/network-scripts/ifup  j'ai  effectue  les modifications
  suivantes (qui sont vraiment de petites bidouilles, mais qui  marchent
  pour moi).

  #################################
  elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
      echo -n "Using DHCP for ${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 "failed."
          exit 1
  #################################

   _J_e _l_'_a_i _c_h_a_n_g_e _e_n_:

  #################################
  elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
      echo -n "Using DHCP for ${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 "failed."
         exit 1
  #################################

   _N_o_t_e_z  _l_e  _! _(_p_o_i_n_t _d_'_i_n_t_e_r_r_o_g_a_t_i_o_n_) _d_a_n_s _l_e _i_f _[ _! _-_f _/_v_a_r_/_r_u_n_/_d_h_c_p_-
  _w_a_i_t_-_$_(_D_E_V_I_C_E_)_._p_i_d _] _; Maintenant asseyez vous et contemplez <:^}

  77..  PPrroobblleemmeess

  Si vous  avez  suivi  les  etapes  particulieres  et  qu'il  vous  est
  impossible d'acceder au reseau, il y a peut-etre des explications:

  77..11..  VVoottrree ccaarrttee rreesseeaauu nn''eesstt ppaass ccoorrrreecctteemmeenntt ccoonnffiigguurreeee..

  Pendant  le processus de demarrage votre systeme LLiinnuuxx interroge votre
  carte reseau et devrait dire quelque chose comme ceci:

  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

  Si un message similaire n'apparait pas, il semblerait que votre  carte
  reseau  ne soit pas reconnue par votre systeme LLiinnuuxx. Si vous possedez
  une carte generique  (un  clone  ne2000)  vous  avez  certainement  du
  recevoir  un disquette avec des utilitaires Dos qui vous permettent de
  configurer la carte.  Essayez  plusieurs  IRQ  jusqu'a  ce  que  LLiinnuuxx
  reconnaisse votre carte. (les IRQ 9,10,12 sont generalement bon).

  77..22..  VVoottrree sseerrvveeuurr DDHHCCPP ssuuppppoorrttee llaa RRFFCC 11554411..

  Essayez de lancer dhcpcd en tapant: dhcpcd -r.  Utilisez ifconfig pour
  controler la configuration de votre carte (attendez quelques  secondes
  pour  le processus de configuration, initialement il doit donner inet.
  addr=0.0.0.0).  Si  cette  solution  resoud  votre  probleme,  ajoutez
  l'option ``-r'' aux scripts de demarrage presentes a l'etape 2. ie. Au
  lieu de /usr/sbin/dhcpcd vous devrez avoir /usr/sbin/dhcpcd -r.

  77..33..  ""UUssiinngg DDHHCCPP ffoorr eetthh00 ...... ffaaiilleedd mais  mon  systeme  continue  de
  fonctionner  normallement.''''   ````_D_u_r_a_n_t _l_e _d_e_m_a_r_r_a_g_e _j_'_o_b_t_i_e_n_s _l_e _m_e_s_-
  _s_a_g_e _s_u_i_v_a_n_t

  Vous etes pour la plupart des utilisateurs de la distribution  RedHat,
  et  vous  n'avez  pas  suivi  avec  assez  d'attention les intructions
  precedantes :-). Vous oubliez le ! (point d'exclamation) dans une  des
  instructions if. Retournez en arriere et lisez-le encore une fois.

  ______________________________________________________________________
  ______________________________________________________________________

       Merci  a toutes les personnes qui ont contribue grace a leurs idees et
       leurs suggestions. Specialement a:

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

  Jonathan Smith (jps2@ra.msstate.edu)

  Dan Khabaza (dany@iil.intel.com)

  Hal Sadofsky (sadofsky@math.uoregon.edu)

  Henrik Stoener (henrik_stoener@olicom.dk)

  Paul Rossington (paulrossington@unn.unisys.com)

