Serveur DNS · 14 min read · Sep 08, 2025

Comment installer un résolveur DNS local avec Dnsmasq sur Rocky Linux

Dnsmasq est un petit et léger serveur DNS pour votre environnement local. Il peut être utilisé pour fournir un serveur DNS, un serveur DHCP et un serveur TFTP. En ce qui concerne le serveur DNS, Dnsmasq peut être utilisé comme un transmetteur, 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, adapté aux appareils à faibles ressources tels que les routeurs et les pare-feu. Dnsmasq a de faibles exigences système et consomme peu de ressources. Il peut être exécuté sur Linux, BSD, Android et macOS.

Ce tutoriel couvrira l’installation et la configuration d’un serveur DNS local avec Dnsmasq sur un serveur Rocky Linux 9. Vous installerez Dnsmasq et configurerez le serveur DNS local avec quelques fonctionnalités supplémentaires, telles que l’activation des noms de domaine locaux, la configuration de sous-domaines via le fichier /etc/hosts et l’activation du cache DNS pour un accès plus rapide. Enfin, vous activerez le serveur DHCP via Dnsmasq.

Vous apprendrez également comment configurer les machines clientes pour utiliser le serveur DNS local comme résolveur DNS principal.

Prérequis

Il y a plusieurs prérequis que vous devez avoir avant de commencer. Voici la liste des prérequis :

  • Un serveur Rocky Linux 9 - Cet exemple utilise Rocky Linux avec le nom d’hôte ‘ dnsmasq-rocky ‘ et l’adresse IP ‘ 192.168.5.50 ‘.
  • Un utilisateur non-root avec des privilèges d’administrateur sudo/root.
  • SELinux fonctionne en mode ‘ permissif ‘.

Pour les machines clientes, vous pouvez utiliser n’importe quelle distribution Linux. Vous pouvez utiliser des distributions basées sur Debian ou RHEL pour les machines clientes.

Préparer le système

Sur les systèmes d’exploitation basés sur RHEL, le résolveur DNS par défaut ‘/etc/resolv.conf’ est généré par le service NetworkManager. Avant d’installer Dnsmasq, vous allez configurer un résolveur DNS statique via le fichier /etc/resolv.conf et désactiver le résolveur DNS du service NetworkManager.

Pour commencer, ouvrez le fichier de configuration de NetworkManager /etc/NetworkManager/NetworkManager.conf en utilisant la commande de l’éditeur nano ci-dessous.

sudo nano /etc/NetworkManager/NetworkManager.conf

Ajoutez la ligne ‘ dns=none ‘ dans la section ‘ [section] ‘.

[main]  
dns=none

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

Ensuite, ouvrez le 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

Supprimez toutes les lignes disponibles et remplacez-les par les lignes suivantes. Avec cela, vous utiliserez les DNS publics de Cloudflare et Google comme serveur DNS principal.

nameserver 1.1.1.1  
nameserver 8.8.8.8

Enregistrez le fichier et quittez lorsque vous avez terminé.

Enfin, exécutez la commande systemctl ci-dessous pour redémarrer le NetworkManager et appliquer les modifications.

sudo systemctl restart NetworkManager

préparer le système

Avec ces paramètres terminés, votre résolveur DNS ne sera pas modifié par le service NetworkManager et vous pouvez ajouter ou changer le résolveur DNS à tout moment.

Dans les étapes suivantes, vous commencerez l’installation et la configuration de Dnsmasq sur Rocky Linux.

Installer Dnsmasq sur Rocky Linux

Dans cette étape, vous allez installer le paquet Dnsmasq sur un serveur Rocky Linux. Ensuite, vous allez démarrer et activer le service Dnsmasq pour qu’il s’exécute au démarrage du système.

Par défaut, le paquet ‘ dnsmasq ‘ est disponible dans le dépôt AppStream de Rocky Linux. Exécutez la commande dnf ci-dessous pour obtenir des informations sur le paquet ‘ dnsmasq ‘.

sudo dnf info dnsmasq

La version Dnsmasq v2.85 est disponible sur Rocky Linux 9 au moment de la rédaction de cet article.

info dnsmasq

Maintenant, exécutez la commande ci-dessous pour installer Dnsmasq. Saisissez y lorsque vous y êtes invité pour la confirmation, puis appuyez sur ENTRÉE pour continuer.

sudo dnf install dnsmasq dnsmasq-utils

L’installation de Dnsmasq devrait maintenant commencer.

Après avoir installé Dnsmasq, exécutez la commande systemctl ci-dessous pour démarrer et activer le service ‘ dnsmasq ‘. Avec la commande ci-dessous exécutée, le service ‘ dnsmasq ‘ devrait maintenant être en cours d’exécution et activé, ce qui démarrera automatiquement au démarrage.

sudo systemctl start dnsmasq  
sudo systemctl enable dnsmasq

Vérifiez le service ‘ dnsmasq ‘ via l’utilitaire de commande systemctl ci-dessous.

sudo systemctl status dnsmasq

Vous recevrez une sortie comme ceci - Le service ‘ dnsmasq ‘ est actuellement en cours d’exécution, activé et sera exécuté automatiquement au démarrage.

vérifier dnsmasq

Avec Dnsmasq installé et en cours d’exécution, vous allez maintenant commencer la configuration de Dnsmasq pour qu’il fonctionne comme un serveur DNS local.

Configurer Dnsmasq

Dans cette étape, vous allez configurer Dnsmasq comme serveur DNS local avec certaines fonctionnalités activées telles que le cache DNS et le serveur DHCP, et configurer le nom de domaine et les sous-domaines pour les applications locales. Cela permet à votre application d’être accessible via les noms de domaine locaux/sous-domaines tels que ‘ db1.howtoforge.local ‘, ‘ app.howtoforge.local ‘, et bien d’autres.

Pour commencer, exécutez la commande ci-dessous pour copier le fichier de configuration Dnsmasq par défaut vers ‘/etc/dnsmasq.conf.orig’, puis ouvrez le fichier de configuration Dnsmasq original ‘/etc/dnsmasq.conf’ en utilisant la commande de l’éditeur nano ci-dessous.

sudo cp /etc/dnsmasq.conf{,.orig}  
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.50  
# et l'interface réseau eth1  
port=53  
listen-address=127.0.0.1,192.168.5.50  
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 domaines non locaux  
# utilisant les DNS publics de Cloudflare et Google  
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.50  
  
# activer le cache DNS et ajuster la taille du cache  
cache-size=10000  
  
# activer le dhcp via dnsmasq  
# définir le fichier de base de données de location  
# faire du serveur dhcp un serveur autoritaire  
dhcp-range=192.168.5.100,192.168.5.150,12h  
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases  
dhcp-authoritative

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

Voici les options détaillées que vous utiliserez pour votre installation de 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 lier et fonctionner.
  • domain-needed : désactiver le transfert de noms sans l’adresse de domaine principal. Vous pouvez accéder à l’hôte ‘mysql1’ à 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.50.
  • cache-size : activer le 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 location.
  • dhcp-leasefile : définir le fichier qui sera utilisé pour stocker la location DHCP.
  • dhcp-authoritative : faire du serveur DHCP un serveur autoritaire.

config dnsmasq

Ensuite, ouvrez le fichier ‘ /etc/hosts ‘ en utilisant la commande de l’éditeur nano ci-dessous. Vous allez maintenant définir quelques sous-domaines pour les applications dans votre environnement local.

sudo nano /etc/hosts

Ajoutez les lignes suivantes au fichier. Dans cet exemple, vous allez créer trois sous-domaines wiki, mysql et files. Chaque sous-domaine suivra le domaine principal du serveur Dnsmasq ‘howtoforge.local’ et pointera vers une adresse IP spécifique.

Le sous-domaine wiki.howtoforge.local pointera vers l’adresse IP ‘ 192.168.5.10 ‘, le sous-domaine ‘ mysql.howtoforge.local ‘ pointera vers l’adresse IP ‘ 192.168.5.25 ‘, et le ‘ files.howtoforge.local ‘ pointera vers l’adresse IP ‘ 192.168.5.30 ‘.

192.168.5.10 wiki  
192.168.5.25 mysql  
192.168.5.30 files 

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

Maintenant, ouvrez le 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 en haut du fichier. Assurez-vous de changer l’adresse IP avec l’adresse IP du serveur Dnsmasq.

nameserver 127.0.0.1  
nameserver 192.168.5.50

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

Maintenant, exécutez la commande ci-dessous pour vérifier la configuration de Dnsmasq et vous assurer que vous avez la bonne configuration. Vous recevrez une sortie telle que ‘ dnsmasq: syntax check OK ‘.

sudo dnsmasq --test

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

sudo systemctl restart dnsmasq

configurer dnsmasq

À ce stade, vous avez terminé la configuration de Dnsmasq en tant que serveur DNS local sur le système Rocky Linux. Vous avez également configuré le nom de domaine pour le serveur Dnsmasq et quelques sous-domaines via le fichier ‘/etc/hosts’. Enfin, vous avez activé le cache DNS et le serveur DHCP via Dnsmasq.

Dans les étapes suivantes, vous allez vérifier l’installation et la configuration du serveur Dnsmasq.

Vérifier l’installation de Dnsmasq

Avec la configuration de Dnsmasq terminée, vous allez maintenant vérifier le service Dnsmasq lui-même. Vous allez vérifier Dnsmasq pour vous assurer qu’il fonctionne sur le port par défaut 50 et que le service est en cours d’exécution. Ensuite, vous allez vérifier le nom de domaine local et les sous-domaines que vous avez créés via le paquet ‘ dns-utils ‘.

Exécutez la commande ci-dessous pour vérifier le port ouvert sur votre système. Ensuite, vérifiez le service ‘ dnsmasq ‘ via l’utilitaire de commande systemctl.

ss -tulpn | grep 53  
sudo systemctl status dnsmasq

Vous recevrez une sortie comme ceci - Dnsmasq fonctionne sur le port par défaut 53 et l’état du service est actuellement en cours d’exécution. De plus, il est activé, ce qui démarrera automatiquement au démarrage.

vérifier dnsmasq

Ensuite, exécutez la commande dnf ci-dessous pour installer le paquet ‘bind-utils’ sur votre serveur Rocky Linux. Ce paquet fournit plusieurs outils en ligne de commande pour tester et dépanner le serveur DNS.

sudo dnf install bind-utils

Saisissez y lorsque vous y êtes invité et appuyez sur ENTRÉE pour continuer.

installer bind-utils

Maintenant, exécutez la commande dig ci-dessous pour vérifier le nom de domaine pour le serveur Dnsmasq ‘ howtoforge.local ‘. Vous devriez voir que ‘ howtoforge.local ‘ pointe vers l’adresse IP du serveur ‘ 192.168.5.50 ‘.

dig howtoforge.local

vérifier le nom de domaine

Enfin, exécutez la commande ci-dessous pour vérifier les sous-domaines que vous avez définis via le fichier ‘ /etc/hosts ‘.

dig wiki.howtoforge.local +short  
dig mysql.howtoforge.local +short  
dig files.howtoforge.local +short

Vous recevrez une sortie similaire à ceci - Le sous-domaine wiki.howtoforge.local pointe vers l’adresse IP 192.168.5.10, le sous-domaine mysql.howtoforge.local pointe vers l’adresse IP 192.168.5.25, et enfin le sous-domaine files.howtoforge.local pointe vers l’adresse IP du serveur 192.168.5.30.

vérifier le sous-domaine

Avec ces résultats en place, vous avez terminé la configuration de Dnsmasq en tant que serveur DNS local. Dans les étapes suivantes, vous allez sécuriser le port DNS via le Firewalld.

Configurer Firewalld

Dans cette étape, vous allez configurer le firewalld pour ouvrir le port de service DNS et ajouter les adresses IP des réseaux internes au firewalld comme source principale autorisée à accéder au port de service DNS.

Exécutez la commande firewall-cmd ci-dessous pour ajouter le service DNS au firewalld. Ensuite, ajoutez les adresses IP du réseau interne comme source.

sudo firewall-cmd --add-service=dns  
sudo firewall-cmd --add-source=192.168.5.0/24

Ensuite, exécutez la commande ci-dessous pour enregistrer les règles temporaires que vous avez créées et recharger le firewalld pour appliquer les modifications.

sudo firewall-cmd --runtime-to-permanent  
sudo firewall-cmd --reload

configurer firewalld

Vérifiez le firewalld via la commande suivante. Vous devriez voir que le service DNS est ajouté au firewalld et que l’adresse IP source du réseau est également ajoutée au firewalld.

sudo firewall-cmd --list-all

Sortie :

vérifier firewalld

Configurer le client (basé sur Debian ou RHEL)

Dans cette étape, vous apprendrez comment configurer à la fois les distributions basées sur Debian et RHEL pour utiliser le serveur DNS local que vous avez créé via Dnsmasq.

Pour les distributions basées sur RHEL

Ajoutez un nouveau fichier de configuration pour NetworkManager ‘ /etc/NetworkManager/conf.d/dns-servers.conf ‘ en utilisant la commande de l’éditeur nano ci-dessous.

sudo nano /etc/NetworkManager/conf.d/dns-servers.conf

Ajoutez les lignes suivantes au fichier, et assurez-vous de changer l’adresse IP avec l’adresse IP du service Dnsmasq. Avec cette configuration, vous allez configurer le résolveur DNS par défaut pour le client en utilisant l’adresse IP du serveur Dnsmasq. Cela écrira automatiquement la configuration du résolveur DNS ‘ /etc/resolv.conf ‘.

[global-dns-domain-*]  
servers=192.168.5.50

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

Ensuite, exécutez la commande systemctl ci-dessous pour redémarrer le service NetworkManager et appliquer les modifications.

sudo systemctl restart NetworkManager

Vous pouvez afficher le fichier ‘/etc/resolv.conf’ pour vérifier les paramètres. Vous devriez voir que le serveur de noms par défaut est l’adresse IP du serveur Dnsmasq local 192.168.5.50.

cat /etc/resolv.conf

configurer la machine cliente

Ensuite, exécutez la commande dnf ci-dessous pour installer le paquet ‘bind-utils’ sur votre système.

sudo dnf install bind-utils

installer bind utils

Pour les distributions basées sur Debian

Si vous utilisez le système d’exploitation basé sur Debian, vous pouvez configurer le résolveur DNS manuellement et désactiver le service ‘systemd-resolved’ sur votre système - en particulier pour le système Ubuntu.

Exécutez la commande ci-dessous pour arrêter et désactiver le service systemd-resolved.

sudo systemctl disable --now systemd-resolved

Maintenant, exécutez la commande ci-dessous pour supprimer le fichier de lien symbolique de la configuration du résolveur DNS ‘/etc/resolv.conf’. Ensuite, créez un nouveau fichier de configuration de résolveur ‘ /etc/resolv.conf ‘ via la commande de l’éditeur nano ci-dessous.

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

Ajoutez la ligne suivante au fichier et changez l’adresse IP avec l’adresse IP de votre serveur Dnsmasq.

nameserver 192.168.5.50

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

Ensuite, exécutez la commande apt ci-dessous pour installer le paquet ‘ dnsutils ‘ sur votre système.

sudo apt install dnsutils

Une fois le ‘bind-utils’ ou ‘dns-utils’ installé, vous pouvez vérifier la configuration de votre Dnsmasq via la commande dig.

Vérifiez le nom de domaine du serveur Dnsmasq ‘ howtoforge.local ‘ via la commande dig ci-dessous. Vous devriez voir que le domaine ‘ howtoforge.local ‘ pointe vers l’adresse IP du serveur Dnsmasq 192.168.5.50.

dig howtoforge.local

vérifier depuis le client

Ensuite, vérifiez les sous-domaines que vous avez configurés via le fichier ‘/etc/hosts’ en utilisant la commande ci-dessous. Vous devriez voir que chaque sous-domaine pointe vers l’adresse IP spécifique que vous avez configurée dans le fichier ‘/etc/hosts’.

dig wiki.howtoforge.local +short  
dig mysql.howtoforge.local +short  
dig files.howtoforge.local +short

Vous recevrez une sortie comme ceci - Le sous-domaine wiki.howtoforge.local pointe vers l’adresse IP 192.168.5.10, le sous-domaine mysql.howtoforge.local pointe vers l’adresse IP 192.168.5.25, et enfin, le sous-domaine files.howtoforge.local pointe vers l’adresse IP du serveur 192.168.5.30.

vérifier les sous-domaines

Avec cela, le nom de domaine local et les sous-domaines sont configurés avec succès. Maintenant, qu’en est-il des noms de domaine publics tels que Github.com, etc ?

Exécutez la commande ci-dessous pour vérifier les noms de domaine Internet depuis votre machine cliente. Cela garantira que vous pouvez vous connecter à Internet, même avec le DNS local résolu sur le serveur Dnsmasq.

dig github.com

Vous recevrez une sortie similaire à ceci - La requête dig vers github.com est connectée via le serveur DNS local qui fonctionne sur l’adresse IP 192.168.5.50 avec le port par défaut 53.

vérifier dns internet

Enfin, vérifiez les paramètres de cache DNS via la commande dig ci-dessous. Cela vous montrera les statistiques de la requête exécutée, y compris le ‘ Temps de requête ‘ vers le nom de domaine cible.

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

Vous recevrez ensuite une sortie similaire à ceci - La première requête que vous obtenez est le ‘ Temps de requête ‘ en 63ms. Mais pour la deuxième et la troisième requêtes, le Temps de Requête est de 2ms, ce qui signifie que vos requêtes vers le même nom de domaine sont mises en cache via le serveur DNS local Dnsmasq.

vérifier le cache dns

Conclusion

Dans ce tutoriel, vous avez créé votre propre serveur DNS local avec Dnsmasq. Vous avez configuré votre propre serveur DNS pour votre environnement local avec Dnmasq sur un serveur Rocky Linux 9. Cela incluait également la configuration de Dnsmasq avec des noms de domaine locaux et des sous-domaines, l’activation du cache DNS pour obtenir plus de rapidité, et également l’activation du serveur DHCP via Dnsmasq.

Enfin, vous avez également ajouté et configuré des machines clientes (distributions basées sur Debian et RHEL) 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.