titre informatique

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 et rebind-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"
}
]
  • hw-address : adresse MAC de la machine
  • ip-address : adresse IP à attribuée à la machine

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

default-lease-time X;
max-lease-time X;
subnet W.W.W.W netmask X.X.X.X {
  range Y.Y.Y.Y Z.Z.Z.Z;
  option subnet-mask X.X.X.X;
  option routers X.X.X.X;
  option domain-name-servers X.X.X.X;
  option broadcast-address X.X.X.X;

}

Option Rôle
default-lease-time X; Durée du bail en secondes
max-lease-time X; Durée maximale du bail en seconde

subnet W.W.W.W netmask X.X.X.X {
  range Y.Y.Y.Y Z.Z.Z.Z;
}

Définition de l'étendue des adresses distribuées :

  • subnet : réseau IP (dans lequel se trouve les adresses distribuées)
  • netmask : masque de sous-réseau
  • range : plage d'adresse (de Y.Y.Y.Y à Z.Z.Z.Z)
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

host nommachine {
  hardware ethernet Y:Y:Y:Y:Y:Y;
  fixed-address Z.Z.Z.Z;
}

  • host nommachine : nom donné à la réservation
  • harware ethernet Y:Y:Y:Y:Y:Y : adresse MAC de la machine
  • fixed-address Z.Z.Z.Z : adresse IP attribuée à la machine

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 :

  1. Accéder à l'assistant d'ajout de rôles (Gérer ->Ajouter des rôles et des fonctionnalités).
  2. Après l'écran d'accueil, choisir une installation basée sur un rôle et une fonctionnalité.
  3. 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).
  4. Dans la sélection des rôles de serveurs, choisir le serveur DHCP et laisser les fonctionnalités par défaut.
  5. 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 :

  1. Dérouler l'arborescence du service, faire un clic droit sur l'item IPv4 dépendant du serveur et choisir Nouvelle étendue.
  2. Après l'écran de présentation, choisir un nom pour l'étendue et éventuellement une description.
  3. 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é).
  4. Le service propose ensuite de choisir des adresses à exclure de la plage d'adresses à attribuer.
  5. Définir la durée du bail.
  6. Vous avez ensuite la possibilité de choisir de configurer (ou non) les options d'étendue (routeur, domaine et serveurs DNS, serveurs WINS).
  7. 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.
  8. 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.