En vidant votre cache DNS local, vous pouvez résoudre les erreurs HTTP et vous protéger contre l'usurpation d'identité DNS. Voici comment procéder sous Linux.
Lorsque vous visitez un site Web en utilisant un nom de domaine, votre système envoie une requête au serveur DNS pour obtenir l'adresse IP de ce domaine. Cette paire d'adresses IP de domaine est enregistrée dans le cache DNS pour une utilisation ultérieure, vous n'avez donc pas besoin d'envoyer une requête 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 est très simple dans les systèmes d'exploitation Linux. Voici comment procéder.
Il existe plusieurs raisons pour lesquelles vous souhaiterez peut-être reconstruire le cache DNS stocké sur votre système. Si votre enregistrement DNS est obsolète, vous souhaiterez peut-être le récupérer à partir du serveur DNS. De plus, si vous craignez que votre système ait été compromis, vous souhaiterez peut-être vous assurer que le cache DNS n'a pas été falsifié, également appelé usurpation DNS.
Lorsque vous videz le cache DNS, le système doit à nouveau envoyer une requête ping au serveur DNS et en obtenir un nouvel enregistrement d'adresse IP de domaine, supprimant ainsi toutes les données obsolètes ou corrompues.
Avant systemd, la plupart des distributions Linux n'avaient pas de cache DNS à l'échelle du système, sauf si les programmes comme dnsmasq ou nscd sont configurés manuellement. systemd est livré avec systemd-solved, 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 l'analyse systemd, nscd et dnsmasq afin que vous puissiez comprendre les données mises en cache avant de décider de rafraîchir les données mises en cache.
Pour afficher les enregistrements de cache résolus par systemd, vous devez mettre temporairement fin au service, puis exporter ses journaux dans le fichier.
Envoyez d'abord le signal SIGUSR1 pour terminer le service résolu par systemd :
linuxmi@linuxmi ~/www.linuxmi.com % sudo killall -USR1 systemd-resolved[sudo] linuxmi 的密码:
Utilisez la commande journalctl et l'opérateur de sortie standard pour enregistrer la sortie dans un fichier texte : #🎜 🎜#
linuxmi@linuxmi ~/www.linuxmi.com % sudo journalctl -u systemd-resolved > ~/cache.txtlinuxmi@linuxmi ~/www.linuxmi.com
Vous pouvez ensuite utiliser un éditeur de texte tel que Vim pour visualiser le contenu du fichier : Fichiers, recherchez « CACHE : » en appuyant sur Echap, en tapant "/CACHE:", puis en appuyant sur Entrée. Tous les enregistrements DNS répertoriés sous « CACHE : » sont inclus dans le cache DNS local. Si vous utilisez Vim, appuyez sur la touche n pour passer à l'ensemble d'entrées DNS suivant.
Afficher le cache DNS local de nscdPour afficher le cache local généré par nscd, vous devez utiliser la commande string pour lire le contenu de la base de données hôte nscd.
Sur les distributions basées sur Debian et Ubuntu, ce fichier se trouve dans /var/cache/nscd/hosts. Exécutez la commande suivante pour afficher le fichier :linuxmi@linuxmi ~/www.linuxmi.com % sudo strings /var/cache/nscd/hosts | uniq
Pour afficher les statistiques générales sur le cache DNS nscd, utilisez l'indicateur -g :
linuxmi@linuxmi ~/www.linuxmi.com % sudo nscd -g
Afficher le cache DNS généré par dnsmasq
Il n'est pas facile d'obtenir les enregistrements exacts car dnsmasq stocke le cache DNS en mémoire. Vous pouvez envoyer un signal kill à 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 à l'aide de la commande systemctl :
linuxmi@linuxmi ~/www.linuxmi.com % sudo systemctl status dnsmasq
Si l'état dit "Actif" Actif", veuillez exécuter la commande suivante pour mettre fin au service :
linuxmi@linuxmi ~/www.linuxmi.com % sudo pkill -USR1 dnsmasq
使用 journalctl 命令,提取 dnsmasq 日志并将它们保存到文本文件中:
linuxmi@linuxmi ~/www.linuxmi.com % sudo journalctl -u dnsmasq > ~/cache.txt
最后,使用文件查看实用程序(如 cat 或更少)查看文件的内容:
linuxmi@linuxmi ~/www.linuxmi.com % cat ~/cache.txt
刷新 DNS 缓存意味着从计算机中删除缓存的 DNS 记录。这将迫使它向DNS服务器发送请求,以获取新的DNS条目。
以下是在 Linux 上刷新 DNS 缓存的方法:
您可以使用 resolvectl 命令刷新 systemd 解析存储的 DNS 缓存:
linuxmi@linuxmi ~/www.linuxmi.com % sudo resolvectl flush-caches
如果您运行的是 Ubuntu 17.04 或 18.04,请使用 systemd 解析的命令刷新缓存:
sudo systemd-resolved --flush-caches
删除 nscd 的 DNS 缓存的最便捷方法是重新启动服务。您可以通过运行以下命令来执行此操作:
linuxmi@linuxmi ~/www.linuxmi.com % sudo /etc/init.d/nscd restart
如果这不起作用,首先,检查存储在PC上的本地缓存是否持久。您可以使用 -g 标志进行验证:
sudo nscd -g
如果是这种情况,请使用带有 nscd 命令的 –i 标志来清除记录(i 代表 invalidate):
linuxmi@linuxmi ~/www.linuxmi.com % sudo nscd -i hosts
刷新 dnsmasq 生成的 DNS 缓存很简单。由于缓存存储在内存中,因此重新启动服务会删除所有存储的条目。
要重新启动 dnsmasq,请运行以下 systemctl 命令:
sudo systemctl restart dnsmasq
或者,发出以下命令:
service dnsmasq restart
如果出现提示,请输入管理员密码。现在要重新启动 dnsmasq,所有缓存中存在的 DNS 条目将被清除。
建议刷新 DNS 缓存后,检查本地缓存条目以确认数据已经成功删除。您可以使用 Linux 命令之一的 dig 来进行网络故障排除,并查看输出中的“查询时间”值。假如超过 0 毫秒,则说明缓存已经成功清除(若为 0 毫秒,则表示域记录仍存在于缓存中)。
dig google.com
您经常使用的 Web 浏览器也会缓存 DNS 记录。输入 URL 时,系统会在本地浏览器缓存中搜索缓存条目。如果未找到,它将检查本地系统缓存中的记录。清除 Web 浏览器的 DNS 缓存非常重要,因为它优先于系统范围的缓存。
为了演示,让我们刷新谷歌浏览器中的DNS缓存。在其他浏览器上也有一些方法可以做到这一点,所以最好 Google 一下如何使用你使用的浏览器做到这一点。
首先,在URL栏中键入“chrome://net-internals/#dns”并按Enter键:
点击“清除主机缓存”按钮来清除谷歌浏览器中存储的DNS条目。
Linux 乍一看可能看起来很复杂,但如果你花一些时间来学习它是如何工作的,你很快就会意识到它很棒,甚至可能比 Windows 或 macOS 更好。
大多数在线服务器都运行 Linux,如果您想学习网络或想知道计算机通常如何工作,这也是 Linux 理想选择的原因之一。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!