Comment configurer la mise en cache DNS à l’aide de dnsmasq sur Ubuntu

DNSmasq peut être utilisé pour mettre en cache les requêtes DNS pour les distributions Linux. cependant, cela peut être un peu difficile.

Le cache DNS fonctionne afin d’accélérer la procédure de recherche DNS qui convertit un nom de domaine de site Web en son adresse IP associée. Lorsque plusieurs utilisateurs de votre réseau visitent la même adresse de site Web, l’utilisation du serveur de cache DNS local peut réduire le temps de chargement du Web.

Voyons d’abord ce qu’est la mise en cache DNS.

Qu’est-ce que la mise en cache DNS ?

Le DNS est utilisé par Internet pour garder une trace de tous les sites en ligne accessibles au public et de leurs adresses IP associées. Il peut être comparé à un annuaire téléphonique. L’utilisation de DNS nous évite d’avoir à mémoriser l’IP de chaque site, nécessaire à l’interaction de l’infrastructure réseau avec les sites Internet.

Chaque fois que vous demandez au moteur de recherche d’afficher une page Web, c’est ce qui se passe réellement dans les coulisses.

Bien que votre système ait accès à un grand nombre de serveurs DNS externes, le problème est que le fait d’avoir une réplique centrale du DNS accélère toujours la transmission et la résolution. C’est à ce moment que la mise en cache DNS entre en jeu.

Avant d’envoyer la demande sur le Web, le cache DNS gère la résolution d’identité pour les domaines récemment et fréquemment consultés dans le but d’accélérer davantage la procédure.

Le serveur DNS est accessible chaque fois qu’il est nécessaire de résoudre une adresse IP en un nom de domaine. Cela peut imposer une charge supplémentaire au serveur DNS, en particulier si le site Web reçoit de nombreuses requêtes simultanément.

Un cache DNS est utilisé afin de réduire les requêtes DNS et les temps de réponse. Les adresses IP résolues ainsi que les détails de l’hôte sont enregistrés localement. Plutôt que de lancer une nouvelle requête DNS, le résultat est extrait de la mémoire cache DNS la prochaine fois que l’adresse IP ou le nom de domaine doit être résolu.

Comment la mise en cache DNS aide-t-elle à résoudre les problèmes de résolution DNS intermittents sur les instances Amazon EC2 ?

La majorité des systèmes Linux n’utilisent pas de cache DNS local. Cela implique que toutes les requêtes DNS sont envoyées directement au résolveur DNS faisant autorité fourni par Amazon, qui limite le nombre de requêtes qu’il peut traiter simultanément. Les problèmes de résolution DNS surviennent lorsqu’il y a beaucoup de requêtes.

Le déploiement d’un cache DNS local dans le système vous aidera à réduire l’utilisation du processeur et du réseau tout en évitant les erreurs de résolution DNS. Un cache DNS local répond aux requêtes adressées aux ressources DNS externes telles qu’Amazon RDS et S3.

Le protocole DHCP est utilisé lors du lancement par les instances Amazon EC2 connectées aux Amazon VPC pour demander une adresse de serveur DNS.

Lorsque vous utilisez Amazon VPC pour construire un cloud privé virtuel, Route 53 DNS Resolver utilise efficacement un résolveur sur le VPC pour répondre aux demandes DNS pour les instances EC2 exécutées sous des adresses Web Amazon VPC locales et des entrées dans des zones administrées de manière privée. Le résolveur effectue des recherches récurrentes sur les serveurs DNS publics pour toutes les adresses Web supplémentaires.

Un cache DNS sert d’enregistrement transitoire des requêtes DNS précédentes que notre système peut rapidement examiner lors de la tentative d’accès à un site Web en ligne. Il maintient un journal de chaque session existante et ultérieure. Ce cache DNS facilite la résolution du domaine et évite les erreurs avec les instances Amazon EC2 Linux.

De nombreux utilisateurs utilisent généralement le service Route 53 d’Amazon pour DNS lorsqu’ils accèdent à AWS. Il est vraiment facile à utiliser et presque gratuit. Mais il existe un certain nombre de raisons qui pourraient influencer la décision de l’utilisateur d’utiliser un serveur DNS local.

Même si bind9 reste une excellente option pour configurer un serveur de cache DNS local, dnsmasq est beaucoup plus simple à installer et à configurer à la fois sur les instances EC2 et sur une machine locale.

Qu’est-ce que dnsmasq ?

DNSmasq est un outil lié à Linux qui prend en charge la mise en cache DNS, DHCP, TFTP et DNS. Il est conçu pour être compact et léger, ce qui le rend idéal pour les réseaux et les pare-feu avec moins de contraintes de ressources.

Il est incroyablement simple à installer et à configurer. Afin de mettre en place DNS et DHCP pour les sous-réseaux, dnsmasq est une solution flexible et pratique.

Il est possible de configurer ces identifiants attribués par DHCP et les instructions associées pour chaque serveur ou pour un contrôleur sous-jacent. Les options DHCP dynamiques et statiques sont toutes deux prises en charge par dnsmasq. Il est portable et a la capacité de gérer DNS et DHCP pour au moins 1 000 clients.

Lorsqu’une requête DNS est reçue, dnsmasq répond à partir d’un cache local ou la transmet à un serveur DNS faisant autorité. En plus de répondre aux demandes DNS d’adresses avec la configuration DHCP, il vérifie le contenu du fichier /etc/hosts pour identifier les noms d’hôtes locaux qui ne sont pas répertoriés dans le DNS public.

L’utilisation de l’outil dnsmasq au lieu du cache DNS intégré du navigateur améliore considérablement les performances de navigation sur Internet. Il est idéal pour un environnement intégré avec des ressources limitées car il est très simple à mettre en place et nécessite très peu d’espace disque.

Fonctionnalités de dnsmasq

  • Il est simple d’intégrer des serveurs DNS internes à l’aide de dnsmasq en le configurant pour transmettre des requêtes de résolution de nom de domaine particulières à des serveurs faisant autorité particuliers.
  • La charge de travail du serveur est réduite et la fiabilité est améliorée à l’aide du serveur DNS local configuré.
  • La configuration DNS pour les terminaux équipés d’un pare-feu est plutôt simple et indépendante du DNS utilisé par le FAI.
  • Si le port lié à Internet est inaccessible lors d’une vérification DNS sur l’ordinateur, l’opération de recherche sera instantanément suspendue.
  • Grâce aux requêtes PPP (protocole point à point) ou DHCP, dnsmasq peut réellement être configuré pour collecter périodiquement des données directement à partir du serveur de résolution de domaine sous-jacent.

Installation

Le service résolu par systemd doit être désactivé avant l’installation et la configuration de l’utilitaire dnsmasq.

systemctl stop systemd-resolved

Vous pouvez également le masquer à l’aide de l’attribut mask afin qu’il ne démarre pas automatiquement au redémarrage.

 systemctl mask systemd-resolved

L’installation de dnsmasq est l’action initiale que vous devez effectuer après avoir désactivé le systemd-resolved. DNSmasq est préinstallé dans presque toutes les distributions Linux. Sinon, vous pouvez l’installer manuellement. Lancez un terminal de commande, puis tapez la commande suivante pour le faire.

sudo apt-get install dnsmasq

Utilisez la commande suivante si vous êtes un utilisateur yum :

sudo yum install -y dnsmasq

Cette commande installe automatiquement l’outil et démarre le dnsmasq en arrière-plan.

Après une installation réussie, vous pouvez vérifier l’état de dnsmasq en utilisant la commande ci-dessous.

systemctl status dnsmasq

S’il affiche son statut comme « actif (en cours d’exécution) », cela signifie que l’installation est terminée et configurée sur le port 53. S’il affiche son statut comme « inactif (mort) », vous devez alors redémarrer à la fois la machine Ubuntu et dnsmasq. Cela corrigera l’erreur.

Configuration

Dnsmasq est maintenant prêt à être configuré sur votre machine en tant que serveur DNS de mise en cache local. Le fichier de configuration par défaut se trouve dans /etc/dnsmasq.conf. Ce fichier de configuration doit être modifié afin de configurer l’utilitaire dnsmasq dans le système.

Utilisez cette commande pour ouvrir et modifier le fichier de configuration.

nano /etc/dnsmasq.conf

Le fichier de configuration doit être modifié uniquement avec les privilèges root. Effacez simplement tout dans le fichier, y compris les commentaires, et copiez-collez simplement et enregistrez ce paramètre de configuration.

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1
expand-hosts
domain=geek-demo.com
cache-size=1000

Permettez-moi de décrire brièvement ce que signifie chacun des paramètres.

  • Port – Pour spécifier ou lier le port que Dnsmasq utilisera pour recevoir les requêtes DNS.
  • domain-needed – Transmet uniquement les noms de domaine au serveur DNS en amont.
  • bogus-priv – empêche la redirection de domaine et de port
  • listen-address – Pour définir l’adresse du serveur de noms. En règle générale, localhost est utilisé par défaut pour configurer un serveur DNS local.
  • domain – Pour configurer les domaines que dnsmasq ajoute aux identifiants courts.
  • cache-size – La taille maximale de mise en cache DNS autorisée dans le stockage.

Après avoir effectué toutes les modifications nécessaires, enregistrez et fermez le fichier de configuration. Et l’étape suivante consiste à modifier le fichier /etc/resolv.conf pour ajouter l’adresse de résolution de l’hôte local. Utilisez la commande ci-dessous pour ouvrir avec l’éditeur nano.

nano /etc/resolv.conf

Ici, vous pouvez trouver tous les serveurs de noms que votre système utilise pour la résolution d’adresses. Dans cette liste, ajoutez également l’adresse de bouclage. Ajoutez « nameserver 127.0.0.1 » et conservez-le sur la première ligne.

Enregistrez et quittez le fichier de configuration. Pour que le paramètre mis à jour prenne effet, redémarrez l’utilitaire dnsmasq.

systemctl restart dnsmasq

Test du serveur de mise en cache DNS local

Il est facile de tester le serveur DNS local. Ouvrez une ligne de commande et utilisez la commande dig pour vérifier la mise en cache DNS. Lorsque vous exécutez la commande dig pour la première fois, le résultat devrait être assez courant.

┌──(root💀kali)-[/home/writer]
└─# dig toptips.fr.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> toptips.fr.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 623
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;toptips.fr.com.                 IN      A

;; ANSWER SECTION:
toptips.fr.com.          227     IN      A       172.66.43.163
toptips.fr.com.          227     IN      A       172.66.40.93

;; Query time: 31 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sat Oct 15 07:52:49 EDT 2022
;; MSG SIZE  rcvd: 74

Ici, veuillez noter que le temps de requête est d’environ 31 msec pour interroger les détails du serveur de noms en amont. Exécutez à nouveau la même commande dig et vous remarquerez une diminution significative du temps de requête.

┌──(root💀kali)-[/home/writer]
└─# dig toptips.fr.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> toptips.fr.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21942
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;toptips.fr.com.                 IN      A

;; ANSWER SECTION:
toptips.fr.com.          281     IN      A       172.66.40.93
toptips.fr.com.          281     IN      A       172.66.43.163

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sat Oct 15 07:58:10 EDT 2022
;; MSG SIZE  rcvd: 74

Ici, le temps de requête est de 0 msec. Cela est dû au fait qu’après avoir effectué la recherche initiale, dnsmasq a stocké les données, et toutes les recherches effectuées par la suite ont été instantanées en raison de l’utilisation du cache stocké. Le redémarrage de dnsmasq est nécessaire si vous souhaitez supprimer le cache DNS stocké.

Emballer

Dans cet article, nous avons vu comment installer et configurer dnsmasq pour qu’il fonctionne comme un serveur DNS local. Vous pouvez également être intéressé par la modification des serveurs DNS pour une navigation plus rapide dans différents systèmes d’exploitation.