Comment installer et configurer un serveur DHCP sur Debian ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à installer et à configurer un serveur DHCP sous Debian 12. Vous pouvez utiliser une autre distribution puisque le paquet ISC DHCP Server n'est pas limité à cette distribution Linux.
Remarque : à l'heure où ces lignes sont écrites, ISC DHCP Server reste disponible sur plusieurs distributions Linux, y compris Debian 12, mais il n'est plus maintenu depuis 2022 (le support pour les pros reste actif). L'ISC encourage ses utilisateurs à passer sur son autre solution : KEA. Néanmoins, ISC DHCP Server reste pleinement fonctionnel et peut être utilisé à des fins de tests ou sur un réseau isolé. Consultez cette page pour en savoir plus.
Si vous désirez installer ISC KEA plutôt que ISC DHCP Server, lisez cet article :
Pour rappel, un serveur DHCP permet de fournir automatiquement une configuration IP à un appareil. Par exemple, à des ordinateurs, des smartphones, des imprimantes réseau, etc... Cette configuration IP est composée de plusieurs informations, dont celles-ci :
- d’une adresse IP
- d’un masque de réseau
- d’une passerelle
- d’une adresse de DNS
Lorsqu’une machine sans configuration IP se connecte au réseau, celle-ci émet un DHCP DISCOVER sur le réseau afin de tenter de solliciter un serveur DHCP. Le serveur DHCP répond par un DHCP OFFER et commence à donner des premiers paramètres, la machine envois une demande DHCP REQUEST puis le serveur DHCP envois un DHCP ACK afin de fournir la configuration IP.
La configuration IP associée à une machine est enregistrée dans ce que l'on appelle un bail DHCP. Ce bail inscrit dans la base de données du serveur DHCP indique que telle machine aura telle adresse IP pour une durée de 8 jours, par exemple. Si besoin, la machine peut renouveler son bail avant qu'il n'expire pour conserver cette adresse IP. Sinon, il sera libéré et le serveur DHCP pourra réattribuer cette adresse IP à une autre machine. Par ailleurs, un seul serveur DHCP peut fournir des configurations IP à plusieurs réseaux différents grâce à la fonction de relais DHCP.
Dans le cadre de ce tutoriel, notre objectif sera d'installer un serveur DHCP est de distribuer la plage d'adresses IP suivante : de 192.168.14.100 à 192.168.14.120.
Prérequis :
- Une machine Debian avec une adresse IP fixe, à savoir 192.168.14.99/24, pour ma part.
- Aucun autre serveur DHCP actif sur le réseau afin d’éviter les conflits.
- Une machine cliente (Debian, Ubuntu, Windows, etc...) sans configuration IP afin de tester notre serveur DHCP.
- Une connexion Internet pour télécharger les paquets d'installation.
Version originale de l'article : 10 mars 2015
II. Installation du serveur DHCP
Commençons par une mise à jour du cache des paquets du système :
sudo apt-get update
Nous allons maintenant installer le paquet "isc-dhcp-server" avec la commande suivante :
sudo apt-get install isc-dhcp-server
Il est possible que l'installation se termine par une erreur, mais ce n'est pas gênant. C'est lié au fait que le serveur DHCP n'est pas encore configuré. Vous pourriez notamment voir ceci dans la console :
Failed to start isc-dhcp-server.service - LSB: DHCP server
Passons à la configuration du serveur DHCP.
III. Configuration du serveur DHCP
A. Configuration globale du serveur DHCP
Nous allons commencer par configurer le serveur DHCP en lui-même, notamment pour définir sur quelle interface réseau il doit être en écoute. Avant de modifier le fichier de configuration, je vous encourage à afficher la configuration IP de votre machine pour identifier le nom de l'interface réseau.
ip a
Pour ma part, l'interface réseau s'appelle "ens33".
Désormais, éditez le fichier de configuration du serveur DHCP :
sudo nano /etc/default/isc-dhcp-server
Dans ce fichier, vous devez configurer deux directives.
Commencez par retirer le "#" sur cette ligne pour activer la prise en charge du fichier de configuration "dhcpd.conf" que nous modifierons par la suite.
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
Puis, configurez l'option "INTERFACESv4" afin de préciser le nom de l'interface sur laquelle serveur DHCP doit être en écoute. Il est possible de préciser plusieurs valeurs. Ici, nous effectuons la configuration pour IPv4, mais si vous avez besoin de l'IPv6, faites de même avec la directive "INTERFACESv6".
Indiquez le nom de l'interface repéré précédemment :
INTERFACESv4="ens33"
Vous pouvez enregistrer et fermer ce fichier.
B. Créer une étendue DHCP
Désormais, nous allons modifier le fichier de configuration "dhcpd.conf" pour déclarer une première étendue.
sudo nano /etc/dhcp/dhcpd.conf
Dans ce fichier, vous pouvez déclarer des options au niveau du serveur ou au niveau de chaque étendue, selon vos besoins. Cela signifie qu'une option peut être positionnée au sein d'un bloc déclaratif "subnet" pour être appliquée à une étendue, ou en dehors, pour s'appliquer par défaut sur toutes les étendues.
Commencez par ajouter ces lignes, en adaptant selon vos besoins :
# Nom de domaine
option domain-name "it-connect.local";
# Durée pour les baux DHCP en secondes (default 4 jours et 8 jours maximum)
default-lease-time 345600;
max-lease-time 691200;
# Serveur DHCP principal sur ce réseau local
authoritative;
# Logs
log-facility local7;
Puis, à la suite, déclarez votre première étendue DHCP :
# Déclaration d'une étendue DHCP
subnet 192.168.14.0 netmask 255.255.255.0 {
# Plage d'adresses IP à distribuer
range 192.168.14.100 192.168.14.120;
# Serveur(s) DNS à distribuer
option domain-name-servers 192.168.14.201;
# Passerelle par défaut
option routers 192.168.14.2;
}
Ce qui donne :
Quand c'est fait, enregistrez le fichier et relancez le service du serveur DHCP :
sudo systemctl restart isc-dhcp-server.service
La configuration est maintenant terminée. Vous pouvez effectuer un test dès maintenant ou poursuivre la configuration avec une réservation DHCP, si vous le souhaitez.
Si le serveur DHCP ne démarre pas, vérifiez les journaux. Vous pouvez utiliser cette commande :
sudo journalctl -xe | grep -e dhcpd
Une erreur de saisie est vite arrivée... Un caractère mal placé et cela peut empêcher la validation du fichier de configuration. Ainsi, vous pourriez voir un message tel que "dhcpd self-test failed. Please fix /etc/dhcp/dhcpd.conf" dans les logs.
C. Créer une réservation DHCP
La réservation DHCP va permettre de réserver une adresse IP pour l'associer à une adresse MAC. Ainsi, il n'y a que la machine avec l'adresse MAC correspondante qui pourra obtenir cette adresse IP. Il est important de savoir effectuer ce type de configuration, par exemple, pour une imprimante.
Ouvrez de nouveau le fichier de configuration "dhcpd.conf".
À la suite de la déclaration du subnet, mais en dehors de ce bloc, ajoutez ces lignes :
# Réservation d'adresse IP pour le PC "Ubuntu-2404"
host Ubuntu-2404 {
hardware ethernet 00:0c:29:0a:6f:c3;
fixed-address 192.168.1.100;
}
Ainsi, la machine qui dispose de l'adresse MAC "00:0c:29:0a:6f:c3" aura toujours l'adresse IP "192.168.14.100", soit la première adresse IP de notre plage IP. Ici, l'entrée est nommée "Ubuntu-2404" car j'ai repris le nom d'hôte afin de pouvoir m'y retrouver dans ma configuration, mais vous pouvez indiquer le nom de votre choix.
Quand c'est fait, enregistrez le fichier et relancez le service du serveur DHCP :
sudo systemctl restart isc-dhcp-server.service
On va pouvoir passer à la phase de test !
IV. Test de bon fonctionnement du DHCP
Pour le test, on va simplement démarrer une machine Linux ou Windows sur le même réseau local que notre serveur DHCP. Ainsi, nous verrons s'il distribue bien une configuration IP à notre machine.
Vous devez configurer la carte réseau de la machine cliente pour qu'elle soit en DHCP. Si vous utilisez Ubuntu, Debian, ou Windows, pour faire ce test, les manipulations ne sont pas les mêmes. Vous pouvez vous aider ces tutoriels :
- Comment configurer une adresse IP statique avec Netplan sur Ubuntu ou Debian ?
- Comment configurer une adresse IP fixe sur Debian ?
À titre d'information, voici la configuration du fichier "/etc/netplan/01-network-manager-all.yaml" de Netplan sur Ubuntu :
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
ens33:
dhcp4: yes
Également à titre d'information, si vous passez par le fichier "/etc/network/interfaces", voici la configuration attendue :
auto ens33
iface ens33 inet dhcp
Relancez le service réseau sur votre machine (la commande est différente, selon si vous utilisez Netplan ou pas).
Ensuite, vous devriez obtenir une adresse IP ! Vous pouvez le vérifier via la commande habituelle sur le poste client :
ip a
Ici, la machine a obtenue l'adresse IP "192.168.14.100", car il s'agit de celle concernée par la réservation DHCP créée précédemment.
Sur le serveur, vous pouvez consulter les journaux pour en savoir plus sur les sollicitations reçues de la part des clients :
sudo journalctl -xe | grep -e DHCPACK -e DHCPOFFER
Par exemple, cela retourne :
déc. 03 10:03:15 srv-dhcp-1 dhcpd[3540]: DHCPOFFER on 192.168.14.100 to 00:0c:29:0a:6f:c3 (Ubuntu2404) via ens33
déc. 03 10:03:15 srv-dhcp-1 dhcpd[3540]: DHCPACK on 192.168.14.100 to 00:0c:29:0a:6f:c3 (Ubuntu2404) via ens33
déc. 03 10:09:50 srv-dhcp-1 dhcpd[3540]: DHCPACK on 192.168.14.100 to 00:0c:29:0a:6f:c3 (Ubuntu2404) via ens33
Toujours sur le serveur DHCP, vous pouvez également afficher la base de données de baux DHCP :
cat /var/lib/dhcp/dhcpd.leases
Le bail DHCP de la machine "Ubuntu-2404" est bien visible.
Notre serveur DHCP est opérationnel !
V. Conclusion
En suivant ce tutoriel, vous devriez être en mesure de configurer un serveur DHCP sous Linux, en quelques minutes ! La configuration de l'étendue DHCP peut être enrichie avec d'autres options, car le serveur DHCP prend en charge de nombreuses options (voir cette page). Ici, nous avons vu les options élémentaires.
Pour apprendre comment mettre en redondance deux serveurs DHCP sur Linux, c’est ici : redondance de serveurs DHCP sous Linux
Si vous avez des questions, vous pouvez commenter cet article ou venir poser votre question sur notre Discord.
bonjour monsiour je fais configurer un serveur dhcp ipv6 sous lunix vous éte idée
Salut,
Merci pour ton tuto, cependant il n’est pas fonctionnel pour ma part lorsque l’on suit tes explications.
En ayant tout suivi à la lettre, je me suis retrouvé des le départ avec l’erreur suivante :
Job failed to start
Le problème vient de ton fichier de conf : nano /etc/dhcp/dhcpd.conf
Je te propose ma config :
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
logfacility local7;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.2;
option domain-name « gsb.com »;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.3 192.168.1.20;
}
Ensuite je te conseil de rajouter quelques informations dans la configuration de ta carte réseau : nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
broadcast 192.168.1.255
dns-nameservers 192.168.1.2
dns-search gsb.com
Tout est opérationnel pour moi. La suite de ton tuto fonctionne très bien, bravo pour l’investissement.
Cordialement,
Malcolm
log-facility local7; #faute de frappe dans mon commentaire précédent
Merci.
Merci et bonjour à tous,
Quelqu’un connaitrait une commande pour voir les baux Actif ?
Bonjour,
J’ai le message d’erreur : failed to start LSB : DHCP Server.
https://gyazo.com/eb0bc546bb22adb8a58777e799a9fa4c
Une idée ?
Attention : apt-get install dhcp3-server a été remplacé par isc-dhcp-server.
Bonjour,
Me formant dans l’admin sys, cet article m’a permis de comprendre le concept de la configuration DHCP et surtout de le démystifier … Ca n’a pas l’air si compliqué que ca ! Je pratiquerais ce tuto chez moi avec plusieurs machines et éventuellement je vous ferais un retour (bien que l’article commence a dater un peu).
Merci pour votre aide .
Merci pour ce tuto 😉
Est-ce que tu prévoies d’en faire un avec KEA ? (car il paraît qu’ISC n’est plus maintenu).
Hello Arnaud,
Je ne savais même pas pour ISC ! Il est là depuis tellement longtemps, que je ne me suis pas posé la question ! Je vais me pencher sur un tutoriel de mise en oeuvre du DHCP via KEA 🙂
Bonjour,
Merci pour ce tuto qui est effectivement intéressant !
Je me pose juste deux petites questions :
– avantages/inconvénients serveur linux DHCP vs serveur Windows DHCP ? Prix de la licence évidement, ressources allouées certainement aussi… mais à part ça ?
– dans quel contexte serait-on amené à détacher le DHCP de l’Active Directory ?
Merci aux futures contributions 😉
++