Comment exécuter un serveur DHCP de réseau local avec Dnsmasq
Dnsmasq est un serveur réseau léger fournissant des fonctions DNS, DHCP, TFTP et PXE. Dans ce guide, nous examinerons la configuration d’une nouvelle installation de Dnsmasq en tant que serveur DHCP autonome.
DHCP (Dynamic Host Configuration Protocol) est le processus par lequel les périphériques réseau acquièrent des adresses IP. Le serveur DHCP de votre réseau est chargé d’attribuer à chaque nouvel appareil une adresse unique. Les adresses peuvent être statiques ou dynamiques, ce dernier signifiant qu’elles sont émises sur la base d’un bail de courte durée, de sorte que l’adresse IP de chaque appareil peut changer au fil du temps.
Le routeur agit en tant que serveur DHCP dans la plupart des petits réseaux. La configuration de Dnsmasq sur une machine Linux vous donne le contrôle du processus, ainsi qu’une meilleure visibilité sur les erreurs qui se produisent.
Sommaire
Préparation de Dnsmasq
Dnsmasq est inclus avec la plupart des distributions Linux. Vous pouvez généralement ajouter le dnsmasq
paquet s’il n’est pas présent sur le vôtre. Le fichier de configuration standard se trouve dans /etc/dnsmasq.conf
; vous pouvez également ajouter des fichiers au /etc/dnsmasq.d
répertoire si vous souhaitez conserver vos paramètres séparés par défaut.
Dnsmasq écoute généralement sur toutes vos interfaces réseau. Si vous souhaitez utiliser une interface spécifique, définissez-la maintenant en ajoutant ou en décommentant la ligne suivante dans votre fichier de configuration :
# Only operate on eth0
interface=eth0
La fonctionnalité de serveur DNS est activée par défaut. Vous pouvez le désactiver en changeant le port en 0
:
port=0
Dnsmasq est maintenant prêt à fonctionner en mode DCHP uniquement.
Configuration de votre serveur DHCP
Le serveur DHCP est activé en spécifiant une plage d’adresses IP DHCP :
dhcp-range=192.168.0.101,192.168.0.150,255.255.255.0,6h
Cet exemple indique à Dnsmasq d’offrir des adresses IP comprises entre 192.168.0.101 et 192.168.0.150 dans le sous-réseau 255.255.255.0. Les IP émises auront une durée de vie de bail de six heures, après quoi les clients devront demander un renouvellement de bail.
Vous devez modifier les paramètres ci-dessus en fonction des exigences de votre réseau. Il est conseillé d’ajuster la plage DHCP afin qu’elle exclue toutes les adresses IP que vous envisagez d’attribuer de manière statique aux périphériques. Cela garantira qu’un appareil recevant des baux dynamiques ne pourra jamais se voir attribuer une adresse «réservée».
Utilisé ainsi, votre serveur Dnsmasq deviendra la passerelle par défaut sur vos appareils lorsqu’ils recevront une adresse IP. Si vous ne configurez pas non plus le DNS, vous devez modifier cela afin que Dnsmasq cesse de s’offrir en tant que passerelle.
dhcp-option=3,192.168.0.50
Remplacez l’adresse IP par celle de votre routeur. Vos appareils pourront désormais utiliser le routeur normalement après avoir acquis une adresse IP auprès de Dnsmasq.
Configuration des adresses IP statiques
Vous pouvez configurer des adresses IP statiques dans le fichier de configuration Dnsmasq. Cela vous permet de centraliser vos réservations IP, au lieu de les disperser dans des fichiers réseau sur des appareils individuels.
Pour attribuer une IP statique, utilisez le dhcp-host
instruction. Cela prend une adresse MAC, un nom d’hôte et une IP à attribuer :
dhcp-host=ab:cd:ef:12:34:56,example-host,192.168.0.10,infinite
Ici l’appareil avec MAC ab:cd:ef:12:34:56
reçoit le nom d’hôte example-host
et une IP fixe de 192.168.0.10
. La durée du bail est fixée à infinite
pour s’assurer qu’aucun renouvellement n’est nécessaire et que l’IP ne changera jamais.
Pour configurer des IP statiques supplémentaires, répétez simplement la dhcp-host
instructions autant de fois que nécessaire. Au minimum, envisagez d’ajouter un hôte DHCP explicite pour votre routeur afin de pouvoir y accéder de manière fiable avec une adresse IP fixe. Cela devrait correspondre à la valeur que vous avez attribuée dans le dhcp-option
ligne ci-dessus.
Vous pouvez charger des informations sur l’hôte à partir d’un fichier ou d’un répertoire séparé avec le --dhcp-hostsfile
et --dhcp-hostsdir
option. Dans le cas d’un répertoire, Dnsmasq chargera automatiquement les nouvelles modifications sans avoir besoin d’être redémarré.
Utilisation de votre serveur DHCP
Une fois que vous avez terminé de configurer Dnsmasq, testez sa configuration pour vous assurer que vos modifications sont valides :
dnsmasq --test
Redémarrez ensuite le service Dnsmasq pour appliquer vos modifications :
sudo systemctl restart dnsmasq
Désactivez le serveur DHCP intégré de votre routeur. Ensuite, configurez votre routeur ou vos périphériques clients pour utiliser l’adresse IP de votre serveur Dnsmasq pour DHCP. Les étapes varient selon le fabricant du routeur, alors reportez-vous à la documentation de votre appareil si vous vous perdez.
Maintenant que votre instance est opérationnelle en tant que serveur DHCP de votre réseau, vous devriez pouvoir forcer un renouvellement d’adresse IP sur vos appareils pour recevoir un bail de Dnsmasq. Soit redémarrer le service réseau, systemctl restart networking
, Ou utiliser ifdown
et ifup
pour abandonner et rétablir votre connexion.
Dnsmasq enregistre les adresses IP émises dans son fichier de baux. Vous pouvez inspecter ce fichier pour voir les appareils actifs sur votre réseau et vérifier que les adresses IP sont louées correctement :
cat /var/lib/misc/dnsmasq.leases
Si vous rencontrez des erreurs, consultez les journaux du service Dnsmasq pour voir ce qui ne va pas :
sudo journalctl -u dnsmasq.service
Mode autoritaire
Un défi que vous pourriez rencontrer lors de l’introduction de votre serveur sur un réseau existant est le délai d’expiration des périphériques lors du renouvellement de leurs adresses IP. Chaque client enverra son IP précédente au serveur DHCP, permettant à la même IP d’être émise si elle est toujours disponible. Dans le cas d’une nouvelle instance Dnsmasq, elle n’aura aucun enregistrement de la paire client/IP existante, la demande sera donc ignorée.
Le client finira par expirer et soumettre une nouvelle demande, cette fois en demandant toute adresse IP disponible. La deuxième requête réussira, mais la fenêtre de délai d’attente peut être assez longue, ce qui peut entraîner un retard notable lors du démarrage ou de l’initialisation de la pile réseau.
L’ajout de cette ligne à votre fichier de configuration résout ce problème si Dnsmasq sera le seul serveur DHCP de votre réseau :
dhcp-authoritative
Le mode faisant autorité indique à Dnsmasq d’accepter les demandes des clients même s’ils prétendent avoir précédemment détenu une adresse IP dont il n’a aucune trace. Le client sera toujours admis sur le réseau et se verra accorder une adresse IP, éliminant ainsi le besoin de faire deux demandes séparées par un long délai d’attente.
Ajuster d’autres paramètres
Quelques autres paramètres méritent d’être mentionnés :
dhcp-sequential-ip
Dnsmasq hache généralement l’adresse MAC de chaque client pour déterminer l’adresse IP qu’il reçoit. Cela signifie que les clients reçoivent généralement la même adresse IP à chaque fois qu’ils se connectent, même si aucun hôte statique n’a été configuré. Réglage de la dhcp-sequential-id
L’option signifie que Dnsmasq émettra à la place des adresses IP dans un ordre numérique séquentiel, en commençant par le début de la plage d’adresses IP spécifiée.
dhcp-lease-max=100
Ce paramètre contrôle le nombre de baux simultanés émis par Dnsmasq. La valeur par défaut est 1000. Si vous êtes sur un petit réseau, pensez à diminuer cette valeur pour protéger Dnsmasq contre les attaques par déni de service. Les hôtes compromis pourraient envoyer des requêtes DHCP malveillantes pour créer des milliers de baux redondants.
dhcp-alternate-port=8068,8068
Modifiez les numéros de port utilisés pour les serveurs et les clients DHCP. Les ports par défaut sont 67
et 68
; ceux-ci ne devraient normalement pas être modifiés, sauf si votre infrastructure réseau l’exige.
dhcp-leasefile=/dhcp-leases
Modifiez le chemin d’accès au fichier utilisé pour stocker les informations de bail DHCP. Il est par défaut /var/lib/misc/dnsmasq.leases
.
Résumé
Dnsmasq est facile à configurer en tant que simple serveur DHCP pour votre réseau local. Il peut fonctionner parallèlement ou indépendamment de la fonctionnalité DNS du logiciel.
Bien qu’il s’agisse d’un serveur intentionnellement léger, Dnsmasq prend en charge de nombreuses options de configuration différentes pour faciliter des installations plus complexes. Vous pouvez les utiliser pour configurer des relais et des proxy DHCP, ajuster la conformité de Dnsmasq à la spécification DHCP et ajouter des scripts personnalisés qui seront exécutés lorsque les baux seront créés et détruits. Ces fonctionnalités vous permettent de faire évoluer rapidement une instance expérimentale de Dnsmasq en une instance renforcée plus adaptée à une utilisation de qualité de production dans des réseaux plus importants.