Page suivante Page précédente Table des matières

3. Configuration des clients

À l'heure actuelle, il existe trois clients DHCP différents pour Linux: dhcpcd, pump et dhclient. Ce mini-HOWTO traite principalement de dhcpcd.

3.1 Téléchargement du démon client (dhcpcd)

En fonction de votre distribution, vous pouvez avoir besoin de télécharger le démon client DHCP. Si vous voulez le compiler à partir des sources, vous avez besoin du paquetage dhcpcd, dont la dernière version est la 1.3.18. Il est maintenu par Sergei Viznyuk sergei@phystech.com et est aujourd'hui livré sous forme de binaire avec la plupart des distributions.

Les sources de dhcpcd peuvent être téléchargées depuis :

Ensuite, suivez les instructions ci-dessous. Elles devraient rester identiques.

3.2 Slackware

Vous pouvez télécharger la dernière version de dhcpcd depuis n'importe quel miroir de Metalab ou depuis l'un des sites suivants:

Cela va créer un répertoire /etc/dhcpcdhcpcd va stocker des informations pour DHCP, et le fichier dhcpcd va être copié dans /usr/sbin.

Pour que le système initialise DHCP au démarrage, tapez:

cd /etc/rc.d
mv rc.inet1 rc.inet1.OLD

Cela va renommer l'ancien script d'initalisation du réseau en rc.inet1.OLD. Maintenant, il vous faut créer un nouveau script rc.inet1. Voici tout ce dont vous avez besoin:


#!/bin/sh
#
# rc.inet1      This shell script boots up the base INET system.

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

# Attach the loopback device.
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

# IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to configure the
# eth0 interface. If you're only using loopback or SLIP, don't include the
# rest of the lines in this file.

/usr/sbin/dhcpcd

Sauvegardez le et redémarrez votre ordinateur.

Quand vous aurez terminé, allez à la section La touche finale.

3.3 Red Hat 6.x et Mandrake 6.x

La configuration de dhcpcd avec une Red Hat 6.0 ou plus récente est vraiment facile. Vous devez simplement lancer le panneau de contrôle en tapant:

control-panel
puis

Notez que dans la Red Hat 6.x, le client DHCP par défaut est un programme nommé pump qui remplace le dhcpcd mentionné ci-dessus. Un paquetage dhcpcd se trouve sur le CD-ROM, donc si vous ne vous en tirez pas avec pump, vous pouvez toujours essayer avec dhcpcd. Une fois dhcpcd installé (par exemple par rpm -i dhcpcd-1.3.17pl2-1.i386.rpm), vous allez devoir faire quelques modifications.

Quelques notes supplémentaires d'Alexander Stevenson alexander.stevenson@home.com:

Je n'ai pas réussi à utiliser DHCPcd. Finalement, c'est pump, inclus dans la Mandrake 6.0 (et je suppose donc dans la Red Hat) qui a bien voulu fonctionner. J'ai utilisé la commande suivante:

pump -i eth0 -h hôte
Le nom d'hôte est sans importance, mais sans lui, le serveur ne répond pas.

J'ai alors changé la ligne correspondante de mon script /sbin/ifup pour y intégrer cette modification; la version par défaut n'inclut pas l'option -h et ne fonctionne donc pas chez moi.

En résumé, si vous utilisez Linuxconf, et si ça ne fonctionne pas après avoir choisi l'option "DHCP" pour votre interface, essayez d'ajouter "-h hôte" à l'invocation de pump dans le script /sbin/ifup. Mon script ressemble maintenant à ça:


...
if [ -n "$PUMP" ]; then
    echo -n "Determining IP information for $DEVICE..."
    if /sbin/pump -i $DEVICE -h hostname; then
        echo " done."
    else
        echo " failed."
        exit 1
    fi
else ...

C'est tout. Il suffit maintenant de redémarrer votre machine ou de taper

/sbin/ifup eth0
sur la ligne de commande.

3.4 Red Hat 5.x

La configuration de dhcpcd avec une Red Hat 5.0 ou plus récente est vraiment facile. Vous devez simplement lancer le panneau de contrôle en tapant:

control-panel
puis

Quand vous aurez terminé, allez à la section La touche finale.

3.5 Red Hat 4.x et Caldera OpenLinux 1.1/1.2

dhcpcd est inclus dans la distribution standard de Red Hat sous la forme d'un paquetage RPM. Vous pouvez le trouver dans le répertoire RPMS de votre CD-ROM ou le télécharger depuis ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhcpcd-0.6-2.i386.rpm et l'installer avec:

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

Vous pouvez également compiler votre propre version en suivant les instructions données pour la Slackware.

Ces informations m'ont été communiquées par nothing@cc.gatech.edu:


J'ai enlevé mon IP fixe et mon nom d'hôte de /etc/resolv.conf. Par contre, j'y
ai laissé la ligne "search ..." et les lignes de mes deux serveurs de noms
(pour je ne sais quelle raison mon dhcpcd ne crée jamais de /etc/dhcpc/resolv.conf,
et je dois utiliser un /etc/resolv.conf statique).

Dans /etc/sysconfig/network, j'ai enlevé les entrées HOSTNAME et GATEWAY. J'ai
laissé les autres entrées (NETWORKING, DOMAINNAME, GATEWAYDEV) telles quelles.

Dans /etc/sysconfig/network-scripts/ifcfg-eth0, j'ai enlevé les entrées
IPADDR, NETMASK, NETWORK et BROADCAST. Je n'ai pas touché à DEVICE et
ONBOOT. J'ai changé la ligne BOOTPROTO en BOOTPROTO=dhcp.

Sauvegardez le fichier et redémarrez votre machine.

Quand vous aurez terminé, allez à la section La touche finale.

3.6 Debian

Vous pouvez ou bien utiliser le paquetage deb que vous trouverez à ftp://ftp.debian.org/debian/dists/slink/main/binary-i386/net/dhcpcd_0.70-4.deb, ou bien suivre les instructions d'installation sur Slackware. Pour décompacter le paquetage deb, tapez:

dpkg -i /l/endroit/ou/vous/mettez/vos/paquetages/deb/dhcpcd*deb
Il semble que vous n'ayez rien à configurer. D'après Heiko Schlittermann:

Comme les autres paquets Debian, le paquet dhcpcd installe son script d'initialisation en /etc/init.d/<nom_du_paquetage>, ici /etc/init.d/dhcpcd, et crée des liens vers ce script dans les répertoires /etc/rc?.d/.

Le contenu des répertoires /etc/rc?.d/ est ensuite éxécuté automatiquement à l'initialisation du système.

Si vous ne redémarrez pas votre système après l'installation, vous devriez démarrer le démon manuellement:

/etc/init.d/dhcpcd start

Quand vous aurez terminé, allez à la section La touche finale.

3.7 LinuxPPC et MkLinux

La section suivante a été écrite par R. Shapiro.

Depuis la version "1999" (R5), LinuxPPC est pratiquement compatible avec le Red Hat 6, à l'exception du problème décrit ci-dessous. En règle générale, le mode d'emploi est le même que pour la version actuelle de la Red Hat 6

Le problème est que par défaut, la Red Hat 6.x utilise le client DHCP pump, qui ne fonctionne pas correctement sous LinuxPPC. Pour contourner ce problème, vous devez installer la dernière version du dhcpcd de Sergei Viznyuk et éditer /sbin/ifup pour lui faire utiliser dhcpcd à la place de pump. Remplacez


if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then
     PUMP=true
 fi

 if [ -n "$PUMP" ]; then

par
 if [  "$BOOTPROTO" = bootp ]; then
       echo " done."
     else
       echo " failed."
       exit 1
     fi
 elif [ "$BOOTPROTO" = dhcp ]; then
     echo -n "Determining IP information for $DEVICE..."
     if /sbin/dhcpcd -d $DEVICE ; then
       if [ -f /etc/dhcpc/dhcpcd-${DEVICE}.exe ]; then
           /etc/dhcpc/dhcpcd-${DEVICE}.exe
       fi

et faites le changement correspondant dans /sbin/ifdown: remplacez


if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then
....
fi

par
if [ "$BOOTPROTO" = bootp ]; then
fi

if [ "$BOOTPROTO" = dhcp ]; then
      if [ -f /var/run/dhcpcd-${DEVICE}.pid ]; then
              kill `cat /var/run/dhcpcd-${DEVICE}.pid`
              rm -f /var/run/dhcpcd-${DEVICE}.pid
      fi
fi

Une version RPM pour PPC de dhcpcd se trouve sur le CD de LinuxPPC 1999; une version légèrement plus récente se trouve dans le répertoire contrib sur ftp://ftp.linuxppc.org/. Les sources, qui compilent telles quelles sur LinuxPPC 1999, sont disponibles à ftp://ftp.phystech.com/pub/dhcpcd-1.3.17-pl9.tar.gz.

3.8 La touche finale

Après la réinitialisation de votre machine, votre interface réseau devrait être configurée. Tapez:

ifconfig
Vus devriez obtenir quelque chose comme ça:
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 nombre à l'air normal dans "inet addr", c'est bon. Si vous voyez 0.0.0.0, ne désespérez pas, c'est un résultat temporaire, en attendant que dhcpcd obtienne l'adresse IP. Si au bout de quelques minutes, vous voyez toujours 0.0.0.0, consultez la sections problèmes. dhcpcd est un démon qui continuera à tourner tant que votre machine restera allumée. Toutes les trois heures, il contactera le serveur DHCP pour renouveler l'attribution de l'adresse IP. Il consignera tous les messages dans le journal du système (/var/adm/syslog/ sur Slackware, /var/log/syslog/ sur Red Hat ou OpenLinux).

Une dernière chose : vous devez préciser vos serveurs de noms. Il existe deux façons de le faire. Vous pouvez demander les adresses de ses serveurs de noms à votre fournisseur d'accès et les mettre dans /etc/resolv.conf. Vous pouvez aussi laisser dhcpcd obtenir la liste des serveurs de noms depuis le serveur DHCP et le laisser créer un resolv.conf adapté dans /etc/dhcpc/. Pour ma part, j'ai décidé de laisser faire dhcpcd. Pour cela:

Si ça ne fonctionne pas, essayez ceci (réparation suggérée par nothing@cc.gatech.edu, avec quelques modifications de Henrik Stoerner):

J'ai du procéder à ce changement car mon dhcpcd ne crée pas de fichier /etc/dhcpc/resolv.conf. Dans /etc/sysconfig/network-scripts/ifup, j'ai effectué le changement suivant, qui n'est qu'une malheureuse bidouille, mais qui marche pour moi: j'ai changé


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

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

Remarquez le point d'exclamation dans if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ];.

Maintenant, admirez le résultat! :-)

3.9 Notes diverses

Ce qui suit n'est pas à proprement parler nécessaire, mais peut être utile à certaines personnes.

Si vous n'avez besoin de votre connexion qu'occasionnellement, vous pouvez démarrer dhcpcd depuis la ligne de commandes (à condition d'être root) en tapant:

/usr/sbin/dhcpcd
Quand vous voulez couper la connexion, tapez:
/usr/sbin/dhcpcd -k


Page suivante Page précédente Table des matières