刷新本地DNS缓存可以解决HTTP错误并保护您免受DNS欺瞒。以下是在Linux上执行此操作的方式。当您使用域名访问网站时,您的系统会向DNS服务器发送恳求以获取该域的IP地址。此域IP地址对保存在DNS缓存中供之后使用,因而您何必每次都向DNS服务器发送恳求以完善联接。但有时,本地DNS缓存会毁坏并造成HTTP错误。辛运的是,在Linux计算机上刷新和重建DNS缓存十分简单。这是怎么做到的。
为何要在Linux上刷新DNS缓存?
您可能想要重建存贮在系统上的DNS缓存的缘由有多种。其实您有一个过时的DNS记录,并希望从DNS服务器重新获取它。或则linux dns 刷新linux dns 刷新,您的系统可能已遭到恐吓长春linux培训,而且您希望确保DNS缓存未被篡改,亦称为DNS欺瞒。当您刷新DNS缓存时,系统必须再度pingDNS服务器并从中获取新的域IP地址记录,因而在此过程中删掉任何过时或损坏的数据。
怎样在Linux上查看本地DNS缓存
在systemd之前,大多数Linux发行版都没有系统范围的DNS缓存,除非像dnsmasq或nscd这样的程序是自动设置的。systemd附送systemd-solved,这是一项将域名解析为IP地址并缓存DNS条目的服务。以下各节将指导您怎么查看由systemd解析、nscd和dnsmasq生成的DNS缓存内容,便于您在决定刷新缓存数据之前了解缓存的数据。
查看系统解析的DNS缓存
要查看systemd解析的缓存记录,您须要先暂时中止服务,之后将其日志导入到文件中。首先发送SIGUSR1讯号以中止systemd解析的服务:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo killall -USR1 systemd-resolved
[sudo] linuxmi 的密码:
使用journalctl命令和标准输出运算符将输出保存到文本文件:相关:怎样使用journalctl查看和剖析Systemd日志
linuxmi@linuxmi ~/www.linuxmi.com
% sudo journalctl -u systemd-resolved > ~/cache.txt
linuxmi@linuxmi ~/www.linuxmi.com
之后,您可以使用Vim等文本编辑器查看文件的内容:
在文件中linux文件系统,搜索“CACHE:”,技巧是按Escape,键入“/CACHE:”,之后按Enter键。“CACHE:”下列出的所有DNS记录都是本地DNS缓存的一部份。假如您使用的是Vim,请按n跳转到下一组DNS条目。
查看nscd的本地DNS缓存
要查看nscd生成的本地缓存,您须要使用string命令读取nscd主机数据库的内容。在基于Debian和Ubuntu的发行版上,此文件坐落/var/cache/nscd/hosts。运行以下命令以查看文件:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo strings /var/cache/nscd/hosts | uniq
要查看有关nscdDNS高速缓存的通常统计信息,请使用-g标志:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo nscd -g
显示由dnsmasq生成的DNS缓存
dnsmasq将DNS缓存储存在显存中,因而获取准确的记录并不容易。并且您可以向dnsmasq发送中止讯号并记录其输出以获取处理的DNS查询数。因此,首先,使用systemctl命令确保dnsmasq已启动并正在运行:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo systemctl status dnsmasq
假如状态显示“活动Active”,请运行以下命令以中止该服务:
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
怎样在Linux上刷新DNS缓存
刷新DNS缓存意味着从计算机中删掉缓存的DNS记录。这会强制它向DNS服务器发送恳请以检索新的DNS条目。以下是在Linux上刷新DNS缓存的方式:
使用systemd解析
您可以使用resolvectl命令刷新systemd解析储存的DNS缓存:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo resolvectl flush-caches
假如您运行的是Ubuntu17.04或18.04,请使用systemd解析的命令刷新缓存:
sudo systemd-resolved --flush-caches
在Linux上刷新nscdDNS缓存
删掉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
删掉dnsmasqDNS缓存
刷新dnsmasq生成的DNS缓存很简单。因为缓存储存在显存中,因而重新启动服务会删掉所有储存的条目。要重新启动dnsmasq,请运行以下systemctl命令:
sudo systemctl restart dnsmasq
或则,发出以下命令:
service dnsmasq restart
假如出现提示,请输入管理员密码。dnsmasq如今将重新启动,所有现有的DNS条目将从缓存中删掉。刷新DNS缓存后,最好查看本地缓存条目并验证数据是否已成功删掉。您可以使用dig(许多网路故障排除Linux命令之一),并检测输出中的“查询时间”值。假如超过0微秒,则缓存已成功消除(0微秒表示域记录仍在缓存中)。
dig google.com
去除微软浏览器的DNS缓存
您常常使用的Web浏览器也会缓存DNS记录。输入URL时,系统会在本地浏览器缓存中搜索缓存条目。倘若未找到,它将检测本地系统缓存中的记录。消除Web浏览器的DNS缓存至关重要,由于它的优先级低于系统范围的缓存。为了演示,让我们刷新微软浏览器中的DNS缓存。在其他浏览器上也有一些方式可以做到这一点,所以最好Google一下怎样使用你使用的浏览器做到这一点。首先,在URL栏中键入“chrome://net-internals/#dns”并按Enter键:
单击去除主机缓存Clearhostcache以消除储存在微软浏览器中的DNS条目。
链接:
本文链接: