mac@RoSprint.net
---
Adaptation française Eric Vinck, Eric.Vinck@mail.dotcom.fr
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.
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.
L'option MULTICAST doit être activée dans le noyau; évidemment, les fonctions TCP/IP doivent être elles aussi activées :-)
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.
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.
Lisez les docs fournies avec le package, qui sont trop complexes pour être détaillées ici.
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.
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.
http://www.isc.org/dhcp.html
http://www.isc.org/bind.html.
http://www-leland.stanford.edu/%7Ellurch/win95netbugs/faq-c.html
http://www.bucknell.edu/~droms/dhcp/index.html
http://web.syr.edu/~jmwobus/comfaqs/dhcp.faq.html
Les listes de distribution :
dhcp-server@fugue.com
- liste sur le DHCPd de ISC/Vixie.dhcp-v4@bucknell.edu
- liste sur le DHCPd de Bucknell.