Après la version Windows, voici la version serveur DHCP sous Linux Debian !
Le DHCP souvenez-vous, c’est ce petit service magique qui fait gagner du temps aux admins et qu’on adore tous, surtout quand il y a beaucoup de postes dans l’infra !
Installer et configurer un serveur DHCP sous Debian
Pour rappel, le DHCP (Dynamic Host Configuration Protocol) est un protocole réseau qui permet d’assurer la configuration automatique des paramètres IP des machines qui en font la demande. Un serveur DHCP dans un réseau permet de ne pas avoir à configurer chaque poste à la main… (très pratique !)
Info + : Pour en savoir plus sur le protocole DHCP, consultez cet article : Introduction au DHCP Et pour la version Windows, c’est par ici : DHCP sous Windows |
Voici la topologie de mon labo du jour :
Comme d’habitude, pas besoin de beaucoup de machines pour réaliser ce tuto :
-
- Une machine sous Debian 10
- Un client Ubuntu
- Un client Windows
- Un routeur NAT pour sortir du réseau local
- Un switch pour relier tout ce petit monde évidemment
Mon réseau est le 192.168.3.0/24.
Le futur serveur DHCP doit disposer d’un adressage IP fixe et pouvoir accéder à Internet. Le serveur DNS du réseau sera celui de Google en 8.8.8.8.
Ensuite, on défini « sur papier » la configuration que nous voulons effectuer sur notre serveur DHCP. Voici ce que j’ai choisi de faire :
Si tout est prêt, vous pouvez poursuivre !
Pour mettre en place le service DHCP dans notre réseau local, nous allons utiliser le paquet isc-dhcp-server. Commençons par l’installer :
apt install isc-dhcp-server -y |
Ensuite, nous devons préciser sur quel interface du serveur, le « démon » (le « service ») va écouter et donc attendre les requêtes des clients. Modifiez le fichier nécessaire avec la commande suivante :
nano /etc/default/isc-dhcp-server |
Nous n’utiliserons pas d’IPv6, la ligne peut donc être commentée. En revanche, pour l’interface en IPv4, il vous faudra ajouter le nom de l’interface réseau de votre serveur entre les guillemets.
Ensuite, il faut éditer le fichier dhcpd.conf pour configurer le service DHCP :
nano /etc/dhcp/dhcpd.conf |
Soyez vigilants à la syntaxe employée dans ce fichier, une erreur toute bête peut empêcher le service de démarrer et faire perdre du temps. Chaque ligne de paramètre doit se terminer par le symbole « ;« . Veillez également à bien ouvrir/fermer les blocs de paramètres pour les étendues avec les symboles « { }« .
Voici comment je configure la 1ère partie de ce fichier :
Regardons rapidement les options présentes.
Le premier paramètre est le « domain-name ». Comme son nom l’indique, on déclare ici le nom de notre domaine. Nous n’en avons pas, ce paramètre est donc à commenter.
Ensuite nous avons l’option « domain-name-servers ». Si les serveurs DNS sont les mêmes pour toutes les étendues, on peut déclarer cette option à partir de ce point. Pour le DNS, j’ai choisi tout bêtement celui de Google, le 8.8.8.8. Peut importe les étendues, ce sera le même DNS partout, sinon, l’option peut être précisée dans chaque déclaration d’étendue. C’est donc ici une option dite « de serveur » et non pas « d’étendue« .
Les paramètres « default-lease-time » et « max-lease-time » sont les durées des baux pour les adresses attribuées avant une libération ou un renouvellement. Par défaut ces durées sont comprise entre 3600 secondes (1 heure) et 7200 secondes (2 heures).
L’option « ddns-update-style » sert à définir le type de mise à jour du DNS. Nous n’en n’avons pas besoin dans notre contexte. Par défaut, ce paramètre est défini sur « none« .
Le paramètre « authoritative » peut être décommenté si ce serveur DHCP est le serveur officiel du réseau local, ce qui sera le cas ici.
L’option « log-facility » est le niveau de log à conserver. Par défaut, vous trouverez les logs du DHCP dans /var/log/syslog. Vous pouvez décommentez cette ligne pour déplacer les logs dans un autre endroit. Attention, des paramétrages supplémentaires non couverts par cet article seront nécessaires.
Voilà pour les configurations présentes dans ce fichier.
Maintenant, on va déclarer l’étendue du réseau que devra desservir le DHCP. Ajoutez ces lignes à la fin du fichier :
# Etendue LAN subnet 192.168.3.0 netmask 255.255.255.0 { option routers 192.168.3.1; range 192.168.3.100 192.168.3.200; } |
Info + : Sur isc-dhcp-server, il n’existe pas de paramètre permettant de créer des plages d’exclusions. Pour palier à ça, il vous suffit de mettre plusieurs lignes de « range » les unes à la suite des autres, toujours sans oublier le « ; ». |
On redémarre le service pour prendre en compte les modifications :
service isc-dhcp-server restart |
Vérifions sur le PC Ubuntu s’il a récupéré une configuration IP automatiquement :
C’est bien le cas ! Le PC Linux a l’adresse IP 192.168.3.101 et communique bien avec l’extérieur.
Regardons avec un logiciel comme Wireshark ce qu’il se passe entre les clients DHCP et le serveur DCHP :
Pour capturer ces trames, j’ai démarré le PC sous Windows. On voit bien les différentes requêtes effectuées entre le client DHCP et le serveur DHCP.
Si je vérifie la configuration de mon PC Windows :
Il a bien obtenu une adresse IP dans la plage déclarée dans le service DHCP !
Pour voir les baux en cours d’utilisation sur le serveur DHCP, vous pouvez lire le contenu du fichier /var/lib/dhcp/dhcpd.leases avec « cat ».
Les baux en cours correspondent bien aux adresses que l’on a vu sur les deux PCs clients.
Nous avons également à mettre en place une réservation pour un PC bien spécifique. Pour cela, il faut commencer par récupérer son adresse physique (MAC). Depuis le PC Linux pour lequel nous voulons réserver une adresse IP, lancer la commande :
ip a s ens33 | grep " ether" |
Notez son adresse MAC (partie située entre « ether » et « brd ») et retournez sur le serveur DHCP.
Modifiez de nouveau le fichier dhcpd.conf et dans l’étendue précédemment créée, juste avant de refermer le bloc de paramètres (sur la ligne précédent le symbole « } »), ajoutez les lignes suivantes en adaptant l’adresse MAC par celle que vous avez notez :
# Reservation host pc-boss { hardware ethernet 00:0C:29:EF:00:B1; fixed-address 192.168.3.150; } |
Ce qui vous donnera finalement une configuration de ce genre :
Vérifions sur le client concerné qu’il reçoit bien l’adresse IP qui lui est réservée :
C’est bien le cas, nous voyons l’adresse MAC que nous avons déclaré dans le service DHCP et l’adresse IP 192.168.3.150 qui lui est attribuée ; la réservation est opérationnelle.
Voilà pour cet article sur la configuration d’un serveur DHCP sous Linux !
Rien de bien compliqué, une fois encore, il suffit d’être vigilant sur la syntaxe que l’on utilise !
See U ! .