Un serveur DHCP permet d'attribuer une configuration IP (adresse, masque, et éventuellement passerelle, serveurs DNS, etc). à des postes clients au sein d'un réseau. Cet article présente la configuration de base d'un serveur DHCP sous Ubuntu Linux (Kea DHCP et ISC DHCP) et sous Microsoft Windows Server.
Rappel : un serveur DHCP, comme n'importe quel serveur doit avoir une configuration IP en adressage statique.
Serveur DHCP sous Ubuntu Linux (Kea DHCP)
Avant propos
Kea DHCP remplace ISC DHCP, arrivé en fin de vie en octobre 2022.
Configuration de base
Le service DHCP est implémenté sous Ubuntu Linux avec Kea DCHP (solution développée par l'Internet Systems Consortium). La première étape est donc de télécharger le paquet de ce service : apt-get install kea-dhcp4-server
(pour IPv4).
La configuration IP du service Kea DHCP se trouve dans le fichier /etc/kea/kea-dhcp4.conf
(fichier au format JSON). Ce fichier existe par défaut, avec de nombreuses options commentées. Pour simplifier son utilisation, il est préférable de créer une nouveau fichier kea-dhcp4.conf
après avoir sauvegardé le fichier par défaut (qui peut servir d'exemple).
Syntaxe de base pour le fichier /etc/kea/kea-dhcp4.conf |
---|
{ "Dhcp4": { "interfaces-config": { "interfaces": [ "X" ] }, "lease-database": { "type": "memfile", "lfc-interval": 3600 }, "valid-lifetime": X, "renew-timer": X, "rebind-timer": X, "max-valid-lifetime": X, "subnet4": [ { "subnet": "X.X.X.X/X", "pools": [ { "pool": "X.X.X.X – Y.Y.Y.Y" } ], "option-data": [ { "name": "routers", "data": "X.X.X.X" }, { "name": "domain-name-servers", "data": "X.X.X.X" } ] } ] } } |
Configuration des interfaces | |
---|---|
"interfaces-config": { "interfaces": [ "X" ] }, |
|
Instructions | Rôle |
"interfaces": [ "X" ] |
X : nom de l’interface d’écoute des requêtes DHCP. Il est possible d’en mettre plusieurs en les séparant par des virgules. |
Configuration du stockage des baux | |
---|---|
"lease-database": { "type": "memfile", "lfc-interval": 3600 }, |
|
Instructions | Rôle |
"type": "memfile", |
Stockage dans un fichier |
"lfc-interval": 3600 |
Intervalle de nettoyage du fichier des baux (ici : 1h) |
Configuration de la durée des baux | |
---|---|
"valid-lifetime": X, "renew-timer": X, "rebind-timer": X, "max-valid-lifetime": X, |
|
Instructions | Rôle |
"valid-lifetime": X, |
Durée d'un bail |
"renew-timer": X, |
Durée de la 1ère demande de renouvellement d'un bail (50% de la durée) |
"rebind-timer": X, |
Durée de la 2ème demande de renouvellement d'un bail (87,5% de la durée) |
"max-valid-lifetime": X, |
Durée maximale d'un bail |
Configuration d'une étendue | |
---|---|
{ "subnet": "X.X.X.X/X", "pools": [ { "pool": "X.X.X.X – Y.Y.Y.Y" } ], "option-data": [ { "name": "routers", "data": "X.X.X.X" }, { "name": "domain-name-servers", "data": "X.X.X.X" } ] } |
|
Instructions | Rôle |
"subnet": "X.X.X.X/X" |
X.X.X.X/X : réseau de l'étendue |
"pool": "X.X.X.X – Y.Y.Y.Y" |
Plage d’adresses à distribuer (entre X.X.X.X et Y.Y.Y.Y ) |
{ "name": "routers", "data": "X.X.X.X" }, |
X.X.X.X : adresse de passerelle à distribuer aux clients |
{ "name": "domain-name-servers", "data": "X.X.X.X" } |
X.X.X.X : adresse du serveur DNS à distribuer aux clients. Il est possible de donner plusieurs adresses en les indiquant à la suite, séparées par une virgule. |
Remarques :
- Une fois le fichier écrit, vous devez redémarrer le service kea-dhcp4-server afin d'appliquer cette nouvelle configuration : service kea-dhcp4-server restart
- Le bloc
option-data
est facultatif si vous ne souhaitez pas distribuer d’options (adresse de passerelle, adresses de serveur DNS) aux clients. - Pour ajouter une nouvelle étendue, il suffit de la mettre à la suite de la dernière étendue déclarée, en mettant une virgule après l’accolade fermant cette dernière étendue.
- De nombreuses autres options sont disponibles pour les étendues (voir documentation officielle).
- Les options
renew-timer
etrebind-timer
sont obligatoires pour satisfaire la RFC2131, qui est doit être respectée pour certains relais DHCP (notamment DHCRelay, utilisé dans OPNsense).
Réservation d'adresses
Il est possible de réserver une adresse IP à une machine en particulier en ajoutant une option dans la définition de l'étendue :
Instructions | Rôle |
---|---|
"reservations": [ { "hw-address": "XX:XX:XX:XX:XX:XX", "ip-address": "X.X.X.X" } ] |
|
Remarques :
- Vous pouvez faire autant de réservations que vous le souhaitez dans l’étendue, en mettant le nombre adéquat de bloc (ce qui se trouvent entre les accolades, accolades comprises) les uns à la suite des autres, séparés par des virgules.
- Il est possible d’ajouter d’autres valeurs dans les réservations, comme le nom d’hôte (instruction
hostname
).
Liste des baux
Le stockage de la liste des baux est configurable dans la section lease-database
du fichier de configuration. Dans le cas d'un stockage dans un fichier (type memfile
) et sans précision dans le fichier de configuration (instruction name
), les baux sont stockés dans le fichier /var/lib/kea/kea-leases4.csv
.
Serveur DHCP sous Ubuntu Linux (ISC DHCP)
Avant propos
Le service ISC DHCP est en fin de vie depuis octobre 2022. Il est préférable d'utiliser maintenant KEA DHCP, son remplaçant. Néanmoins, ISC DHCP est toujours présent dans les dépôts de nombreuses distributions Linux.
Configuration de base
Le service DHCP est implémenté sous Ubuntu Linux avec ISC DCHP (solution développée par l'Internet Systems Consortium). La première étape est donc de télécharger le paquet de ce service : apt-get install isc-dhcp-server
.
Si votre serveur possède plusieurs cartes réseau, vous pouvez préciser sur laquelle l'écoute des trames DHCP doit être faite en indiquant son nom dans la directive INTERFACES
du fichier /etc/default/isc-dhcp-server
.
La configuration IP du service ISC DHCP se trouve dans le fichier /etc/dhcp/dhcpd.conf
. Ce fichier existe par défaut, avec de nombreuses options commentées. Pour simplifier son utilisation, il est préférable de créer une nouveau fichier dhcpd.conf
après avoir sauvegardé le fichier par défaut (qui peut servir d'exemple).
Syntaxe de base du fichier /etc/dhcp/dhcp.conf |
---|
|
Option | Rôle |
---|---|
default-lease-time X; |
Durée du bail en secondes |
max-lease-time X; |
Durée maximale du bail en seconde |
|
Définition de l'étendue des adresses distribuées :
|
Options à placer dans subnet | Role |
option routers X.X.X.X; |
Adresse de la passerelle (si nécessaire) |
option domain-name-servers X.X.X.X; |
Adresse du (des) serveur(s) DNS (si nécessaire) |
option broadcast-address X.X.X.X; |
Adresse de diffusion (facultatif) |
option subnet-mask X.X.X.X; |
Masque de sous-réseau |
Toutes les options à placer dans subnet
sont facultatives. Il est également possible de les définir en dehors d'une étendue si vous avez plusieurs étendues et que vous souhaitez que toutes les étendues aient les même valeurs pour ces options.
Une fois le fichier écrit, vous devez redémarrer le service isc-dhcp-server
afin d'appliquer cette nouvelle configuration : service isc-dhcp-server restart
Réservation d'adresses
Il est possible de réserver une adresse IP à une machine en particulier en ajoutant une option dans la définition de l'étendue :
Instructions à place dans la définition de l'étendue | Explications |
---|---|
|
|
Remarque : les adresses reservées doivent être évidemment hors de la plage prévue pour l'attribution automatique des adresses IP.
Liste des baux
La liste des baux en cours sont disponibles sur le serveur dans le fichier /var/lib/dhcp/dhcpd.leases
. Ce fichier contient, pour chaque bail, l'adresse IP attribuée, l'adresse MAC de la machine, l'heure du début et l'heure de fin du bail, etc.
Serveur DHCP sous Microsoft Windows Server 2016 et 2019
La configuration du serveur DHCP présentée ici est celle d'un Windows Server avec interface graphique (expérience utilisateur).
Configuration de base
L'installation du service DHCP sous Windows Server se fait via le gestionnaire de serveur :
- Accéder à l'assistant d'ajout de rôles (Gérer ->Ajouter des rôles et des fonctionnalités).
- Après l'écran d'accueil, choisir une installation basée sur un rôle et une fonctionnalité.
- Sélectionner ensuite le serveur sur lequel vous souhaitez installer le service DHCP (si vous ne gérez pas de serveur à distance, vous n'avez normalement que votre serveur local dans la liste).
- Dans la sélection des rôles de serveurs, choisir le serveur DHCP et laisser les fonctionnalités par défaut.
- Après les différentes pages d'informations, valider l'installation puis fermer l'assistant.
Le service DHCP est maintenant installé sur votre serveur Windows. Dans les outils d'administration, le module DHCP est maintenant disponible et permet de configurer le service.
Pour créer une étendue :
- Dérouler l'arborescence du service, faire un clic droit sur l'item IPv4 dépendant du serveur et choisir Nouvelle étendue.
- Après l'écran de présentation, choisir un nom pour l'étendue et éventuellement une description.
- Définir à l'écran suivant la plage d'adresse IP à attribuer et le masque de sous réseau (au format CIDR ou décimal pointé).
- Le service propose ensuite de choisir des adresses à exclure de la plage d'adresses à attribuer.
- Définir la durée du bail.
- Vous avez ensuite la possibilité de choisir de configurer (ou non) les options d'étendue (routeur, domaine et serveurs DNS, serveurs WINS).
- Si vous avez choisi de configurer les options d'étendue, définir (au choix) l'adresse du routeur (passerelle des client), le domaine et serveurs DNS puis les serveurs WINS. Vous pouvez ensuite ou activer l'étendue.
- Si vous n'avez pas choisi de configurer les options d'étendue, valider la fin de la configuration.
Si vous n'avez pas choisi de configurer les options d'étendue, le service DHCP ne vous propose pas d'activer l'étendue. Pour activer l'étendue, faire un clic droit dessus et sélectionner activer.
Réservation d'adresses
Afin de créer une réservation d'adresse, il suffit de faire un clic droit sur Réservations dans l'arborescence de l'étendue, choisir Nouvelle réservation et entrer les informations concernant cette réservation (nom, adresse IP et adresse MAC de la machine).
Liste des baux
La liste des baux en cours est disponible dans l'item Baux d'adresses se trouvant dans l'arborescence de l'étendue.