Bandeau

Dynamic Host Configuration Protocol

1 Introduction

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, dois disposer de :

Pour configurer vos hôtes locaux, vous avez deux possibilités :

Comme vous le voyez, le luxe de la seconde solution est tout de même tentant, au point que nous allons le mettre en oeuvre.

2 Que disent les livres ?

Les choses se passent avec le peu de moyens dont vous disposez :

Le dialogue est décrit de la manière suivante :

3 Détails sur le bail

Dans le bail, il y a non seulement une adresse IP pour le client, avec une durée de validité, mais également d'autres informations de configuration comme :

Cette liste est loin d'être complête, il existe en effet une grande quantité d'options qui peuvent êtres transmises. Lorsque le bail arrive à environ la moitié de son temps de vie, le client va essayer de renouveler ce bail, cette fois-ci en s'adressant directement au serveur qui le lui a attribué. Il n'y aura alors qu'un DHCPREQUEST et un DHCPACK. Si, au bout des 7/8e de la durée de vie du bail en cours, ce dernier n'a pu être renouvelé, le client essayera d'obtenir un nouveau bail auprès d'un DHCP quelconque qui voudra bien lui répondre. Il pourra alors se faire que le client change d'adresse IP en cours de session. Normalement, cette situation ne devrait pas se produire, sauf en cas de panne du DHCP.

Dans les manuels, il est recommandé de ne pas créer de baux inutilement courts, ceci entraînant une augmentation significative du broadcast sur le réseau. Le compromis est à trouver entre la durée moyenne de connexion des utilisateurs, la réserve d'adresses IP du serveur, le nombre d'abonnés...

En règle générale, un FAI dispose toujours de moins d'adresses que d'abonnés, parce que tous les abonnés ne se connectent pas en même temps. Une mauvaise analyse des statistiques peut alors entraîner de graves problèmes aux heures de pointe.

4 Question subsidiaire.

Doit-il donc y avoir nécessairement un serveur DHCP par sous-réseau et doit-il disposer d'une adresse IP dans la même classe que celle qui constitue sa plage d'adresses ?

Non, pas nécessairement. Votre réseau physique peut être formé de plusieurs sous réseaux logiques, avec des routeurs entre chaque sous réseau et le tout peut fonctionner avec un seul serveur DHCP... Mais alors, comment la négociation peut-elle se faire, puisque, normalement, un "broadcast" n'est pas retransmis par les routeurs ?

Les requêtes DHCP doivent pouvoir atteindre le serveur qui est situé sur un autre réseau logique, elles doivent donc passer les routeurs, ce qui n'est théoriquement pas possible. Il est alors nécessaire d'installer sur un ou plusieurs routeurs un agent de relais qui va intercepter les requêtes en broadcast et les transmettre à un serveur DHCP connu de cet agent.

C'est l'agent de relais situé sur la passerelle qui va faire l'intermédiaire et le client réussira tout de même à obtenir une adresse, donnée par un DHCP situé sur un autre réseau, mais relayé par l'agent de relais. Le serveur DHCP sera même capable d'envoyer des paramètres différents, suivant le sous réseau du client...

5 Topologie du réseau.

Nous allons prendre une configuration simple, avec une machine Linux qui va cumuler plusieurs fonctions :

Les clients peuvent être de tout type : Windows, Mac OS, Linux...

Nous allons donc installer sur la passerelle un serveur DHCP. Le DNS est tout à fait optionnel, mais ce serait bien qu'il y soit, il peut même y être déjà, ça n'est absolument pas gênant. S'il n'y est pas encore, vous pourrez le rajouter par la suite. Les fonctions de passerelle et de firewall ne sont pas fondamentales, nous pourrions nous contenter d'un serveur Linux, non connecté au Net.

6 Installation du serveur DHCP

Sous Debian, ça se fait très simplement en installant les paquetages dhcp3-common et dhcp3-server. Il y a un seul fichier de configuration : /etc/dhcp3/dhcpd.conf, que vous pourrez configurer avec un éditeur de texte, où à travers l'interface Webmin.

7 Configuration du serveur

Comme nous l'avons vu plus haut, un serveur DHCP, en plus de fournir la configuration IP "de base" (adresse et masque), peut aussi transmettre un nombre plus ou moins grand de paramètres supplémentaires. Nous aurons donc au moins deux choses à configurer :

Nous avons vu qu'un seul serveur DHCP pouvait être utilisé pour plusieurs réseaux logiques interconnectés, pourvu que les interconnexions disposent d'un agent de relais DHCP. Dans un tel cas, le serveur DHCP devra disposer d'au moins une étendue d'adresses IP par réseau logique dont il aura la charge.

En ce qui concerne les options, nous disposons d'une architecture hiérarchique :

Si l'on veut aller encore plus loin, sachez que DHCPd peut créer des groupes distincts de machines dans un même sous réseau et même gérer des clients de façon individuelle.

8 Une configuration basique.

Nous avons un seul réseau, avec des IP choisies dans la classe C privée 192.168.0.0, donc avec un masque 255.255.255.0

Nous avons donc une passerelle par défaut unique pour tous nos hôtes du réseau, dans l'exemple, ce sera 192.168.0.253

Nous disposons enfin d'un DNS, également unique pour tous les hôtes du réseau, il est sur la même machine, à savoir 192.168.0.253. Le "domaine" que nous avons construit sur notre réseau local s'appelle greta.fr. Il n'a aucune réalité sur le Net, mais ça n'a pas d'importance, puisque c'est un domaine qui ne doit pas être visible depuis le Net

Sur la totalité de la classe C disponible, nous allons réserver les adresses comprises entre 192.168.0.1 et 192.168.0.9 pour les clients du réseau. Cette plage constituera la réserve d'adresses que le DHCP pourra fournir aux clients.

Un dernier point important, c'est la durée de vie du bail que le DHCP va attribuer aux clients. L'un des avantages de DHCP, c'est de pouvoir attribuer une configuration IP qui ne sera valide que dans un laps de temps donné, à charge pour le client de demander le renouvellement de ce bail avant chaque expiration. Ce temps de vie pourra aller de quelques minutes à l'infini, suivant les besoins. Sur un réseau qui évolue peu, le bail peut être sans problèmes de quelques jours, à quelques semaines, voire plusieurs mois. Sur un réseau où les hôtes vont et viennent, il sera plus sage de ne laisser vivre les configurations que quelques heures. Bien entendu, plus le bail est court, plus le trafic généré par DHCP devient important et plus la charge du serveur augmente. Dans l'exemple, nous utiliserons une heure (3600 secondes).

9 Note importante

Le daemon DHCPd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Ce n'est pas forcément souhaitable, c'est même assez souvent ennuyeux. Fort heureusement, ce comportement par défaut peut être modifié, mais pas dans le fichier de configuration. Il faut utiliser un paramètre dans la ligne de commande qui va démarrer DHCPd. Dans le cas de Debian, il faut éditer le script /etc/init.d/dhcpd3-server. Il est bien documenté et vous trouverez aisément la variable interfaces qu'il faut initialiser avec le nom de la ou des interfaces qui doivent êtres écoutées.

			# Les trois lignes qui suivent doivent être présentes
			# même si pour le moment, elles ne nous servent pas.
			# Elles concernent la mise à jour dynamique du DNS
			# que nous verrons plus tard
			# Voir DNS
	
			ddns-domainname "greta.fr";
			ddns-update-style none;
			ddns-updates off;
			
			# tous les clients sont acceptés, même si on ne les connaît pas
			# leur adresse MAC.
			
			allow unknown-clients;
			
			# Durée de vie du bail
			
			max-lease-time 3600;
			default-lease-time 3600;
			
			# Les options que l'on va donner aux clients
			
			option domain-name-servers 192.168.0.253;
			option domain-name "gluglu.org";
			option routers 192.168.0.253;
			
			# La définition du seul "sous-réseau" dont nous disposons
			# avec la plage d'IP à distribuer.
			
			subnet 192.168.0.0 netmask 255.255.255.0 {
				range 192.168.0.1 192.168.0.9;
			}
		

Cette configuration simplissime va suffire à nos besoins, du moins dans un premier temps. Dans ce fichier, il y a des directives, qui sont obligatoires :

Et des options qui seront dans la pratique, des paramètres de configuration optionnels. Ici :

Toutes les options qui figurent avant le paragraphe "subnet 192.168.0.0 netmask 255.255.255.0" sont des options globales, il n'y a ici aucune option d'étendue (de sous-réseau) de définie.

Cette configuration doit nous permettre de fonctionner dans notre contexte. Il nous suffit de lancer ou de relancer le serveur : /etc/init.d/dhcpd3-server restart

10 Le coté client

Windows 95/98

Par le panneau de configuration, icône réseau, cliquez sur TCP/IP. L'adresse IP doit être configurée dynamiquement, c'est d'ailleurs le choix par défaut à l'installation.

Windows NT4/2000/XP

La configuration se fait dans le panneau de configuration, icône réseau, onglet protocoles, puis propriétés de TCP/IP. Là, vous avez indiqué que la carte doit recevoir une adresse IP dynamiquement. Tapez dans une console, la commande "ipconfig"
La commande "ipconfig" permet également :

C'est cette commande qui est à utiliser pour essayer de récupérer une adresse IP lorsque vous avez des problèmes.

Notes

Les rubriques "Bail obtenu" et "Expiration du bail" contiennent des valeurs calculées par votre machine. Le serveur DHCP ne donne que la durée.
La commande en mode graphique "winipcfg" n'existe pas nativement sous Windows NT mais vous pouvez la récupérer dans le kit de ressources techniques.

Linux

DHCLIENT est écrit par ISC, les auteurs de BIND et de DHCPD. Ce client cumule à mon sens tous les avantages :

Télécharger dhcp au format OpenOffice ou pdf

© 2005/2024 - Pep - Pour m'envoyer un mail - Connecté en ipv4