DHCPd sous Linux

Paul Makeev, mac@RoSprint.net --- Adaptation française Eric Vinck, Eric.Vinck@mail.dotcom.fr

v1.2, 24 June 1997

1. Introduction

DHCP signifie Dynamic Host Configuration Protocol (Protocole de configuration dynamique de machines). Ce protocole permet à une machine cliente d'obtenir des paramètres de configuration réseau auprès d'un serveur (qui, oh surprise !, fait pour cela tourner un démon DHCPd). DHCP bénéficie d'une compatibilité ascendante avec BOOTP. Pour plus d'informations voir la RFC 2131 (anciennement RFC 1531 - Cf la section 'ressources sur Internet' à la fin de ce document).

Ce document traite du serveur DHCP pour Linux : le démon DHCPd. Il existe un client DHCP pour Linux (le démon DHCPcd) que nous ne décrivons pas ici mais qui peut être trouvé aux adresses suivantes :

Site primaire: ftp.kobe-u.ac.jp /pub/PC-UNIX/Linux/network/dhcp 32kB dhcpcd-0.65.tar.gz Miroir: sunsite.unc.edu /pub/Linux/system/network/daemons 32kB dhcpcd-0.65.tar.gz

Je vous invite par ailleurs à consulter le mini-howto sur DHCPcd.

2. Le serveur DHCPd pour Linux

Il existe plusieurs serveurs DHCP disponibles pour les OS U*X-like (à la Unix), aussi bien payants que dans le domaine public. J'ai pu expérimenter avec succès celui de Paul Vixie/ISC. J'utilise actuellement la version 5.0.14 auprès avoir utilisé la Bêta-5.0.9. Ce ne sont pas des versions spécifiques à Linux mais elles compilent facilement et fonctionnent (pas si facilement !). Vous pouvez en obtenir les dernières version aux adresses suivantes :

http://www.isc.org/dhcp/dhcp-beta.html (pas souvent mise à jour toutefois)

ou, la dernière version à l'heure actuelle :

ftp://ftp.isc.org/isc/dhcp/DHCPD-BETA-5.16.tar.gz

Il n'y a plus de distributions de DHCP à ftp.vix.com. Elles sont désormais à ftp.isc.org.

NB!!! LISEZ ATTENTIVEMENT le fichier README avant de compiler et d'installer DHCPd. Il contient des informations spécifiques pour Linux.

3. Configuration du noyau

L'option MULTICAST doit être activée dans le noyau; évidemment, les fonctions TCP/IP doivent être elles aussi activées :-)

4. Configuration

ifconfig -a doit donner les renseignements suivants :


dhcps:~$ ifconfig -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 la mention 'MULTICAST' n'apparaît pas, vous devez re-configurer le noyau avec l'option MULTICAST (et rebooter évidemment). C'est la seule manipulation nécessaire pour mettre en place le 'multicasting'.

nestat -rn doit avoir cette tête là :


dhcps:~$ netstat -rn
Kernel routing table
Destination     Gateway         Genmask         Flags Metric Ref Use    Iface
255.255.255.255 0.0.0.0         255.255.255.255 UH    0      0   101    eth0

c'est à dire que vous avez un routage 'multicast' via votre carte Ethernet.

5. Problèmes avec le multicasting

Si la commande route add -host 255.255.255.255 eth0 répond 255.255.255.255: Unknown host, essayez d'ajouter dans le fichier /etc/hosts la machine bidon ayant pour adresse IP 255.255.255.255 et lancez la commande route add -host bidon eth0. Ca devrait marcher. Sinon, essayez avec des utilitaires réseaux plus récents et/ou faites la mise à jour du noyau.

6. Configuration de DHCPd

Lisez les docs fournies avec le package, qui sont trop complexes pour être détaillées ici.

7. Peut-on lancer DHCP sur une machine avec plusieurs cartes Ethernet ?

D'après la liste de distribution dhcp (Cf la section 'ressources sur Internet' à la fin de ce document), c'est possible avec le dernier noyau (2.0.31 à ce jour) et la dernière version de DHCPd (5.0.15 à ce jour). D'après la liste de distribution dhcp-server, Linux 2.0.31 a du code SO_BINDTODEVICE qui lui permet de distinguer les interfaces physiques, si bien que la dernière version de DHCPd devrait fontionner avec 2 interfaces Ethernet à la fois sous Linux. Cette possibilitéest toutefois en phase de développement bêta. Je ne l'ai pas vérifiée mais je compte le faire pour la prochaine version de ce Howto.

MERCI de ne pas me demander les sources du noyau 2.0.31. C'est un pré-patch non officiel à l'heure où j'écris ces lignes.

8. DNS dynamique

Une intégration des serveurs DNS et DHCP peut permettre de réaliser un "DNS dynamique". Vous pouvez vous référer aux RFCs 2136 et 2137. Certains serveurs DHCP et DNS peuvent avoir des mécanismes spécifiques pour mettre à jour les informations du DNS. BIND v.8 (aussi développé par ISC) permet des mises à jour dynamiques. J'espère que DHCPD et BIND seront intégrés prochainement.

J'ai écrit un programme en Python, qui automatise l'ajout d'une machine aux tables DHCP et DNS. Si vous voulez plus d'informations sur ce sujet, écrivez-moi à mac@rosprint.net. Il n'est pas conforme aux RFCs, mais il fait le sale boulot à votre place.

9. Ressources sur Internet

Les listes de distribution :