Un serveur DHCP (Dynamic Host
Configuration Protocol) a pour rôle de distribuer des
adresses IP à des clients pour une durée
déterminée.
Au lieu d'affecter manuellement à chaque hôte une adresse statique,
ainsi que tous les paramètres tels que (serveur de noms, passerelle par
défaut, nom du réseau), un serveur DHCP alloue à un
client, un bail d'accès au réseau, pour une durée déterminée (durée du
bail). Le serveur passe en paramètres au client toutes les informations
dont il a besoin.
Tous les noeuds critiques du réseau (serveur de nom primaire et
secondaire, passerelle par défaut) ont une adresse IP statique ; en effet,
si celle-ci variait, ce processus ne serait plus réalisable.
Ce processus est mis en oeuvre quand vous ouvrez une session chez un
fournisseur d'accès Internet par modem. Le fournisseur d'accès, vous
alloue une adresse IP de son réseau le temps de la
liaison. Cette adresse est libérée, donc de nouveau disponible, lors de la
fermeture de la session.
Pourquoi mettre en place un réseau TCP/IP avec des adresses IP dynamiques
Avantages de DHCP dans l'administration d'un réseau ?
- Le protocole DHCP offre une configuration de réseau TCP/IP fiable et simple, empêche les conflits d'adresses et permet de contrôler l'utilisation des adresses IP de façon centralisée. Ainsi, si un paramètre change au niveau du réseau, comme, par exemple l'adresse de la passerelle par défaut, il suffit de changer la valeur du paramètre au niveau du serveur DHCP, pour que toutes les stations aient une prise en compte du nouveau paramètre dès que le bail sera renouvelé. Dans le cas de l'adressage statique, il faudrait manuellement reconfigurer toutes les machines.
- économie d'adresse : ce protocole est presque toujours utilisé par les fournisseurs d'accès Internet qui disposent d'un nombre d'adresses limité. Ainsi grâce à DHCP, seules les machines connectées en ligne ont une adresse IP. En effet, imaginons un fournisseur d'accès qui a plus de 1000 clients. Il lui faudrait 5 réseaux de classe C, s'il voulait donner à chaque client une adresse IP particulière. S'il se dit que chaque client utilise en moyenne un temps de connexion de 10 mn par jour, il peut s'en sortir avec une seule classe C, en attribuant, ce que l'on pourrait appeler des "jetons d'accès" en fonction des besoins des clients.
- Les postes itinérants sont plus faciles à gérer
- Le changement de plan d'adressage se trouve facilité par le dynamisme d'attribution.
L'administrateur de réseau contrôle le mode d'attribution des adresses IP en spécifiant une durée de bail qui indique combien de temps l'hôte peut utiliser une configuration IP attribuée, avant de devoir solliciter le renouvellement du bail auprès du serveur DHCP.
L'adresse IP est libérée automatiquement, à l'expiration du bail, pour un ordinateur client DHCP retiré d'un sous-réseau, et une nouvelle adresse est automatiquement définie pour ce dernier, lorsque cet ordinateur est reconnecté à un autre sous-réseau. Ni l'utilisateur ni l'administrateur de réseau n'ont besoin de fournir de nouvelles informations relatives à la configuration. Cette fonctionnalité est non négligeable, tant pour les utilisateurs de portables fixés ou non à différentes stations d'accueil que pour les ordinateurs fréquemment déplacés.
L'inconvénient :
Le client utilise des trames de broadcast pour rechercher un serveur DHCP sur le réseau, cela charge le réseau. Si vous avez une entreprise avec plusieurs centaines de personnes qui ouvrent leur session le matin à 8 h ou l'après midi à 14 h, il peut s'en suivre de graves goulets d'étranglement sur le réseau. L'administrateur devra donc réfléchir sérieusement à l'organisation de son réseau.
Protocole DHCP(Dynamic Host Configuration Protocol)
Fonctionnement de DHCP
Un client DHCP est un ordinateur qui demande une adresse IP à un serveur DHCP.Comment, alors, un client DHCP, qui utilise le protocole TCP/IP mais qui n'a pas encore obtenu d'adresse IP par le serveur, peut-il communiquer sur le réseau ?
Attribution d'une adresse DHCP
1 - Le client émet un message de demande de bail IP (DHCPDISCOVER) qui est envoyé sous forme d'une diffusion sur le réseau avec adresse IP source 0.0.0.0 et adresse IP destination 255.255.255.255 et adresse MAC.
2 - Les serveurs DHCP répondent en proposant une adresse IP avec une durée de bail et l'adresse IP du serveur DHCP (DHCOFFER)
3 - Le client sélectionne la première adresse IP (s'il y a plusieurs serveurs DHCP) reçue et envoie une demande d'utilisation de cette adresse au serveur DHCP (DHCPREQUEST). Son message envoyé par diffusion comporte l'identification du serveur sélectionné qui est informé que son offre a été retenue ; tous les autres serveurs DHCP retirent leur offre et les adresses proposée redeviennent disponibles.
4 - Le serveur DHCP accuse réception de la demande et accorde l'adresse en bail (DHCPACK), les autres serveurs retirent leur proposition.
Enfin le client utilise l'adresse pour se connecter au réseau.
Vous trouverez des éléments très précis sur le protocole DHCP dans les pages du manuel de Linux. (dhcp3d,
dhcpd.conf
et
dhclient.conf
).Renouvellement de bail IP
Les clients DHCP d'un serveur DHCP Windows (NT/2000) tentent de renouveler leur bail lorsqu'ils ont atteint 50% de sa durée par un DHCPREQUEST. Si le serveur DHCP est disponible il envoie un DHCPACK avec la nouvelle durée et éventuellement les mises à jour des paramètres de configuration.
Si à 50% le bail n'a pu être renouvelé, le client tente de contacter l'ensemble des serveurs DHCP (diffusion) lorsqu'il atteint 87,5% de son bail, avec un DHCPREQUEST, les serveurs répondent soit par DHCPACK soit par DHCPNACK (adresse inutilisable, étendue désactivée...).
Lorsque le bail expire ou qu'un message DHCPNACK est reçu le client doit cesser d'utiliser l'adresse IP et et demander un nouveau bail (retour au processus de souscription). Lorsque le bail expire et que le client n'obtient pas d'autre adresse la communication TCP/IP s'interrompt.
Remarque : Si la demande n'aboutit pas et que le bail n'est pas expiré, le client continue à utiliser ses paramètres IP.
Configuration d'un serveur DHCP
Définir une plage d'adresses qui peuvent être louées à des hôtes qui en font la demande.En général, on donne :
- Une adresse de début (la première qui sera attribuée)
- Une adresse de fin (la dernière)
- Une ou plusieurs plages d'adresses à exclure de la location (ceci permet de faire cohabiter un modèle de configuration IP dynamique avec un modèle statique)
- Un masque de sous-réseau
Il est possible de connaître les baux actifs (les locations en cours), on voit alors à quelle adresse MAC est attribuée une adresse IP.
Mise en oeuvre d'un client DHCP
Les clients DHCP doivent être configurés seulement après la configuration du serveur. Etant donné qu'un ordinateur ne peut fonctionner simultanément comme client et serveur DHCP, l'ordinateur fonctionnant comme serveur DHCP doit être configuré avec une adresse IP fixe.Lors de la configuration du client DHCP, il faut cocher la case « Obtenir une adresse IP depuis un serveur DHCP » dans la fenêtre des propriétés de Microsoft TCP/IP. Il n'est pas nécessaire alors de préciser une adresse IP ou un masque de sous-réseau.
Voici, par exemple, la configuration TCP/IP d'un ordinateur Windows XP qui sollicite une configuration IP auprès d'un serveur DHCP :
IPCONFIG
ipconfig /all : affiche les paramètres IP complets, cela va nous permettre de vérifier la bonne affectation d'adresse.
ipconfig /renew : déclenche l'envoi d'un message DHCPREQUEST vers le serveur DHCP pour obtenir des options de mise à jour
ipconfig /release : déclenche l'envoi d'un message DHCPRELEASE pour abandonner le bail. Commande utile lorsque le client change de réseau.
Rôle de l'agent de relais DHCP
Comme les clients contactent les serveurs DHCP à l'aide d'une diffusion, dans un inter-réseau, vous devrez théoriquement installer un serveur DHCP par sous-réseau. Si votre routeur prend en charge la RFC 1542, il peut faire office d'agent de relais DHCP, et ainsi relayer les diffusions de demande d'adresse IP des clients DHCP dans chaque sous-réseau.Si votre routeur ne prend pas en charge la RFC 1542, une machine serveur peut être configurée comme agent de relais DHCP, il suffira de lui spécifier l'adresse du serveur DHCP. Les demandes des clients DHCP seront relayées vers le serveur DHCP par l'agent de relais DHCP qui transmettra les offres aux clients.
Agent de relais DHCP dans un réseau routé
Installation
la mise en place d’un serveur DHCP simple (sans mise à jour du DNS). Nous créerons un DHCP pour le réseau 192.168.22.0/24, la plage d’adresse sera 192.168.22.20 à 192.168.22.100. La passerelle sera 192.168.22.1, le serveur DNS sera 192.168.22.1 et le nom de domaine home.lan.Petit point qui peut sembler bête, mais qui peut être synonyme d’erreur si on ne fait pas attention.
Il faut que le serveur ait une IP fixe comprise dans la même classe d’adresse que l’adresse de réseau couverte par l’étendue DHCP. (192.168.22.2 par exemple).
rpm -q dhcpSi vous avez comme réponse "le paquetage dhcp n'est pas installé", installez-le en faisant un petit :
yum install dhcp
Configuration :
Une fois installé il va falloir éditer le fichier /etc/dhcpd.conf.ddns-update-style none; ignore client-updates; authoritative; subnet 192.168.22.0 netmask 255.255.255.0 { option routers 192.168.22.1; # passerelle par défaut option subnet-mask 255.255.255.0; # masque de sous-réseau option domain-name "home.lan"; # nom de domaine option domain-name-servers 192.168.22.1;# serveurs DNS range 192.168.22.20 192.168.22.100; # plage d’adresse default-lease-time 21600; # durée du bail en secondes max-lease-time 43200 ; # durée maxi du bail en sec. #Si on veut faire des réservations (attribuer tout le temps la même IP # a un certain équipement) on les insérera ici. }Il existe d’autres options telles que le serveur de temps, ou les serveurs WINS. (option ntp-servers, option netbios-name-servers). Faites :
man dhcpd.confpour voir les autres options.
Voici la syntaxe pour une réservation (elle est à insérer a l’endroit indiqué). Vous pouvez personnaliser les options DHCP pour chaque réservation.
host nommachine { hardware ethernet 12:34:56:78:AB:CD; # adresse MAC de la machine fixed-address 192.168.22.100; # IP que l’on veut lui assigner }Si vous utilisez beaucoup de stations linux, le paramètre use-host-decl-names va vous permettre de laisser le nom par défaut de l'installation (localhost.localdomain) et de fixer le nom d'hôte au niveau du serveur DHCP. La syntaxe est la suivante et le code est à insérer dans la partie réservation :
group pclinux { use-host-decl-names on; host nommachine2 { hardware ethernet 08:00:2b:4c:29:32; fixed-address nommachine2.nomdomaine.tld; } }
Lancement :
Il faut lancer le service DHCP :service dhcpd startIl est possible d’avoir un serveur DHCP Multi résident (qui est situé sur plusieurs sous réseaux, et qui attribuera des baux à chaque réseau). Il suffit d’avoir une autre carte réseau avec une autre adresse (ex : 192.168.0.1/24). Vous devrez alors rajouter une autre catégorie subnet (192.168.0.0 dans cet exemple) adaptée et y mettre les options nécessaires.
Ce qu’il faut retenir de façon plus générale c’est :
- Chaque option se termine par un ;
- Chaque partie commençant par {doit se terminer par}
- Les options n’étant pas dans un subnet précis, sont valables pour tout les subnets.
En cas de problème, il suffit de lancer en console :
tail -f /var/log/messageset de relancer le service. Les messages d’erreurs sont en général suffisamment clairs. Vous pourrez même voir les différentes phases d’attribution des IPs (DHCPDiscover, …).
Pour infos, les baux actuels sont visibles dans le fichier /var/lib/dhcp/dhcpd.leases. Pour activer le service au démarrage (pour le runlevel courant) :
chkconfig dhcpd on
Pour aller plus loin:
- Il est possible de créer ses propres options DHCP (cela est nécessaire pour certains matériels nécessitant des options n'étant pas les RFC), il suffit pour cela d'en faire la déclaration.
# Définition des options option serveur_ftp code 161 = string ; option chemin_ftp code 162 = string ;Pour les utiliser on les utilise comme n'importe quelle option :
option serveur_ftp "10.1.1.12" ; option chemin_ftp "/pub/updates" ;
- Il est également intéressant de mettre à jour un serveur DNS a partir des IP distribuées par le serveur DHCP.