Le vidage du cache DNS local peut résoudre les erreurs HTTP et vous protéger contre l'usurpation DNS. Voici comment vous pouvez le faire sous Linux.
Lorsque vous accédez à un site Web en utilisant son nom de domaine, votre système envoie une demande à un serveur DNS pour obtenir l'adresse IP de ce domaine. Cette paire domaine-adresse IP est enregistrée dans le cache DNS pour une utilisation ultérieure afin que vous n'ayez pas à envoyer de requêtes au serveur DNS à chaque fois pour établir une connexion.
Mais parfois, le cache DNS local est corrompu et provoque des erreurs HTTP. Heureusement, vider et reconstruire le cache DNS sur un ordinateur Linux est simple. Voici comment procéder.
Pourquoi vider le cache DNS sous Linux?
Il existe plusieurs raisons pour lesquelles vous souhaiterez peut-être reconstruire le cache DNS stocké sur votre système. Peut-être avez-vous un enregistrement DNS obsolète pour un site Web et souhaitez-vous le récupérer à partir du serveur DNS. Ou peut-être que votre système a été compromis et que vous voulez vous assurer que le cache DNS n'a pas été altéré, également
connu sous le nom d'usurpation de DNS.Lorsque vous videz votre cache DNS, le système doit à nouveau envoyer un ping au serveur DNS et en obtenir le nouvel enregistrement d'adresse IP de domaine, en supprimant toutes les données obsolètes ou compromises au cours du processus.
Comment afficher le cache DNS local sous Linux
Avant systemd, la plupart des distributions Linux n'avaient pas de mise en cache DNS à l'échelle du système, à moins qu'un programme comme dnsmasq ou nscd ait été configuré manuellement. systemd est livré avec systemd-resolved, un service qui résout les noms de domaine en adresses IP et met en cache les entrées DNS.
Les sections suivantes vous guideront sur la façon d'afficher le contenu du cache DNS généré par systemd-resolved, nscd et dnsmasq, afin que vous puissiez comprendre les données mises en cache avant de décider de les vider.
Afficher le cache DNS pour résolu par systemd
Pour afficher les enregistrements de cache résolus par systemd, vous devez d'abord arrêter temporairement le service, puis exporter ses journaux dans un fichier.
Commencez par envoyer un signal SIGUSR1 pour tuer le service résolu par systemd :
sudo killall -USR1 résolu par systemd
Utiliser la commande journalctl et l'opérateur de sortie standard pour enregistrer la sortie dans un fichier texte :
sudo journalctl -u systemd-résolu > ~/cache.txt
Vous pouvez ensuite afficher le contenu du fichier à l'aide d'un éditeur de texte comme Vim :
vim ~/cache.txt
Dans le fichier, recherchez "CACHE :" en appuyant sur S'échapper, en tapant "/CACHE:", et frapper Entrer. Tous les enregistrements DNS répertoriés sous CACHE : font partie du cache DNS local. Presse n pour passer à l'ensemble d'entrées DNS suivant si vous utilisez Vim.
Afficher le cache DNS local pour nscd
Pour afficher le cache local généré par nscd, vous devez lire le contenu de la base de données des hôtes nscd à l'aide de la commande strings.
Sur les distributions basées sur Debian et Ubuntu, ce fichier se trouve à /var/cache/nscd/hosts. Exécutez la commande suivante pour afficher le fichier :
chaînes sudo /var/cache/nscd/hosts | unique
Pour afficher les statistiques générales sur le cache DNS nscd, utilisez le -g drapeau:
sudo nscd-g
Afficher le cache DNS généré par dnsmasq
dnsmasq stocke le cache DNS en mémoire, il n'est donc pas facile d'obtenir les enregistrements exacts. Mais vous pouvez envoyer un signal d'arrêt à dnsmasq et enregistrer sa sortie pour obtenir le nombre de requêtes DNS traitées.
Pour ce faire, assurez-vous d'abord que dnsmasq est opérationnel en en utilisant la commande systemctl:
statut sudo systemctl dnsmasq
Si l'état indique Actif, exécutez la commande suivante pour arrêter le service :
sudo pkill -USR1 dnsmasq
À l'aide de la commande journalctl, extrayez les journaux dnsmasq et enregistrez-les dans un fichier texte :
sudo journalctl -u dnsmasq > ~/cache.txt
Enfin, visualisez le contenu du fichier à l'aide d'un utilitaire de visualisation de fichiers comme chat ou moins :
chat ~/cache.txt
Comment vider le cache DNS sous Linux
Vider le cache DNS signifie supprimer les enregistrements DNS mis en cache de votre ordinateur. Cela l'oblige à envoyer une requête au serveur DNS pour récupérer les nouvelles entrées DNS.
Voici comment vider le cache DNS sous Linux :
Utilisation résolue par systemd
Vous pouvez utiliser la commande resolvectl pour vider le cache DNS stocké par systemd-resolved :
caches de vidage sudo resolvectl
Si vous utilisez Ubuntu 17.04 ou 18.04, utilisez la commande systemd-resolved pour vider le cache :
sudo résolu par systemd --flush-caches
Vider le cache DNS nscd sous Linux
Le moyen le plus pratique de supprimer le cache DNS pour nscd consiste simplement à redémarrer le service. Vous pouvez le faire en exécutant :
sudo /etc/init.d/nscd redémarrage
Si cela ne fonctionne pas, vérifiez d'abord si le cache local stocké sur votre PC est persistant. Vous pouvez utiliser le -g drapeau pour le vérifier:
sudo nscd-g
Si c'est le cas, utilisez le -je flag avec la commande nscd pour effacer les enregistrements (je représente invalider):
sudo nscd -i hôtes
Supprimer le cache DNS dnsmasq
Vider le cache DNS généré par dnsmasq est simple. Le cache étant stocké en mémoire, le redémarrage du service supprime toutes les entrées stockées.
Pour redémarrer dnsmasq, exécutez la commande systemctl suivante :
sudo systemctl redémarrer dnsmasq
Ou lancez la commande suivante :
redémarrage du service dnsmasq
Entrez le mot de passe administrateur si vous y êtes invité. dnsmasq va maintenant redémarrer et toutes vos entrées DNS existantes seront supprimées du cache.
Après avoir vidé le cache DNS, il est préférable d'afficher les entrées du cache local et de vérifier si les données ont été supprimées avec succès. Vous pouvez utiliser dig, l'un des de nombreuses commandes Linux de dépannage réseau, et vérifiez la valeur de l'heure de la requête dans la sortie. S'il est supérieur à 0 msec, le cache a été effacé avec succès (0 msec signifie que l'enregistrement de domaine est toujours dans le cache).
creuser google.com
Effacer le cache DNS de Google Chrome
Le navigateur Web que vous utilisez fréquemment met également en cache les enregistrements DNS. Lorsque vous entrez une URL, le système recherche une entrée de cache dans le cache du navigateur local. S'il n'est pas trouvé, il recherche les enregistrements dans le cache du système local. Il est crucial d'effacer le cache DNS de votre navigateur Web car il a une priorité plus élevée que le cache à l'échelle du système.
Pour la démonstration, vidons le cache DNS dans Google Chrome. Il existe également des moyens de le faire sur d'autres navigateurs, il est donc préférable de rechercher sur Google comment le faire pour le navigateur que vous utilisez.
Pour commencer, tapez "chrome://net-internals/#dns" dans la barre d'URL et appuyez sur Entrer:
Cliquez sur Effacer le cache de l'hôte pour effacer les entrées DNS stockées dans Google Chrome.
Linux est le meilleur système d'exploitation pour apprendre le réseautage
Linux peut sembler compliqué au début, mais si vous investissez du temps pour apprendre comment cela fonctionne, vous réaliserez rapidement qu'il est fantastique, et peut-être même meilleur que Windows ou macOS.
La plupart des serveurs en ligne exécutent Linux, et c'est l'une des raisons pour lesquelles Linux est idéal si vous souhaitez apprendre le réseautage ou savoir comment fonctionnent les ordinateurs en général.