Comment configurer un résolveur DNS local à l’aide de Dnsmasq sur Ubuntu 20.04

Dnsmasq (abréviation de « DNS masquerade ») est un redirecteur DNS simple, léger et facile à utiliser utilisé pour un petit réseau. Il peut être configuré comme un cache DNS et un serveur DHCP et prend en charge les protocoles IPv4 et IPv6. Lorsqu’il reçoit des requêtes DNS, il y répond à partir de son cache ou les transmet à un autre serveur DNS.

Dnsmasq est composé de trois sous-systèmes :

  • Sous-système DNS : Il est utilisé pour mettre en cache différents types d’enregistrements, notamment A, AAAA, CNAME et PTR.
  • Sous-système DHCP : Il prend en charge DHCPv4, DHCPv6, BOOTP et PXE.
  • Sous-système Router Advertisement : Il fournit une autoconfiguration de base pour les hôtes IPv6. Il peut être utilisé de manière autonome ou en conjonction avec DHCPv6.

Dans ce tutoriel, nous allons te montrer comment configurer un serveur DNS local avec Dnsmasq sur un serveur Ubuntu 20.04.

Conditions préalables

  • Un serveur exécutant Ubuntu 20.04.
  • Un mot de passe root est configuré sur le serveur.

Pour commencer

Tout d’abord, il est recommandé de mettre à jour les paquets de ton système à la dernière version. Tu peux mettre à jour tous les paquets en exécutant la commande suivante :

apt-get update -y

Après avoir mis à jour tous les paquets, tu devras désactiver le service Systemd-resolved dans ton système. Le service Systemd-resolved est utilisé pour la résolution des noms de réseau pour les applications locales.

Tu peux le désactiver en exécutant la commande suivante :

systemctl disable --now systemd-resolved

Une fois le service désactivé, tu devras supprimer le fichier resolv.conf par défaut et en créer un nouveau avec les détails de ton serveur DNS personnalisé.

Tu peux supprimer le fichier resolv.conf par défaut en exécutant la commande suivante :

rm -rf /etc/resolv.conf

Ensuite, ajoute le serveur DNS de Google au fichier resolv.conf à l’aide de la commande suivante :

echo "nameserver 8.8.8.8" > /etc/resolv.conf

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Installe Dnsmasq

Par défaut, Dnsmasq est disponible dans le dépôt par défaut d’Ubuntu 20.04. Tu peux l’installer en exécutant simplement la commande suivante :

apt-get install dnsmasq dnsutils ldnsutils -y

Une fois l’installation terminée, les services Dnsmasq seront démarrés automatiquement. Tu peux vérifier l’état de Dnsmasq avec la commande suivante :

systemctl status dnsmasq

Tu devrais obtenir la sortie suivante :

dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago
   Main PID: 17726 (dnsmasq)
      Tasks: 1 (limit: 2282)
     Memory: 868.0K
     CGroup: /system.slice/dnsmasq.service
             ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e>

Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK.
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses
Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer Dnsmasq

Ensuite, tu devras configurer Dnsmasq comme serveur DNS local. Tu peux le faire en modifiant le fichier de configuration principal de Dnsmasq :

nano /etc/dnsmasq.conf

Change les lignes suivantes :

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1,your-server-ip
expand-hosts
domain=dns-example.com
cache-size=1000

Sauvegarde et ferme le fichier lorsque tu as terminé.

Ensuite, tu devras ajouter l’adresse ip de ton serveur comme serveur de noms primaire dans ton fichier resolv.conf. Tu peux l’ajouter avec la commande suivante :

nano /etc/resolv.conf

Ajoute la ligne suivante au-dessus de la ligne « nameserver 8.8.8.8 » :

nameserver your-server-ip

Enregistre et ferme le fichier lorsque tu as terminé. Ensuite, vérifie que le serveur n’a pas d’erreur de configuration avec la commande suivante :

dnsmasq --test

Si tout va bien, tu devrais obtenir la sortie suivante :

dnsmasq: syntax check OK.

Enfin, redémarre le service Dnsmasq pour appliquer les modifications :

systemctl restart dnsmasq

À ce stade, Dnsmasq est démarré et écoute sur le port 53. Tu peux le vérifier avec la commande suivante :

ss -alnp | grep -i :53

Tu devrais obtenir la sortie suivante :

udp     UNCONN   0        0                                             0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=4))                                             
udp     UNCONN   0        0                                                [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=6))                                             
tcp     LISTEN   0        32                                            0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=5))                                             
tcp     LISTEN   0        32                                               [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=7))                                             

Ajouter des enregistrements DNS au serveur Dnsmasq

Ensuite, tu devras modifier ton fichier /etc/hosts et ajouter l’entrée du serveur DNS local.

nano /etc/hosts

Ajoute la ligne suivante :

your-server-ip host1.dns-example.com

Sauvegarde et ferme le fichier lorsque tu as terminé.

Vérifie la résolution du serveur Dnsmasq

À ce stade, Dnsmasq est installé et configuré. Non, il est temps de vérifier la résolution DNS.

Tu peux utiliser la commande dig pour vérifier la résolution DNS comme indiqué ci-dessous :

dig host1.dns-example.com +short

Si tout va bien, tu devrais voir l’ip de ton serveur dans la sortie suivante :

your-server-ip

Tu peux aussi vérifier la résolution DNS externe avec la commande suivante :

dig howtoforge.com +short

Tu devrais obtenir la sortie suivante :

172.67.68.93
104.26.3.165
104.26.2.165

Configurer le client distant pour utiliser le serveur DNS Dnsmasq

Ensuite, tu devras configurer un client distant pour utiliser ton serveur DNS Dnsmasq comme serveur DNS par défaut.

Tout d’abord, installe les outils DNS avec la commande suivante :

apt-get install dnsutils ldnsutils -y

Une fois installé, tu devras modifier le fichier /etc/resolv.conf et l’entrée de ton serveur DNS Dnsmasq.

nano /etc/resolv.conf

Ajoute la ligne suivante au début du fichier :

nameserver your-server-ip

Enregistre et ferme le fichier lorsque tu as terminé.

Ensuite, vérifie la résolution DNS locale avec la commande suivante :

dig host1.dns-example.com

Tu devrais voir la sortie suivante :

; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com
;; global options: +cmd
;; Got answer:
;; HEADER opcode: QUERY, status: NOERROR, id: 26401
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1.dns-example.com.		IN	A

;; ANSWER SECTION:
host1.dns-example.com.	0	IN	A	45.58.32.165

;; Query time: 301 msec
;; SERVER: 45.58.32.165#53(45.58.32.165)
;; WHEN: Mon Nov 02 16:49:37 IST 2020
;; MSG SIZE  rcvd: 66

Ensuite, tu devras vérifier la mise en cache de ton serveur DNS. Tu peux le vérifier à l’aide de l’utilitaire drill.

Tout d’abord, exécute la commande suivante :

drill google.com | grep "Query time"

Tu devrais voir le résultat suivant :

;; Query time: 290 msec

Ensuite, exécute à nouveau la commande pour vérifier si la mise en cache fonctionne ou non :

drill google.com | grep "Query time"

Tu devrais voir que le temps de requête a maintenant diminué à 4 msec :

;; Query time: 4 msec

Conclusion

Félicitations ! Tu as réussi à installer et à configurer Dnsmasq comme serveur DNS local et Ubuntu 20.04. J’espère que tu peux maintenant l’implémenter facilement dans ton réseau local pour la résolution de noms.

Vous aimerez aussi...