
                               Mini-HOWTO DHCPcd

Vladimir Vuksan vuksan@veus.hr
_Traduction franaise : Igor Genibel _(genibel@emi.u-bordeaux.fr) .

   v2.5, Dernire rvision: 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  la fiabilit des
   donnes. Toutes les informations sont fournies de bonne foi. Utilisez
   les  vos propres risques.

1. Introduction

   Ce HOWTO explique comment configurer un systme _Linux_ pour
   fonctionner comme client (DHCPcd) dans un environnement DHCP. Si vous
   faites des recherches  propos du serveur DHCP, vous aurez besoin de
   lire le Mini-HOWTO DHCPd situ :
   http://sunsite.unc.edu/LDP/HOWTO/mini/DHCPd.

   DHCP est un protocole qui permet  une machine cliente d'obtenir des
   paramtres rseau depuis un serveur. Nombre d'organisations commencent
    l'utiliser car il permet de simplifier l'administration rseau
   spcialement pour de grands rseaux ou bien des rseaux qui possdent
   de nombreux utilisateurs mobiles. DHCP est en passe d'tre normment
   utilis par les Fournisseurs d'Accs Internet par le cble comme
   MediaOne Express, Time Warner, etc. De plus amples informations
   concernant DHCP peuvent tre trouves dans la FAQ DHCP.

2. Le service Road Runner

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

   Si cela ne rsoud pas votre problme, essayez ce qui suit.

3. Noyaux 2.1.x

   Si vous utiliser une version de noyau suprieur  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 problmes avec dhcpcd.
   D'aprs Dan Khabaza: _``Le changement est d  la diffrence dans le
   paquetage rseau ipv4, dans la faon de dfinir des valeurs par dfaut
   pour certains champs'' _

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

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

   Un autre patch est fourni par Paul Rossington si vous avez des
   problmes avec le patch prcdent. C'est en fait le fichier if.C
   entier. Rcuperez le  www.cro.net/~vuksan/if.C et copier le dans le
   rpertoire source de dhcpcd.

4. Utilisateurs de la RedHat 5.0

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

control-panel

   Slectionnez alors "Configuration Rseau (Network Configuration)" et
   pour l'interface eth0 dfinissez DHCP comme protocole. Les autres
   paramtres devront etre laisse vide.

5. Rseau Token Ring

   Si vous essayez d'utiliser dhcpcd sur un rseau Token Ring, celui-ci
   ne fonctionnera pas. Voici la solution qui m'a t propose par Henrik
   Stoener: _``Le problme est que dhcpcd ne connat 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"._

   _La solution est d'appliquer un simple patch aux sources dhcpcd-0.70.
   J'ai mis une petite page Web avec le patch, les fichier RPM de RedHat
   et une version prcompile  http://eolicom.olicom.dk/~storner/dhcp
   __Le patch a t envoye aux developpeurs, il sera, esprons-le, intgr
   dans une future version de dhcpcd.'' _

6. Mthode

6.1 Premire tape

   Quel que soit la distribution que vous utilisez, vous aurez besoin de
   tlcharger le dmon client pour _Linux_. Le paquetage dont vous avez
   besoin est appel dhcpcd et sa version actuelle est 0.70. Le fichier
   de description du paquetage crit:

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

  Slackware

   Vous pouvez tlcharger la dernire 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 rfrence
   en France)

   Tlchargez la dernire version de dhcpcd.tar.gz

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

   dplacez-vous dans le rpertoire: cd dhcpcd-0.70,

   tapez: make.

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

   Cela crera le rpertoire /etc/dhcpcd o DHCPcd stockera les
   paramtres et dhcpcd sera copi dans le rpertoire /usr/sbin/. Vous
   pouvez passer  la deuxime tape.

  RedHat

   DHCPcd est inclu dans la distribution standard de RedHat sous forme
   RPM et vous pouvez le trouver dans le rpertoire RPMS du CD-ROM
   contenant la distribution ou bien le tlcharger 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 tapes
   de la Slackware. Lorsque vous avez fini, passez  l'tape 2.

  Debian

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

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

   Aprs allez  l'tape 2.

6.2 Deuxime tape

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

    1. Si vous avez besoin de ressources rseau occasionnellement, vous
       pouvez lancer dhcpcd depuis la ligne de commande (vous avez besoin
       d'tre root pour l'excuter) en tapant: /usr/sbin/dhcpcd. Lorsque
       vous avez besoin d'arrter le service, tapez: /usr/sbin/dhcpcd -k.
       Il ne vous manque, maintenant, que la configuration du serveur de
       noms (/etc/resolv.conf). Pour connatre les instructions afin de
       crer le fichier /etc/resolv.conf allez  l'tape 3.
    2. Si vous souhaitez (avez besoin) d'une connexion permanente, ainsi
       que l'excution du dmon au dmarrage suivez les instructions qui
       suivent.

  Slackware.

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

   Cela renommera l'ancienne initilisation du rseau en rc.inet1.old.
   Vous avez maintenant besoin de crer le nouveau fichier rc.inet1. Il
   devrait ressembler :
#!/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 prcdant rc.inet1 et sauvegardez-le. Rebootez votre
   machine et allez  l'tape 3.

  RedHat.

   Cette information a t fournie par nothing (nothing@cc.gatech.edu)
   _``J'ai enlev mon adresse ip statique ainsi que le nom de ma machine
   dans le fichier /etc/resolv.conf. Toutefois, j'ai laiss la ligne
   search ainsi que mes deux lignes nameserver (pour une raison inconnue,
   mon dhcpcd n'a jamais cr de /etc/dhcpcd/resolv.conf, je dois donc
   utiliser un /etc/resolv.comf statique). _

   _Dans /etc/sysconfig/network j'ai supprim les valeurs de HOSTNAME
   ainsi que de GATEWAY. J'ai laiss les autres entres comme telles
   (NETWORKING, DOMAINNAME, GATEWAYDEV). _

   _Dans /etc/sysconfig/network-scripts/ifcfg-eth0 j'ai supprim les
   entres IPADDR, NETMASK, NETWORK, et BROADCAST. J'ai laiss les
   entres DEVICE et ONBOOT telles quelles. J'ai modifi la valeur de
   BOOTPROTO  BOOTPROTO=dhcp.''_

   Savegardez le fichier et rebootez la machine.

  Debian.

   Il semblerait qu'il n'y ait pas besoin de configuration pour DHCPcd
   car: D'aprs Heik Schlittermann _``Le paquetage dhcpcd installe son
   script de dmarrage comme n'importe quel paquetage dans /etc/init.d/,
   ici /etc/init.d/dhcpcd, et le lie  diffrents rpertoire /etc/rc?.d.
   Le contenu des diffrents /etc/rc?.d/ sont alors excut au dmarrage.
   Si vous ne rebootez pas votre machine aprs l'installation, vous
   pouvez quand mme dmarrer le dmon manuellement: /etc/init.d/dhcpcd
   start'' _Allez . l'tape 3.

6.3 Troisime tape

   Cette tape devrait tre la mme pour toutes les distributions.

   Aprs que votre machine ait reboot, votre interface rseau devrait
   tre configure. 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 numro normal aprs inet addr, c'est bon. DHCPcd est
   un dmon et continuera de s'excuter tant que votre machine restera
   allume. 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 systme" (pour la Slackware
   /var/adm/syslog) si vous avez besoin de le consulter.

   Une dernire chose. Vous avez besoin de spcifier vos serveurs de
   noms. Il y a deux manires de le faire, vous pouvez demander  votre
   fournisseur d'accs de vos donner les adresses de vos serveurs de noms
   et de les placer dans le fichier /etc/resolv.conf o bien, DHCPcd
   obtient la liste depuis le serveur DHCP et construira un fichier
   /etc/dhcpcd/resolv.conf. J'ai dcid d'utiliser les resolv.conf de
   DHCPcd en faisant les choses suivantes:
     * Sauvegarder votre ancien resolv.conf: mv /etc/resolv.conf
       /etc/resolv.conf.old,
     * Si le rpertoire /etc/dhcpcd/ n'existe pas, crez le: mkdir
       /etc/dhcpcd/,
     * 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 (propos par nothing@cc.gatech.edu
   avec une retouche de Henrik Stoerner)

   _Cette dernire tape doit tre excute seulement si dhcpcd ne cre
   pas le /etc/dhcpcd/resolv.conf. Dans le fichier
   /etc/sysconfig/network-scripts/ifup j'ai effectu 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
#################################

   _Je l'ai chang en: _
#################################
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
#################################

   _Notez le ! (point d'interrogation) dans le if [ ! -f
   /var/run/dhcp-wait-$(DEVICE).pid ] ; Maintenant asseyez vous et
   contemplez <:^} _

7. Problmes

   Si vous avez suivi les tapes particulires et qu'il vous est
   impossible d'accder au rseau, il y a peut-tre des explications:

7.1 Votre carte rseau n'est pas correctement configure.

   Pendant le processus de dmarrage votre systme _Linux_ interroge
   votre carte rseau 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'apparat pas, il semblerait que votre carte
   rseau ne soit pas reconnue par votre systme _Linux_. Si vous
   possdez une carte gnrique (un clne ne2000) vous avez certainement
   d recevoir un disquette avec des utilitaires Dos qui vous permettent
   de configurer la carte. Essayez plusieurs IRQ jusqu' ce que _Linux_
   reconnaisse votre carte. (les IRQ 9,10,12 sont gnralement bon).

7.2 Votre serveur DHCP supporte la RFC 1541.

   Essayez de lancer dhcpcd en tapant: dhcpcd -r. Utilisez ifconfig pour
   contrler 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 rsoud votre problme, ajoutez
   l'option ``-r'' aux scripts de dmarrage prsents  l'tape 2. ie. Au
   lieu de /usr/sbin/dhcpcd vous devrez avoir /usr/sbin/dhcpcd -r.

7.3 ``_Durant le dmarrage j'obtiens le message suivant_ "Using DHCP for eth0
... failed mais mon systme continue defonctionner normallement.''

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

     Merci  toutes les personnes qui ont contribu grce  leurs ides
     et leurs suggestions. Spcialement :

   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)
