mini-HOWTO DHCP (DHCPd/DHCPcd)

Transcription

mini-HOWTO DHCP (DHCPd/DHCPcd)
mini-HOWTO DHCP (DHCPd/DHCPcd)
Vladimir Vuksan <[email protected]>
Traduction française par Arnaud Gomes-do-Vale <[email protected]> v4.12, 22 octobre 2000
Ce document a pour but de répondre à des questions de base sur la configuration de votre machine Linux comme
serveur ou client DHCP.
Contents
1 Introduction
2
1.1
Avertissements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Nouvelles versions de ce document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Retours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.4
Contributeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.5
Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2 Le protocole DHCP
3
3 Configuration des clients
3
3.1
Téléchargement du démon client (dhcpcd) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3.2
Slackware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
3.3
Red Hat 6.x et Mandrake 6.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.4
Red Hat 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.5
Red Hat 4.x et Caldera OpenLinux 1.1/1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.6
Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.7
LinuxPPC et MkLinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.8
La touche finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.9
Notes diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.10 Problèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.10.1 Votre carte réseau est mal configurée. . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.10.2 Votre serveur DHCP ne supporte que la RFC 1541 ou fonctionne sous Windows NT. .
11
3.10.3 Au démarrage, je vois le message d’erreur ”Using DHCP for eth0 ... failed” mais mon
système fonctionne correctement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.10.4 Mon réseau fonctionne pendant quelques minutes avant d’arrêter de répondre.
. . . .
11
3.10.5 Ma carte ethernet est reconnue au démarrage, mais j’ai toujours le message ”NO
DHCPOFFER” dans le journal du système. Il se trouve que j’ai une carte ethernet
PCMCIA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.10.6 Mon client DHCP envoie des requêtes, mais personne ne répond. . . . . . . . . . . . .
12
3.10.7 J’ai bien suivi toutes les étapes et ma machine ne se connecte toujours pas. . . . . . .
12
1. Introduction
2
3.10.8 Je suis abonné à MediaOne Express et je ne peux toujours pas me connecter. . . . . .
12
3.11 Un autre client DHCP (le dhclient de l’ISC) . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
4 Configurer un serveur DHCP
13
4.1
Un serveur DHCP pour UNIX
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
4.2
Configuration du serveur DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
4.3
Options de DHCPd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
4.4
Démarrage du serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
4.5
Autres documents intéressants
16
1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction
1.1
Avertissements
Nous déclinons toute responsabilité quant au contenu de ce document. L’utilisation des concepts, des exemples ou de tout autre contenu se fait entièrement à vos propres risques. Dans la mesure où il s’agit d’une
nouvelle édition de ce document, il peut comporter des erreurs ou des imprécisions susceptibles d’endommager
votre système. Bien que ce soit très improbable, je n’en prends pas la responsabilité.
De plus, gardez à l’esprit que les informations contenues dans ce document ne sont PAS officielles. La
majeure partie du contenu de ce document est constituée de suppositions, qui se trouvent donner l’effet
prévu pour certaines personnes. Vous utilisez cette information à vos risques et périls.
1.2
Nouvelles versions de ce document
Les nouvelles versions de ce document
1
sont disponibles sur :
<http://www.oswg.org/oswg-nightly/DHCP.html>
Les versions traduites suivantes sont disponibles :
• Chinois - <http://www.linux.org.tw/CLDP/mini/DHCP.html>
• Japonais - <http://www.linux.or.jp/JF/JFdocs/DHCP.html>
• Espagnol - <ftp://cuates.pue.upaep.mx/pub/linux/LuCAS/CHDP-mini-Como/>
La version française se trouve avec les autres HOWTO : <http://www.freenix.org/linux/HOWTO/> .
Vous êtes explicitement autorisés à traduire ce document dans votre langue. Je vous demande simplement
de mettre un lien vers la version originale et de me donner l’adresse URL de votre traduction pour que je
puisse moi-même mettre un lien.
1.3
Retours
Les retours concernant ce document seront vivement appréciés. Sans vos propositions, ce document
n’existerait pas. Envoyez donc vos ajouts, commentaires et critiques à [email protected] .
Adressez vos commentaires concernant la version française à .
1
NdT : il s’agit ici de la version originale en anglais
2. Le protocole DHCP
1.4
3
Contributeurs
Ce document est une version modifiée de la version d’origine de Paul Makeev.
Les personnes suivantes ont contribué à ce mini-HOWTO.
• Heiko Schlittermann
• Jonathan Smith
• Dan Khabaza
• Hal Sadofsky
• Henrik Stoerner
• Paul Rossington
• et de nombreux autres
1.5
Copyright
c Vladimir Vuksan, 1998 et peut être distribué selon les termes de la licence OpenContent
Ce HOWTO est (OPL)
<http://www.opencontent.org/opl.shtml>
2
Le protocole DHCP
DHCP est le protocole de configuration dynamique d’hôtes (Dynamic Host Configuration Protocol). Il est
utilisé pour contrôler certains paramètres importants de la configuration réseau des hôtes (faisant tourner
un client) au moyen d’un serveur. DHCP maintient une compatibilité ascendante avec BOOTP. Pour plus
d’informations, voyez entre autres la RFC 2131 (anciennement la RFC 1541). Reportez-vous à la section
Autres documents intéressants à la fin du document. Vous pouvez aussi lire la FAQ DHCP <http://web.
syr.edu/~jmwobus/comfaqs/dhcp.faq.html> .
Ce mini-HOWTO décrit aussi bien l’utilisation du démon serveur DHCP que celle du démon client DHCP.
La plupart des gens utilise le démon client, qui est utilisé par des stations pour obtenir des informations
sur leur configuration réseau depuis un serveur distant. Le démon serveur est utilisé par les administrateurs
réseau pour distribuer ces informations aux clients ; donc si vous êtes juste un utilisateur, vous avez besoin
du démon client.
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
3. Configuration des clients
4
la 1.3.18. Il est maintenu par Sergei Viznyuk [email protected] 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 :
• <ftp://ftp.phystech.com/pub/> (site principal)
• <http://www.cps.msu.edu/~dunham/out/>
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 :
• <ftp://metalab.unc.edu/pub/Linux/system/network/daemons>
• <ftp://ftp.phystech.com/pub/> (site principal)
Téléchargez la dernière version de dhcpcd.tar.gz.
• Décompactez la :
tar -zxvf dhcpcd-1.3.18pl1.tar.gz
• Allez dans le nouveau répertoire et compilez dhcpcd
cd dhcpcd-1.3.18pl1
make
• Installez le (vous devez être root pour lancer la commande suivante)
make install
Cela va créer un répertoire /etc/dhcpc où dhcpcd 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
3. Configuration des clients
5
/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 3.8 (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
• Sélectionnez Network Configuration
• Cliquez sur Interfaces
• Cliquez sur Add
• Sélectionnez Ethernet
• Dans la fenêtre Edit Ethernet/Bus Interface, sélectionnez Activate interface at boot time et
choisissez DHCP comme Interface configuration protocol.
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 modification (voir 3.7 (ici)).
Quelques notes supplémentaires d’Alexander
[email protected]> :
Stevenson
[email protected]
<mailto:
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 hote
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^
ote” à l’invocation de pump dans le script /sbin/ifup. Mon script
ressemble maintenant à ça :
3. Configuration des clients
6
...
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 ...
Une façon plus élégante d’ajouter le nom d’hôte est indiquée par Aad van der Klaauw :
Je configure en ce moment une passerelle sur mon réseau personnel. J’ai eu besoin d’indiquer l’adresse MAC
et d’utiliser l’option ”-h hôte”. J’ai décidé de ne pas changer le script, mais plutôt d’utiliser le fichier de
configuration. Dans /etc/sysconfig/network-scripts/ifcfg-eth0 j’ai rajouté ce qui suit :
DEVICE="eth0"
MACADDR="00:11:22:33:44:55"
DHCP_HOSTNAME="trigger_for_terayon"
Ça survit aux mises à jour, et à mon avis c’est plus propre.
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
• Sélectionnez Network Configuration
• Cliquez sur Interfaces
• Cliquez sur Add
• Sélectionnez Ethernet
• Dans la fenêtre Edit Ethernet/Bus Interface, sélectionnez Activate interface at boot time et
choisissez DHCP comme Interface configuration protocol.
Quand vous aurez terminé, allez à la section 3.8 (La touche finale).
3. Configuration des clients
3.5
7
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 Slackvare
(3.2 (voir ici)).
Ces informations m’ont été communiquées par <[email protected]> :
J’ai enleve mon IP fixe et mon nom d’hote de /etc/resolv.conf. Par contre, j’y
ai laisse la ligne "search ..." et les lignes de mes deux serveurs de noms
(pour je ne sais quelle raison mon dhcpcd ne cree jamais de /etc/dhcpc/resolv.conf,
et je dois utiliser un /etc/resolv.conf statique).
Dans /etc/sysconfig/network, j’ai enleve les entrees HOSTNAME et GATEWAY. J’ai
laisse les autres entrees (NETWORKING, DOMAINNAME, GATEWAYDEV) telles quelles.
Dans /etc/sysconfig/network-scripts/ifcfg-eth0, j’ai enleve les entrees
IPADDR, NETMASK, NETWORK et BROADCAST. Je n’ai pas touche a DEVICE et
ONBOOT. J’ai change la ligne BOOTPROTO en BOOTPROTO=dhcp.
Sauvegardez le fichier et redemarrez votre machine.
Quand vous aurez terminé, allez à la section 3.8 (La touche finale).
3.6
Debian
Il existe un paquet Debian de DHCPcd (assurez-vous que son nom commence bien par dhcpcd) à l’adresse
<ftp://ftp.debian.org/debian/dists/slink/main/binary-i386/net/> .
Vous pouvez aussi 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.
tu-dresden.de> :
D’après Heiko Schlittermann <mailto:[email protected].
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 3.8 (La touche finale).
3. Configuration des clients
3.7
8
LinuxPPC et MkLinux
La section suivante a été écrite par R. Shapiro.
Depuis la version ”1999” (R5), LinuxPPC est pratiquement compatible avec la 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 des
3.3 (Red Hat 6.x et Mandrake 6.x)
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
3. Configuration des clients
9
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 3.10 (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 :
• Sauvegardez votre ancien /etc/resolv.conf
mv /etc/resolv.conf /etc/resolv.conf.OLD
• Si le répertoire /etc/dhcpc/ n’existe pas, créez le
mkdir /etc/dhcpc
• Faites un lien de /etc/dhcpc/resolv.conf vers /etc/resolv.conf
ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf
3. Configuration des clients
10
Si ça ne fonctionne pas, essayez ceci (réparation suggérée par [email protected], 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 chez 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
3.10
Problèmes
Si vous avez bien suivi toutes les étapes ci-dessus et si malgré tout vous ne pouvez pas accéder au réseau,
plusieurs explications sont possibles.
3. Configuration des clients
3.10.1
11
Votre carte réseau est mal configurée.
Pendant l’initialisation du système, Linux va rechercher votre carte réseau et devrait afficher quelque chose
de ce genre :
eth0: 3c509 at 0x300 tag 1, 10baseT port, address
3c509.c:1.07 6/15/95 [email protected]
00 20 af ee 11 11, IRQ 10.
Si aucun message de ce genre n’apparait, votre carte ethernet n’est vraisemblablement pas reconnue par
Linux. Si votre carte est une carte générique (un clone de NE2000), vous devriez avoir une disquette avec
des utilitaires DOS que vous pouvez utiliser pour la configurer. Essayez plusieurs IRQ jusqu’à ce que Linux
reconnaisse votre carte. Les IRQ 9, 10 ou 12 conviennent généralement.
3.10.2
Votre serveur DHCP ne supporte que la RFC 1541 ou fonctionne sous Windows NT.
Essayez de lancer dhcpcd par
dhcpcd -r
Utilisez ifconfig pour vérifier que votre interface réseau est configurée (attendez quelques secondes que la
configuration soit terminée; au départ, vous obtiendrez ”inet addr: 0.0.0.0”).
Si cela résoud votre problème, ajoutez l’option ”-r” à vos scripts d’initialisation, c’est à dire remplacez
/sbin/dhcpcd par /sbin/dhcpcd -r.
Par exemple, sous Red Hat, éditez le script /etc/sysconfig/network-scripts/ifup et changez ce qui suit :
IFNAME=$[ {DEVICE} \
"/sbin/dhcpcd -r -c /etc/"- etc etc.
3.10.3
Au démarrage, je vois le message d’erreur ”Using DHCP for eth0 ... failed” mais mon
système fonctionne correctement.
Vous utilisez probablement une Red Hat et vous n’avez pas suivi scrupuleusement les instructions. Il vous
manque un point d’exclamation dans un des scripts. Voyez 3.8 (ici) pour corriger ça.
3.10.4
Mon réseau fonctionne pendant quelques minutes avant d’arrêter de répondre.
Il semble que gated (le démon de passerelle) puisse embrouiller le routage sur des machines Linux, avec le
résultat mentionné ci-dessus. Regardez s’il tourne :
ps -auxww | grep gate
S’il tourne effectivement, désinstallez-le avec le gestionnaire RPM de Red Hat ou enlevez son entrée dans
/etc/rc.d/.
3. Configuration des clients
3.10.5
12
Ma carte ethernet est reconnue au démarrage, mais j’ai toujours le message ”NO
DHCPOFFER” dans le journal du système. Il se trouve que j’ai une carte ethernet
PCMCIA.
Assurez-vous que le port 10baseT (la ”prise de téléphone”) de votre carte est activé. Le meilleur moyen de
le vérifier est de regarder pour quel type de connecteur votre carte est configurée à l’allumage, par exemple :
eth0: 3c509 at 0x300 tag 1, 10baseT port, address
^^^^^^^^^^^^
3c509.c:1.07 6/15/95 [email protected]
00 20 af ee 11 11, IRQ 10.
Des utilisateurs de micro-ordinateurs portables m’ont signalé qu’ils avaient ce genre de problèmes à cause
des utilitaires PCMCIA (plus spécifiquement ifport), qui configurent la carte pour utiliser le port 10base2
(ethernet fin). Vous devez vous assurer que vous utilisez le port 10baseT pour votre connexion. Si ce n’est
pas le cas, reconfigurez votre carte et redémarrez la machine.
3.10.6
Mon client DHCP envoie des requêtes, mais personne ne répond.
Cette partie est due à Peter Amstutz.
Sur certains systèmes, vous devez inclure un nom d’hôte dans la requête DHCP. Avec dhcpcd, vous pouvez
faire ça comme ça :
dhcpcd -h hotetoto
Le nom d’hôte requis correspond probablement à votre nom d’utilisateur sur le réseau.
3.10.7
J’ai bien suivi toutes les étapes et ma machine ne se connecte toujours pas.
En général, un modem cable mémorise l’adresse ethernet de votre carte réseau. Donc si vous connectez une
nouvelle machine ou changez de carte réseau, vous allez devoir ”apprendre” à votre modem à reconnaitre
la nouvelle machine ou la nouvelle carte. En général, il suffit d’éteindre le modem et de le rallumer avec
l’ordinateur en marche. Sinon, vous devrez appeler le support technique pour leur signaler que vous avez
changé de carte.
Il se peut aussi que vous ayez des règles de filtrage (installées par ipfwadm) qui interdisent le trafic sur les
ports 67 et 68 utilisés par DHCP pour communiquer les informations de configuration. Vérifiez vos filtres
avec attention.
3.10.8
Je suis abonné à MediaOne Express et je ne peux toujours pas me connecter.
Il semble que MediaOne ait ajouté quelques extensions à DHCP qui ne devraient pas y être. C’est censé
ne plus être un problème, mais si malgré tout vous rencontrez des problèmes, regardez de ce côté. Si vous
avez la (mal)chance d’avoir Windows NT sur votre machine, vérifiez dans l’observateur dévénements, vous
devriez y trouver un avertissement de ce style :
DHCP received an unknown option 067 of length 005. The raw option data is
given below.
0000: 62 61 73 69 63
basic
S’il s’agit bien de ce problème, allez voir <ftp://vanbuer.ddns.org/pub/> et téléchargez ou bien un
binaire, ou bien les sources de la version corrigée.
4. Configurer un serveur DHCP
3.11
13
Un autre client DHCP (le dhclient de l’ISC)
Si vous n’arrivez pas à configurer votre connection au moyen de dhcpcd, vous voudrez peut-être essayer le
dhclient de l’ISC. dhclient fait partie de la distribution DHCP de l’ISC, qui contient un serveur et un
client. Les instructions sur la façon de vous procurer et de compiler la distribution DHCP se trouvent dans
la section 4.1 (Un serveur DHCP pour UNIX). Quand vous aurez terminé, revenez à la section présente pour
la configuration du client.
Les informations qui suivent m’ont été fournies par Ted Lemon [email protected] <mailto:[email protected]>
, un des auteurs de dhclient.
Avec la version actuelle du client DHCP, vous n’avez pas réellement besoin d’un fichier dhclient.conf. Il
vous suffit d’invoquer dhclient :
/sbin/dhclient
Cette commande va configurer toutes les interfaces pouvant faire de la diffusion (NdT : broadcast). Si cela ne
fonctionne pas, ou si vous ne voulez configurer qu’une seule interface, créez un fichier /etc/dhclient.conf
à partir de l’exemple de configuration suivant :
interface "eth0" {
send dhcp-client-identifier 1:xx:xx:xx:xx:xx:xx;
send dhcp-lease-time 86400;
}
Ici, nous supposons que votre interface ethernet est eth0 ; sinon, faites la modification adéquate. Remplacez
également xx:xx:xx:xx:xx:xx par votre adresse ethernet. Ce fichier dhclient.conf fait ressembler votre
client DHCP à un client Windows 95.
4
4.1
Configurer un serveur DHCP
Un serveur DHCP pour UNIX
Il existe plusieurs serveurs DHCP pour les systèmes d’exploitation ”à la UN*X”, aussi bien commerciaux que
libres. L’un des plus populaires est le DHCPd de Paul Vixie et de l’ISC. Actuellement, la dernière version
est la 2.0(dont l’utilisation est conseillée pour le commun des mortels), mais la 3.0 est en bêta-test. Vous
pouvez les obtenir depuis <ftp://ftp.isc.org/isc/dhcp/> .
Certaines distributions fournissent un paquetage dhcpd précompilé; si vous l’avez obtenu de cette manière,
vous pouvez ignorer ce qui suit.
Après avoir téléchargé le serveur, décompactez le. Ensuite, placez vous dans le répertoire de la distribution
et tapez :
./configure
La configuration des différents paramètres va prendre quelques temps. Une fois qu’elle est terminée, tapez :
make
puis
make install
4. Configurer un serveur DHCP
4.2
14
Configuration du serveur DHCP
Une fois le serveur installé, tapez ifconfig -a. Vous devriez obtenir quelque chose comme ç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
Si le mot MULTICAST n’apparaı̂t pas, vous devez recompiler votre noyau avec le support multicast. Sur la
plupart des systèmes, ça ne devrait pas être nécessaire.
Ensuite, ajoutez une route pour 255.255.255.255. D’après le fichier README du DHCPd :
Pour que dhcpd fonctionne correctement avec des clients DHCP pointilleux
(comme celui de Windows 95), il doit pouvoir envoyer des paquets IP avec une
adresse de destination de 255.255.255.255. Malheureusement, Linux insiste pour
changer 255.255.255.255 en l’adresse de diffusion du reseau (ici
192.5.5.223). Ceci constitue une violation du protocole DHCP et, alors que
beaucoup de clients DHCP ignorent ce probleme, certains (par exemple tous ceux
de Microsoft) le remarquent. Les clients qui ont ce probleme sembleront ne pas
voir les messages DHCPOFFER du serveur.
Pour cela, tapez :
route add -host 255.255.255.255 dev eth0
Si vous voyez un message d’erreur :
"255.255.255.255: Unknown host"
essayez d’ajouter la ligne suivante à votre fichier /etc/hosts :
255.255.255.255 tout-le-monde
Ensuite, essayez :
route add -host tout-le-monde dev eth0
ou
route add 255.255.255.0 dev eth0
eth0 désigne bien sûr l’interface réseau que vous utilisez. Si vous en utilisez une autre, faites les changements
nécessaires.
4.3
Options de DHCPd
Maintenant, il vous faut configurer DHCPd. Pour cela, vous allez devoir créer ou éditer /etc/dhcpd.conf.
Il existe une interface graphique pour configurer /etc/dhcpd.conf sous KDE ( <http://www.kde.org/>
), appelée kcmdhcpd, très similaire à l’outil de configuration de DHCP de Windows NT. Lorsque KDE 2.0
4. Configurer un serveur DHCP
15
sortira (NdT : C’est fait depuis quelques mois), il devrait inclure kcmdhcpd. Vous pouvez aussi vous le
procurer directement à <ftp://ftp.us.kde.org/pub/kde/unstable/apps/network/> .
Si vous préférez configurer dhcpd à la main, suivez les instructions ci-dessous.
La plupart du temps, vous voudrez assigner des adresses IP aléatoirement. Cela peut se faire de la façon
suivante :
# Exemple de /etc/dhcpd.conf
# (Ajoutez vos commentaires ici)
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 "mondomaine.org";
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;
}
Le serveur DHCP distribuera aux clients des adresses IP dans les intervalles 192.168.1.10-192.168.1.100 et
192.168.1.150-192.168.1.200. L’attribution de l’adresse IP se fera pour une durée de 600 secondes si le
client ne demande pas une durée différente, la durée maximale du bail étant de 7200 secondes. Le serveur
va également ”conseiller” au client d’utiliser le masque de sous-réseau 255.255.255.0, l’adresse de diffusion
192.168.1.255, 192.168.1.254 comme routeur/passerelle et 192.168.1.1 et 192.168.1.2 comme serveurs DNS.
Si vous devez spécifier un serveur WINS pour vos clients Windows, vous devrez inclure l’option
netbios-name-servers :
option netbios-name-servers 192.168.1.1;
Vous pouvez aussi assigner des adresses IP spécifiques en utilisant l’adresse ethernet du client :
host haagen {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}
Cela assignera l’adresse IP 192.168.1.222 à un client dont l’adresse ethernet est 08:00:2b:4c:59:23.
Vous pouvez aussi mélanger ces différentes possibilités, par exemple si vous voulez donner des adresses IP
statiques à certains clients (les serveurs, par exemple) et des adresses IP dynamiques à d’autres (par exemple
les ordinateurs portables de certains utilisateurs). Il existe de nombreuses autres options: adresse du serveur
NIS, du serveur d’horloge... Si vous avez besoin de ces options, lisez la page de manuel de dhcpd.conf.
4.4
Démarrage du serveur
Il ne reste qu’une chose à faire avant de démarrer le serveur. La plupart des installations de DHCPd ne créent
pas par défaut de fichier dhcpd.leases. Ce fichier est utilisé par DHCPd pour stocker des informations à
propos des attributions en cours de validité. Il est en format texte brut, donc vous pouvez le lire pendant le
fonctionnement de DHCPd. Pour le créer, tapez :
4. Configurer un serveur DHCP
16
touch /var/state/dhcp/dhcpd.leases
sur la ligne de commandes. Cela va créer un fichier vide (de taille nulle). Certaines vieilles versions de dhcpd
2.0 plaçaient ce fichier en /etc/dhcpd.leases. Vous n’avez pas à y changer quoi que ce soit; c’est dhcpd
qui le manipulera lui-même. Si vous voyez un message d’erreur disant que le fichier n’existe pas, ignorez le
et passez à l’étape suivante.
Vous pouvez maintenant invoquer le serveur DHCP. Contentez vous de taper (ou de rajouter dans les scripts
de démarrage) :
/usr/sbin/dhcpd
Cette commande invoquera dhcpd sur l’interface eth0. Pour l’utiliser sur une autre interface, précisez-le
simplement sur la ligne de commande, par exemple :
/usr/sbin/dhcpd eth1
Pour vérifier que tout fonctionne correctement, vous devriez d’abord activer le mode de débogage et mettre
le serveur en avant-plan. Vous pouvez le faire en tapant :
/usr/sbin/dhcpd -d -f
Ensuite, allumez un de vos clients et regardez la console de votre serveur. Vous verrez apparaitre un certain
nombre de messages de débogage. Si tout se passe bien, vous avez terminé. :-) Quittez dhcpd et relancez-le
sans les options -d -f. Si vous voulez qu’il soit lancé au démarrage, rajoutez dhcpd par exemple au fichier
/etc/rc.d/rc.local.
4.5
Autres documents intéressants
Le numéro d’avril 2000 de Linux Magazine contient un bon article intitulé Network Nirvana : How to
make Network Configuration as easy as DHCP <http://www.linux-mag.com/2000-04/networknirvana_
01.html> qui traite de la configuration de DHCP.