DNS Configuration · 14 min read · Sep 08, 2025

Comment configurer un DNS local avec Dnsmasq sur Debian 12

Dnsmasq est un petit service réseau léger pour votre environnement local (LAN). Il fournit des services réseau tels que DNS, DHCP et TFTP. Dnsmasq peut être utilisé comme un transmetteur DNS, un serveur DNS récursif et un système de mise en cache DNS. Il charge également le contenu DNS à partir du fichier /etc/hosts, ce qui vous permet de configurer des noms de domaine pour des noms d’hôtes locaux.

Dnsmasq est conçu pour être léger avec une petite empreinte mémoire, adapté aux appareils à faibles ressources tels que les routeurs et les pare-feu. Dnsmasq peut être exécuté sur Linux, BSD, Android et macOS.

Ce tutoriel installera et configurera un serveur DNS local avec Dnsmasq sur un serveur Debian 12. Nous allons configurer un serveur DNS local qui peut être utilisé pour votre réseau local, ajouter des noms de domaine locaux, activer la mise en cache DNS et activer le serveur DHCP via Dnsmasq. Vous apprendrez également à configurer et à ajouter une machine cliente pour utiliser le serveur DNS local. Une fois ce tutoriel terminé, vous pourrez accéder à toutes vos applications via le nom de domaine local, et vos requêtes DNS seront plus rapides car vous avez activé la mise en cache DNS.

Prérequis

Avant de commencer, vous devez avoir les exigences suivantes pour compléter ce tutoriel :

  • Un serveur Debian 12 - Cet exemple utilise un serveur Debian avec le nom d’hôte ‘ dnsmasq-server ‘ et l’adresse IP 192.168.5.20.
  • Un utilisateur non-root avec des privilèges d’administrateur sudo/root.

Pour la machine cliente, vous pouvez utiliser n’importe quelle distribution Linux car la configuration DNS est similaire pour chaque distribution.

Préparation du système

Dans cette étape, vous allez préparer votre serveur Debian qui sera utilisé comme serveur DNS local. Vous allez mettre à jour l’index des paquets, arrêter et désactiver le service ‘ systemd-resolved ‘, puis vous allez créer une configuration de résolveur DNS statique via le fichier ‘ /etc/resolv.conf ‘.

Sur le système Debian, le résolveur DNS est géré par le service ‘systemd-resolved’, qui fournit la résolution de noms réseau via l’interface D-BUS. Pour configurer le logiciel serveur DNS tel que Dnsmasq, vous devez désactiver le service ‘ systemd-resolved ‘.

Avant de commencer, exécutez la commande apt ci-dessous pour mettre à jour et rafraîchir votre index de paquets Debian.

sudo apt update

Ensuite, exécutez la commande ci-dessous pour arrêter et désactiver le service ‘ systemd-resolved ‘. Sur le système Debian, la configuration DNS est gérée par le NetworkManager et le service systemd-resolved.

sudo systemctl disable --now systemd-resolved  
sudo systemctl stop systemd-resolved

Supprimez le fichier de lien de la configuration du résolveur DNS ‘/etc/resolv.conf’ via la commande suivante.

sudo unlink /etc/resolv.conf

Après cela, créez un nouveau fichier de configuration du résolveur DNS ‘ /etc/resolv.conf ‘ en utilisant la commande de l’éditeur nano ci-dessous.

sudo nano /etc/resolv.conf

Ajoutez les lignes suivantes au fichier. Cela ajoutera les DNS publics de Cloudflare et de Google comme résolveurs pour votre serveur Debian.

nameserver 1.1.1.1  
nameserver 8.8.8.8

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé. Passez maintenant aux étapes suivantes pour l’installation et la configuration de Dnsmasq.

préparer le système

Installation et configuration de Dnsmasq

Dans cette étape, vous allez installer et configurer le serveur DNS local en utilisant Dnsmasq. Vous allez configurer Dnsmasq pour qu’il fonctionne sur le port DNS par défaut 53 et l’adresse IP interne ‘ 192.168.5.20 ‘. Vous allez également définir le nom de domaine pour le service Dnsmasq, activer la mise en cache DNS, et enfin activer le serveur DHCP via Dnsmasq.

Le paquet ‘ dnsmasq ‘ par défaut est disponible dans le dépôt Debian. Exécutez la commande apt ci-dessous pour installer le paquet Dnsmasq.

sudo apt install dnsmasq

Lorsque vous y êtes invité, saisissez y pour confirmer et appuyez sur ENTRÉE pour continuer.

installer dnsmasq

Après l’installation de Dnsmasq, exécutez l’utilitaire de commande systemctl ci-dessous pour vérifier le service ‘dnsmasq’ et vous assurer que le service est activé et en cours d’exécution.

sudo systemctl is-enabled dnsmasq  
sudo systemctl status dnsmasq

Vous recevrez une sortie similaire à ceci - Le service dnsmasq est activé et sera exécuté automatiquement au démarrage. Et l’état actuel du service dnsmasq est en cours d’exécution.

vérifier dnsmasq

Avec Dnsmasq en cours d’exécution sur votre système Debian, vous allez maintenant commencer la configuration de Dnsmasq via le fichier ‘/etc/dnsmasq.conf ‘.

Pour commencer, exécutez la commande ci-dessous pour sauvegarder le fichier de configuration Dnsmasq par défaut.

sudo cp /etc/dnsmasq.conf{,.orig}

Maintenant, ouvrez le fichier de configuration Dnsmasq ‘ /etc/dnsmasq.conf ‘ en utilisant la commande de l’éditeur nano ci-dessous.

sudo nano /etc/dnsmasq.conf

Ajoutez les lignes suivantes au fichier.

# dnsmasq fonctionne sur le port UDP 53  
# avec l'adresse IP localhost et 192.168.5.20  
# et l'interface réseau eth1  
port=53  
listen-address=127.0.0.1,192.168.5.20  
interface=eth1  
  
# désactiver le transfert d'adresses non routées  
# désactiver le transfert de noms sans le domaine principal.com  
# ajouter automatiquement la partie domaine aux noms simples  
# désactiver dnsmasq pour lire le fichier /etc/resolv.conf  
domain-needed  
bogus-priv  
expand-hosts  
no-resolv  
  
# serveur DNS en amont pour les noms de domaine non locaux  
# utilisant Cloudflare et google public DNS  
server=1.1.1.1  
server=8.8.8.8  
  
# définir le domaine pour dnsmasq  
domain=howtoforge.local  
address=/howtoforge.local/192.168.5.20  
  
# activer la mise en cache DNS et ajuster la taille du cache  
cache-size=1000  
  
# activer DHCP via dnsmasq  
# définir le fichier de base de données de baux  
# faire du serveur dhcp un serveur autoritaire  
dhcp-range=192.168.5.80,192.168.5.150,12h  
dhcp-leasefile=/var/lib/misc/dnsmasq.leases  
dhcp-authoritative

Enregistrez le fichier et fermez l’éditeur lorsque vous avez terminé.

Options détaillées que vous allez utiliser pour Dnsmasq :

  • port : quel port vous allez utiliser pour exécuter Dnsmasq.
  • listen-address : quelle adresse IP vous allez utiliser pour exécuter Dnsmasq. Vous pouvez utiliser plusieurs adresses IP.
  • interface : quelle interface Dnsmasq va se lier et fonctionner.
  • domain-needed : désactiver le transfert de noms sans l’adresse de domaine principal. Vous pouvez accéder comme ‘ mysql1 ‘ hôte à moins que vous ne donniez le nom complet avec le domaine local tel que ‘ mysql1.howtoforge.local ‘.
  • bogus-priv : désactiver le transfert pour les adresses non routées.
  • expand-hosts : ajouter automatiquement la partie domaine local aux noms simples.
  • no-resolv : ignorer le fichier ‘/etc/resolv.conf’ sur le serveur.
  • server : définir le serveur DNS en amont que vous allez utiliser pour les adresses ou domaines non locaux. Cet exemple utilise le serveur DNS public de Cloudflare et Google.
  • domain : définir le nom de domaine pour le serveur Dnsmasq. Dans cet exemple, le serveur Dnsmasq obtiendra le domaine local howtoforge.local.
  • address : définir quelle adresse IP pour le nom de domaine sur Dnsmasq. Dans cet exemple, le domaine howtoforge.local sera résolu à l’adresse IP 192.168.5.20.
  • cache-size : activer la mise en cache DNS sur Dnsmasq. Assurez-vous d’ajuster la taille, ce qui augmente les performances et la vitesse.
  • dhcp-range : activer le serveur DHCP via Dnsmasq. Ajustez la plage d’adresses IP pour votre réseau et le temps de bail.
  • dhcp-leasefile : définir le fichier qui sera utilisé pour stocker le bail DHCP.
  • dhcp-authoritative : faire du serveur DHCP un serveur autoritaire.

configuration dnsmasq

Ensuite, ouvrez le fichier de configuration ‘/etc/hosts’ en utilisant la commande de l’éditeur nano ci-dessous. Vous pouvez définir le sous-domaine pour vos applications internes et sera automatiquement configuré avec le nom de domaine Dnsmasq ‘ howtoforge.local ‘.

sudo nano /etc/hosts

Ajoutez les lignes suivantes au fichier. Dans cet exemple, vous allez définir les sous-domaines app1, db1 et files. Le domaine racine pour ces sous-domaines est le serveur Dnsmasq lui-même ‘ howtoforge.local ‘.

Avec les lignes suivantes, le ‘ app1.howtoforge.local ‘ sera résolu à l’adresse IP ‘ 192.168.5.10 ‘, le sous-domaine ‘ db1.howtoforge.local ‘ sera pointé vers l’adresse IP du serveur ‘ 192.168.5.25 ‘, et le sous-domaine ‘files.howtoforge.local ‘ sera pointé vers l’adresse IP ‘192.168.5.50 ‘.

192.168.5.10 app1  
192.168.5.25 db1  
192.168.5.50 files 

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Ensuite, ouvrez le fichier ‘ /etc/resolv.conf ‘ avec la commande de l’éditeur nano suivante et ajoutez l’adresse IP du serveur Dnsmasq comme ‘ nameserver ‘.

sudo nano /etc/resolv.conf

Ajoutez les lignes suivantes en haut du fichier. Assurez-vous de changer l’adresse IP avec l’adresse IP de votre serveur Dnsmasq.

nameserver 127.0.0.1  
nameserver 192.168.5.20

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Maintenant, exécutez la commande ‘dnsmasq’ ci-dessous pour vérifier la configuration de Dnsmasq et vous assurer que vous avez le bon format de configuration. Vous devriez recevoir une sortie telle que ‘ dnsmasq - syntax check OK ‘.

sudo dnsmasq --test

Enfin, exécutez l’utilitaire de commande systemctl ci-dessous pour redémarrer le service ‘ dnsmasq’ et appliquer les modifications.

sudo systemctl restart dnsmasq

vérifier dnsmasq et le configurer

À ce stade, vous avez maintenant terminé la configuration du serveur DNS local via Dnsmasq sur le système Debian. Vous avez également configuré le nom de domaine local et les sous-domaines, activé la mise en cache DNS et activé le serveur DHCP via Dnsmasq.

Dans les étapes suivantes, vous allez vérifier votre installation et configuration de Dnsmasq.

Vérification de l’installation de Dnsmasq

Dans cette étape, vous allez vérifier l’installation de Dnsmasq en vérifiant le service Dnsmasq et le port d’écoute sur votre système. Ensuite, vous allez vérifier le nom de domaine local et les sous-domaines que vous avez configurés via le fichier ‘/etc/hosts’.

Exécutez la commande ci-dessous pour vous assurer que le service Dnsmasq fonctionne sur le port 53. Ensuite, vérifiez l’état du service Dnsmasq via l’utilitaire de commande systemctl.

ss -tulpn | grep 53  
sudo systemctl status dnsmasq

Vous recevrez une sortie similaire à ceci - Le service Dnsmasq fonctionne sur le port par défaut 53 et il est activé et sera exécuté automatiquement au démarrage.

vérifier le service dnsmasq

Ensuite, vous allez vérifier le nom de domaine et les sous-domaines que vous avez configurés sur Dnsmasq via le fichier ‘ /etc/hosts ‘. Mais avant cela, exécutez la commande apt ci-dessous pour installer le paquet ‘ dnsutils ‘ sur votre système. Le paquet ‘dnsutils’ fournit des outils en ligne de commande pour tester la configuration du serveur DNS.

sudo apt install dnsutils

Saisissez y lorsque vous y êtes invité et appuyez sur ENTRÉE pour procéder à l’installation.

Après l’installation de ‘ dnsutils ‘, exécutez la commande dig suivante pour vérifier le nom de domaine et les sous-domaines que vous avez configurés.

Vérifiez le domaine principal Dnsmasq ‘ howtoforge.local ‘, qui est pointé vers l’adresse IP du serveur Dnsmasq ‘192.168.5.20’.

dig howtoforge.local

test avec la commande dig

Vérifiez les sous-domaines que vous avez définis via le fichier ‘/etc/hosts’ avec la commande dig ci-dessous.

dig app1.howtoforge.local +short  
dig db1.howtoforge.local +short  
dig files.howtoforge.local +short

Le sous-domaine ‘ app1.howtoforge.local ‘ est pointé vers l’adresse IP ‘ 192.168.5.10 ‘, le sous-domaine ‘ db1.howtoforge.local ‘ est pointé vers l’adresse IP ‘ 192.168.5.25 ‘, et enfin ‘ files.howtoforge.local ‘ est pointé vers l’adresse IP ‘ 192.168.5.50 ‘.

Voici la sortie similaire que vous recevrez.

vérifier les sous-domaines

Maintenant, vous avez configuré et testé l’installation de Dnsmasq en tant que serveur DNS local sur un serveur Debian. Dans les étapes suivantes, vous allez configurer et sécuriser Dnsmasq en utilisant le pare-feu UFW.

Configuration du pare-feu UFW

Maintenant, vous allez configurer le pare-feu sur votre serveur DNS local. Vous allez sécuriser l’installation de Dnsmasq en limitant l’accès au serveur DNS via le pare-feu UFW.

Exécutez la commande apt ci-dessous pour installer le pare-feu UFW sur votre système Debian.

sudo apt install ufw -y

installer le pare-feu ufw

Après avoir installé UFW, exécutez la commande ci-dessous pour ajouter le service OpenSSH et le port DNS 53 au pare-feu UFW. Dans cet exemple, vous allez spécifier la source du réseau qui est autorisée à accéder au serveur Dnsmasq, qui est le réseau local avec les adresses IP 192.168.5.0/24 ‘.

Assurez-vous de changer les adresses IP du réseau local avec votre sous-réseau interne.

sudo ufw allow OpenSSH  
sudo ufw allow from 192.168.5.0/24 to any port 53 proto udp

Ensuite, exécutez la commande ci-dessous pour démarrer et activer le pare-feu UFW.

sudo ufw enable

Lorsque vous êtes invité à configurer, saisissez y pour confirmer et appuyez sur ENTRÉE pour continuer. Et le pare-feu UFW devrait maintenant être en cours d’exécution et activé et démarrera automatiquement au démarrage.

configuration et activation de ufw

Enfin, exécutez la commande ci-dessous pour vérifier l’état du pare-feu UFW. Vous devriez voir que le pare-feu UFW est ‘actif’ et que le service OpenSSH et le port DNS 53 ont été ajoutés au pare-feu.

sudo ufw status

vérifier ufw

Avec le pare-feu UFW configuré, vous pouvez maintenant ajouter des clients pour se connecter à votre serveur DNS local.

Configuration du client

Dans cette étape, vous allez configurer la machine cliente avec une distribution basée sur Debian et le nom d’hôte ‘ client ‘. Vous allez ajouter le serveur DNS local Dnsmasq à la machine cliente.

Exécutez la commande ci-dessous pour supprimer le lien du fichier de configuration du résolveur DNS ‘/etc/resolv.conf’. Ensuite, créez une nouvelle configuration de résolveur ‘ /etc/resolv.conf ‘ en utilisant la commande de l’éditeur nano ci-dessous.

sudo unlink /etc/resolv.conf  
sudo nano /etc/resolv.conf

Saisissez la ligne suivante dans le fichier. Assurez-vous de changer l’adresse IP avec l’adresse IP de votre serveur Dnsmasq.

nameserver 192.168.5.20

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Ensuite, exécutez la commande ci-dessous pour installer le paquet ‘dnsutils’ sur la machine cliente.

sudo apt install dnsutils

configurer le client

Maintenant, exécutez la commande dig ci-dessous pour vérifier le nom de domaine ‘ howtoforge.local ‘, qui sera pointé vers l’adresse IP du serveur Dnsmasq.

dig howtoforge.local

Voici la sortie que vous recevrez.

vérifier le domaine depuis le client

Pour les sous-domaines, exécutez la commande dig ci-dessous. Chaque sous-domaine sera pointé vers l’adresse IP définie dans le fichier ‘ /etc/hosts ‘ sur le serveur Dnsmasq.

dig app1.howtoforge.local +short  
dig db1.howtoforge.local +short  
dig files.howtoforge.local +short

Voici la sortie similaire que vous recevrez sur la machine cliente.

vérifier les sous-domaines

Ensuite, vous devez également vous assurer que vous pouvez accéder au nom de domaine public via le serveur DNS local Dnsmasq. Vous pouvez vérifier cela en vérifiant le nom de domaine public tel que ‘ github.com ‘.

dig github.com

Vous recevrez une sortie similaire à cette capture d’écran - Au bas de la sortie, vous devriez voir que votre demande est répondue par le serveur DNS local Dnsmasq qui fonctionne sur ‘ 192.168.5.20’ avec le port par défaut ‘ 53 ‘. Avec cela en tête, vous vous êtes connecté avec succès au nom de domaine public via le serveur DNS local Dnsmasq.

assurer que dns fonctionne

Enfin, vous allez vérifier la mise en cache DNS via les commandes ‘drill’ et ‘dig’. La commande ‘ drill ‘ fait partie du paquet ‘ ldnsutils ‘, donc exécutez la commande apt ci-dessous pour l’installer.

sudo apt install ldnsutils

installer ldns

Après l’installation de ldnsutils, exécutez la commande drill ci-dessous pour vérifier la mise en cache DNS que vous avez configurée sur le serveur Dnsmasq.

drill duckduckgo.com | grep "Query time"  
drill duckduckgo.com | grep "Query time"

Vous recevrez une sortie comme la capture d’écran suivante - lors de la première fois que vous faites la demande, le ‘ Query time ‘ est de 60 ms. Mais la deuxième fois que vous demandez le même domaine, le temps de requête est réduit à 1 ms, ce qui signifie que la requête DNS est mise en cache sur le serveur DNS local Dnsmasq.

vérifier la mise en cache dns

Vous pouvez également vérifier la mise en cache DNS via la commande dig avec l’option ‘ +stats ‘.

dig +noall +stats duckduckgo.com  
dig +noall +stats duckduckgo.com

Vous avez maintenant terminé la configuration de la machine cliente et vérifié que le serveur DNS local Dnsmas est entièrement opérationnel, depuis le nom de domaine local et les sous-domaines que vous avez définis via le fichier ‘/etc/hosts’, jusqu’à la mise en cache DNS que vous avez activée sur Dnsmasq.

Conclusion

Dans ce tutoriel, vous avez créé votre propre serveur DNS local avec Dnsmasq. Vous avez configuré votre propre serveur DNS local pour votre environnement local avec Dnmasq sur un serveur Debian 12. Cela incluait également la configuration de Dnsmasq avec des noms de domaine locaux et des sous-domaines, l’activation de la mise en cache DNS pour obtenir des réponses DNS récurrentes plus rapides, et l’activation du serveur DHCP via Dnsmasq.

Enfin, vous avez également ajouté et configuré la machine cliente pour utiliser le serveur DNS local que vous avez créé. Dans ce cadre, vous avez également appris à dépanner le serveur DNS avec la commande dig et comment configurer un résolveur DNS sur un système Linux.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.