Comment vider le DNS sous Linux

fatmawati achmad zaenuri/Shutterstock.com

Vous pouvez vider le cache DNS sur un ordinateur Linux basé sur systemd à l’aide de la commande “resolvectl flush-caches”. Si vous utilisez dnsmasq, vous pouvez effacer le DNS avec “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 ce morceau de magie qui transforme les noms en chiffres. 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 utiliser l’adresse IP pour acheminer correctement le trafic vers ces appareils ou sites.

Ces recherches, connues sous le nom de demandes, n’arrive pas tout de suite. 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 accélérer encore plus, 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 serveur supplémentaire 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 conservé 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 fournira l’adresse IP. Il peut également mettre en cache les réponses qu’il reçoit des serveurs DNS externes.

En règle générale, 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 leurs propres serveurs 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 d’une requête DNS.

Le problème avec l’utilisation des données mises en cache est que tout dépend de 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 changent, 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 souhaitez examiner 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 est désactivé sur notre ordinateur Manjaro 21, mais il est 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 possibilité de systemctl ordre 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.

LIEN: Comment tuer les processus à partir du terminal Linux

Vérification de votre cache DNS

La vérification 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, il 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 de réponse de périphérique sur votre réseau.

Maintenant, il n’y a aucun moyen direct de voir ces entrées. Nous pouvons le faire, mais nous devons être créatifs. USR1o signal numéro un défini par l’utilisateurest un signal qui peut être envoyé par 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 toute manière mise en œuvre par les développeurs.

La systemd-resolved réaction du démon à USR1 en écrivant son cache dans les journaux système. Nous pouvons utiliser le journalctl commande pour filtrer les entrées DNS.

Nous utiliserons le killall commander avec USR1 Pour envoyer le signal à systemd-resolved démon Notez que même si nous utilisons le killall commander le systemd-resolved démon continue de fonctionner. Ce n’est pas un signal de fin 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 commander avec -u (filtrer par systemd unité) option pour récupérer les entrées de journal générées par systemd-resolved . Nous redirigerons cette sortie vers 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 visionneuse de fichiers pour afficher le contenu des fichiers.

less dns.txt

Vous pouvez trouver des mappages mis en cache entre les noms de domaine et les adresses IP en faisant défiler et en recherchant du 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 saisissant l’adresse IP dans un navigateur Web. Vous devriez voir la page d’accueil de la recherche Google.

Comment effacer le cache DNS sous Linux

Le vidage du cache supprime toutes les entrées et recommence le processus de collecte. Le cas échéant, il 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

Vidage du cache DNS à l'aide de la commande resolvectl

Nous sommes revenus tranquillement à 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 montrant la taille du cache sont 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. Ceci est populaire auprès des utilisateurs qui souhaitent exécuter leur propre serveur DNS, en particulier avec des installations non-systemd.

Rinçage de dnsmasq Le cache DNS est facile. Nous devons envoyer le SIGHUP signal, disant au dnsmasq démon pour redémarrer efficacement. Cela efface son cache DNS. Pour envoyer un signal, nous utilisons le killall commander avec -HUP drapeau et le nom de l’application.

sudo killall -HUP dnsmasq

Vidage du cache DNS de l'application dnsmasq

Rougissant, dans le succès

Bien sûr, si votre ordinateur n’a pas de cache, vous n’avez rien à vérifier.

S’il met en cache les requêtes DNS mais que tout le reste 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 peut-être le bon moment pour vider votre cache DNS.

Leave a Reply

Your email address will not be published. Required fields are marked *