Comment vider le cache DNS sous Linux ?
Table des matières
Peut-être avez-vous remarqué que les sites Web que vous visitez fréquemment se chargent beaucoup plus rapidement que les autres. Cela est dû au cache du navigateur et au cache DNS collecté par votre système d’exploitation Linux. Il permet à votre machine Linux de récupérer les informations DNS localement, au lieu d’attendre le résolveur DNS public.
Souvent, cependant, ce cache DNS peut devenir invalide ou corrompu. Cela peut entraîner des problèmes lors du chargement de votre site web dans le navigateur. Vous devez indiquer à Linux de vider le cache DNS dans de telles occasions.
Cet article se concentrera sur ce qu’est un cache DNS, comment déterminer le résolveur DNS utilisé par Ubuntu et comment vider le DNS sous Linux Ubuntu.
Qu’est-ce qu’un cache DNS ?
Le Système de nom de domaine (DNS) est un système de nommage global conçu pour mapper les noms de domaine à leurs adresses IP de serveur correspondantes. L’extrémité utilisateur du DNS s’appelle DNS résolveur (Stub Resolver) qui interroge le cache DNS en réduisant la charge sur les serveurs DNS en amont.
Le cache DNS est la base de données temporaire des traductions de domaine en IP que votre système d’exploitation (OS) collecte.
Les informations stockées dans le cache DNS sont constituées de Resource Records (RR) qui contiennent les adresses IP des noms de domaine que vous visitez fréquemment.
Ces enregistrements incluent des prérequis tels que Nom, Type d’enregistrement, Durée de vie (TTL), Classe, Données de la ressource et Longueur des données de la ressource. Durée de vie (TTL) fait référence à la durée (en secondes) pendant laquelle un enregistrement est considéré comme valide avant qu’une nouvelle recherche DNS ne soit lancée. Toutes ces données dans un fichier d’enregistrement sont en code ASCII, et il y a une ligne séparée pour chaque nom de domaine qu’il contient. Voici à quoi ressemble un format courant pour un enregistrement de ressource:
Lorsque vous essayez de charger un site web, votre navigateur envoie une requête à votre système d’exploitation lui indiquant qu’il a besoin de l’adresse IP pour ce nom de domaine. Le système d’exploitation envoie cette requête au résolveur DNS local pour trouver s’il y a un tel enregistrement de ressource dans le cache DNS.
S’il n’y a aucun enregistrement dans le cache local, le système d’exploitation lancera une recherche DNS sur le serveur DNS public et attendra de recevoir l’adresse IP du serveur de domaine. Une fois ces données fournies, le système d’exploitation les stocke dans le cache DNS pour une utilisation ultérieure.
Dans le cas où le cache DNS a un enregistrement pour le domaine en cours, le navigateur servira le contenu du site web plus rapidement. Par conséquent, le cache DNS rationalise le processus de recherche DNS et agit comme un accélérateur, améliorant ainsi votre expérience de navigation globale.
Cependant, comme nous l’avons mentionné précédemment, le cache DNS est une pile temporaire d’enregistrements DNS et, en tant que tel, il peut expirer ou être corrompu. Dans ce cas, il se peut que vous ne puissiez pas accéder à votre site Web ou à tout autre de vos sites Web préférés en raison de diverses erreurs DNS.
Ces erreurs peuvent être liées à des attaques de propagation DNS ou d’usurpation d’identité DNS. Vous pouvez aussi bien tenir compte du respect de votre vie privée, et réinitialiser fréquemment les enregistrements du cache DNS pourrait vous aider.
Pour corriger un problème de ce genre, vous devez forcer un vidage DNS sur votre machine Linux. Les informations obsolètes seront effacées et votre système d’exploitation commencera à générer de nouveaux enregistrements pour mettre en cache les résultats des autres requêtes DNS.
Trouvez votre résolveur DNS local
Différentes versions de la distribution Linux la plus couramment utilisée, Ubuntu, peuvent utiliser divers services comme résolveur DNS. La plupart des systèmes Linux utilisent systemd-resolved ou dnsmasq comme application de résolution DNS.
Par conséquent, la première chose que vous devez faire avant de commencer un vidage DNS sous Linux est de vérifier quel résolveur DNS votre système utilise.
Pour ce faire, vous devez charger Terminal , et le moyen le plus simple est d’utiliser la combinaison de touches Ctrl + Alt + T.
Saisissez ensuite la commande suivante:
sudo lsof -i:53 -S
La commande affichera tous les services à l’écoute du port 53 – le port du serveur réservé au DNS. De cette façon, vous pouvez voir quel est le résolveur DNS que Linux utilise pour vider son cache DNS.
Comme le montre la capture d’écran ci-dessus, sur la version la plus récente d’Ubuntu (22.04), le service qui écoute sur le port DNS 53 est systemd-resolved. C’est la configuration pour toutes les versions d’Ubuntu depuis la version 18.04.
Les versions précédentes peuvent fonctionner avec le résolveur DNS dnsmasq , et si tel est le cas pour vous, la sortie de la commande ressemblera à la capture d’écran ci-dessous:
Après avoir déterminé quel résolveur DNS votre système utilise, vous pouvez exécuter la commande de vidage DNS appropriée pour votre Linux.
Comment vider le cache DNS sous Linux ?
Dans cette section, vous trouverez ci-dessous les commandes que vous pouvez utiliser pour vider le cache DNS sur différentes configurations Linux.
Vider le DNS de Linux en utilisant
résolu par le système
Si votre système Linux est systemd-resolved service, vous pouvez utiliser une des commandes suivantes dans la fenêtre Terminal:
$ sudo resolvectl flush-caches
$ sudo systemd-resolve --flush-caches
Notez qu’aucune des commandes ci-dessus ne fournit de résultat pour confirmation. Cependant, vous pouvez utiliser les commandes correspondantes suivantes pour vérifier la valeur de la taille actuelle du cache.
$ sudo systemd-resolve --statistics
$ sudo resolvectl statistics
Voici à quoi ressemble la sortie avec la valeur Taille actuelle du cache:
Vider le cache DNS en utilisant les signaux
Vous pouvez également vider le cache DNS d’un système utilisant systemd-resolved en envoyant un signal « USR2 » au résolveur DNS.
$ sudo killall -USR2 systemd-resolved
Ensuite, utilisez le signal « USR1 » pour indiquer au service de transférer son état actuel dans systemd-journal). Pour ce faire, exécutez les deux commandes suivantes consécutivement. La sortie vous montrera le journal confirmant le vidage du cache.
$ sudo killall -USR1 systemd-resolved
$ sudo journalctl -r -u systemd-resolved
Vider le DNS à l’aide de dnsmasq
À condition que votre machine utilise « dnsmasq » pour résoudre DNS, vous pouvez exécuter la commande comme indiqué ci-dessous.
$ sudo killall -HUP dnsmasq
Comme l’exécution de cette commande n’affiche pas de confirmation, vous pouvez à nouveau utiliser un « USR1 » pour signaler le processus. Les statistiques seront enregistrées dans le fichier « syslog ». L’utilisation de la commande « tail » vous indiquera que la taille du cache est 0.
$ sudo killall -USR1 dnsmasq
$ tail -f n1000 /var/log/syslog |grep "taille du cache"
Dnsmasq exécutant un service
À certaines occasions, Dnsmasq peut fonctionner en tant que service sur votre serveur. Pour vérifier si le dnsmasq est actif, vous pouvez exécuter cette commande:
$ sudo systemctl is-active dnsmasq
Pour les systèmes basés sur SysVinit, vous pouvez voir si dnsmasq est activé et exécuter la commande ci-dessous:
$ sudo service dnsmasq status
Selon le type de configuration de votre système, vous pouvez utiliser l’une des deux commandes suivantes pour redémarrer le service.
$ sudo systemctl restart dnsmasq
$ sudo service dnsmasq restart
Redémarrer le service Dnsmasq réinitialisera le cache collecté dans votre système.
Vider le cache DNS en utilisant Nscd dans RedHat
Si vous utilisez la distribution RedHat Linux, elle exécute très probablement le démon de cache du serveur de noms ( Nscd ). Vous pouvez vider le cache DNS de ce service en exécutant une des commandes décrites ici.
$ sudo systemctl restart nscd.service
$ sudo service nscd restart
Vider le cache DNS sur Google Chrome
Outre le cache DNS du système d’exploitation, le navigateur Google Chrome empile également le cache DNS. Pour vous assurer que le cache DNS de Chrome ne vous empêche pas d’accéder à votre site web, vous devez le vider.
Vous devez ouvrir le navigateur Chrome et coller ceci dans la barre d’adresse:
chrome://net-internals/#dns
Vous serez alors redirigé vers la page des paramètres réseau internes de Chrome. Cliquez sur le bouton « Clear host cache » pour vider le cache.
En résumé, si vous rencontrez des erreurs DNS ou si vous avez affaire à une propagation DNS, vous devriez vider le cache DNS de Linux. De plus, vider ce cache peut aider à résoudre les problèmes d’usurpation d’identité DNS ou à créer une expérience réseau sécurisée pour vous-même. Suivre les étapes décrites dans cet article vous aidera à le faire de manière indépendante et à résoudre ces problèmes.