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. 11.. IInnttrroodduuccttiioonn Ce HOWTO explique comment configurer un systeme LLiinnuuxx 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. 22.. LLee sseerrvviiccee RRooaadd RRuunnnneerr 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. 33.. NNooyyaauuxx 22..11..xx 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. 44.. UUttiilliissaatteeuurrss ddee llaa RReeddHHaatt 55..00 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. 55.. RReesseeaauu TTookkeenn RRiinngg 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.'' 66.. MMeetthhooddee 66..11.. PPrreemmiieerree eettaappee Quel que soit la distribution que vous utilisez, vous aurez besoin de telecharger le demon client pour LLiinnuuxx. 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 66..11..11.. SSllaacckkwwaarree 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. 66..11..22.. RReeddHHaatt 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. 66..11..33.. DDeebbiiaann 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. 66..22.. DDeeuuxxiieemmee eettaappee 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. 66..22..11.. SSllaacckkwwaarree.. 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. 66..22..22.. RReeddHHaatt.. 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. 66..22..33.. DDeebbiiaann.. 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. 66..33.. TTrrooiissiieemmee eettaappee 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 <:^} 77.. PPrroobblleemmeess Si vous avez suivi les etapes particulieres et qu'il vous est impossible d'acceder au reseau, il y a peut-etre des explications: 77..11.. VVoottrree ccaarrttee rreesseeaauu nn''eesstt ppaass ccoorrrreecctteemmeenntt ccoonnffiigguurreeee.. Pendant le processus de demarrage votre systeme LLiinnuuxx 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 LLiinnuuxx. 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 LLiinnuuxx reconnaisse votre carte. (les IRQ 9,10,12 sont generalement bon). 77..22.. VVoottrree sseerrvveeuurr DDHHCCPP ssuuppppoorrttee llaa RRFFCC 11554411.. 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. 77..33.. ""UUssiinngg DDHHCCPP ffoorr eetthh00 ...... ffaaiilleedd 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)