10 jeux amusants à jouer dans le terminal Linux
Agence web » Actualités du digital » Comment vider le DNS sous Linux

Comment vider le DNS sous Linux

Vous pouvez vider le cache DNS sur un ordinateur Linux basé sur systemd avec la commande « resolvectl flush-caches ». Si vous utilisez dnsmasq, vous pouvez effacer le DNS en utilisant « sudo killall -HUP dnsmasq » à la place.

Votre expérience de navigation sur Internet est-elle lente sur votre appareil Linux, ou les sites Web que vous visitez sont-ils obsolètes ou le mauvais site Web ? Discutons du vidage du cache DNS sous Linux et comment savoir si vous en avez vraiment besoin.

Que sont les caches DNS ?

Le service de nom de domaine est la magie qui convertit les noms en nombres. Il prend les noms de réseau de périphériques et les noms de sites Web et recherche leurs adresses IP. Le réseau peut alors utiliser l’adresse IP pour acheminer correctement le trafic vers ces appareils ou sites.

Ces recherches, connues sous le nom de demandes, ne se produisent pas instantanément. Il y a une petite période de temps finie impliquée. Les requêtes DNS Internet peuvent nécessiter l’interrogation de serveurs DNS précurseurs, de serveurs de noms racine, de serveurs de domaine de niveau supérieur et de serveurs de noms faisant autorité. Les requêtes DNS sont rapides, mais pour les rendre encore plus rapides, les réponses aux requêtes DNS récentes sont mises en cache sur les serveurs précurseurs DNS.

Si la réponse à une requête DNS se trouve dans le cache du serveur précurseur, aucun autre serveur n’a besoin d’être contacté. La réponse est renvoyée depuis le cache du serveur précurseur. De même, un petit cache est maintenu par votre routeur haut débit à la maison. Si vous demandez un périphérique réseau local en utilisant son nom de périphérique réseau, votre routeur fournit l’adresse IP. Il peut également mettre en cache les réponses qu’il a reçues de serveurs DNS externes.

Généralement, les réseaux et les ordinateurs Linux sont configurés pour utiliser des services DNS externes, soit fournis par votre fournisseur d’accès Internet, soit par un service gratuit tel que OpenDNS ou Google DNS. Il y a de bonnes raisons pour lesquelles certaines personnes utilisent leur propre serveur DNS, mais la plupart d’entre nous ne le font pas. Cependant, votre ordinateur Linux, même s’il n’exécute pas de serveur DNS, peut éventuellement mettre en cache les résultats des requêtes DNS.

Le problème avec l’utilisation des données mises en cache est que tout repose sur l’hypothèse qu’aucun des détails mis en cache n’a changé depuis qu’ils ont été mis en cache. Si les détails ont changé, les informations que vous recevrez seront obsolètes.

Si une entrée de cache ou l’intégralité du cache est corrompue, vous obtiendrez au mieux des performances médiocres et au pire des vulnérabilités de sécurité. C’est à ce moment-là que vous voudrez vous pencher sur le « vidage » ou l’effacement du cache DNS.

Votre ordinateur utilise-t-il un cache DNS local ?

Certains de nos ordinateurs de test avaient des caches DNS locaux activés, et d’autres l’avaient désactivé. Il était désactivé sur notre ordinateur Manjaro 21, mais il était activé par défaut sur Fedora 37 et Ubuntu 22.10.

Pour déterminer si votre ordinateur Linux met en cache les requêtes DNS, utilisez le is-active option de la systemctl commande. Le démon qui gère le cache DNS est le gestionnaire de résolution de noms de réseau systemd, connu sous le nom de systemd-resolved.

systemctl is-active systemd-resolved

Utilisation de la commande systemctl pour vérifier si la mise en cache DNS est active

Si la réponse est « active », la mise en cache DNS est en cours. Si la réponse est « inactif », ce n’est pas le cas. Sur cet ordinateur particulier, il est actif. Nous pouvons utiliser le resolvectl commande avec l’option de statistiques pour voir combien d’enregistrements sont dans le cache.

resolvectl statistics

en utilisant la commande resolvectl pour afficher les statistiques de mise en cache DNS

Nous pouvons voir qu’il y a 330 entrées dans le cache DNS de cet ordinateur.

Examen de votre cache DNS

L’examen des entrées du cache DNS n’est pas une condition préalable au vidage du cache, et si vous n’avez aucun intérêt à le faire, vous pouvez ignorer toute cette étape. Parfois, cependant, cela peut être informatif. Vous pouvez voir des entrées brouillées qui indiquent une corruption, ou vous pouvez voir des messages d’erreur liés à des problèmes d’adressage de périphérique sur votre réseau.

Maintenant, il n’y a pas de moyen simple de voir ces entrées. Nous pouvons le faire, mais nous devons être un peu créatifs. USR1ou signal numéro un défini par l’utilisateurest un signal qui peut être envoyé par le kill et killall commandes. Ce signal n’a pas de signification prédéfinie. Les applications sont libres d’ignorer ce signal ou de réagir de la manière que les développeurs ont implémentée.

La systemd-resolved démon réagit à USR1 en écrivant son cache dans les journaux système. On peut alors utiliser le journalctl commande pour filtrer les entrées DNS.

Nous utiliserons le killall commande avec USR1 Pour envoyer le signal au systemd-resolved démon. Notez que même si nous utilisons le killall commande, le systemd-resolved démon continue de fonctionner. Ce n’est pas un signal de terminaison que nous envoyons.

sudo killall -USR1 systemd-resolved

Envoi du signal USR1 au démon résolu par systemd

Nous allons maintenant utiliser le journalctl commande avec le -u (filtrer par systemd unité) option pour extraire les entrées de journal qui ont été générées par systemd-resolved . Nous allons rediriger cette sortie dans un fichier texte appelé « dns.txt ».

sudo journalctl -u systemd-resolved > dns.txt

Filtrer les entrées de journal résolues par systemd et les envoyer dans un fichier

Nous utiliserons le less visualiseur de fichiers pour afficher le contenu du fichier.

less dns.txt

Vous pourrez trouver les mappages mis en cache entre les noms de domaine et les adresses IP en faisant défiler et en recherchant dans le texte.

Nous pouvons voir une entrée pour Google qui a une adresse IP de 216.58.212.196. Vous pouvez vérifier cela en mettant l’adresse IP dans un navigateur Web. Vous devriez voir la page d’accueil de la recherche Google.

Comment vider le cache DNS sous Linux

Le vidage du cache supprime toutes les entrées et redémarre le processus de collecte. S’il y en a, cela supprime de force les entrées incorrectes et corrompues du cache.

La commande est simple ; nous utilisons resolvectl avec le flush-caches option.

resolvectl flush-caches

Vider le cache DNS avec la commande resolvectl

Nous revenons silencieusement à la ligne de commande. Pour confirmer que quelque chose s’est réellement passé, nous vérifierons à nouveau les statistiques du cache DNS.

resolvectl statistics

Les statistiques de cache indiquant que la taille du cache ont été réduites à zéro

Nous pouvons voir que la taille du cache est tombée à zéro. Il augmentera au fil du temps à mesure qu’il accumule de nouvelles entrées.

Comment vider le cache dnsmasq sous Linux

La dnsmasq L’application fournit un cache DNS et un serveur DHCP. Il est populaire auprès des utilisateurs qui souhaitent exécuter leur propre serveur DNS, en particulier sur des installations non systemd.

Rincer le dnsmasq Le cache DNS est facile. Nous devons envoyer le SIGHUP signal qui indique au dnsmasq démon pour réinitialiser efficacement. Cela efface son cache DNS. Pour envoyer le signal, nous utilisons le killall commande avec le -HUP drapeau et le nom de l’application.

sudo killall -HUP dnsmasq

Vidage du cache DNS de l'application dnsmasq

Rincé, avec succès

Bien sûr, si votre ordinateur ne met pas du tout en cache, vous n’avez rien à vérifier.

S’il met en cache les requêtes DNS mais que tout fonctionne correctement, vous pouvez également l’ignorer. Mais si vous rencontrez des mises à jour de pages Web lentes ou sporadiques lorsque vous naviguez sur le Web, ou si vous voyez les mauvaises pages Web, c’est probablement le bon moment pour vider votre cache DNS.

★★★★★