🌐如何在Linux上清除或清除DNS缓存

本快速指南介绍了在Linux操作系统上清除DNS缓存的所有可能方法。 对于那些想知道的人,DNS缓存(或有时称为DNS解析器缓存)是由操作系统维护的小型临时数据库。 它存储有关访问的所有网站以及Internet上其他域的信息。 换句话说,DNS缓存包含最新的DNS查询。 当您多次访问同一网站时,操作系统将从本地DNS缓存数据库而不是实际的公共DNS服务器中提取该网站的DNS记录。 因此,DNS缓存可以缩短网站的加载时间,并减少原始DNS服务器的带宽/ CPU消耗。

为什么要刷新或删除DNS缓存?

刷新本地DNS缓存有很多原因。

例如,您可能已经配置了网站或更改了域的DNS设置,或者在连接Internet时遇到问题。

在这种情况下,如果您尝试访问该站点,则您的操作系统很可能会从本地DNS缓存中获取该站点的缓存版本。

因此,刷新本地DNS缓存将删除本地DNS缓存数据库中的所有记录,并使您的系统使用来自真实DNS服务器的新记录重新填充DNS缓存,并显示网站的新副本。

如何在Linux上刷新DNS缓存

默认情况下,未在Linux操作系统级别安装和/或启用DNS缓存。

相反,诸如Web浏览器之类的应用程序会维护自己的内部缓存。

因此,您只需清除浏览器缓存或重新启动它即可解决Internet连接问题,解决DNS欺骗问题(例如使DNS缓存中毒)和修复过时的内容问题。

如果您的Linux发行版确实使用了任何DNS缓存服务,则需要按如下所述手动刷新它们。

有几种清除DNS缓存的方法。

这取决于您使用的Linux发行版和DNS缓存服务。

在这里,我包括了在Linux上刷新最常用的DNS缓存服务的说明。

1. DNS缓存服务Systemd-resolve。

Systemd-resolve是一项systemd服务,为本地应用程序提供系统级DNS缓存服务。

它是默认安装的systemd软件包的一部分。

默认情况下,在大多数现代Linux操作系统(例如Fedora和Ubuntu)上启用此服务。

首先,让我们使用以下命令检查systemd-resolved服务是否处于活动状态:

$ sudo systemctl is-active systemd-resolved.service

如果启用了systemd-resolved服务,则输出将显示“活动”。 如果未激活,系统将显示“不活跃”。

systemd解析的服务在我的系统上处于活动状态。

让我们使用以下命令查看systemd-resolve缓存服务的统计信息:

$ sudo systemd-resolve --statistics

输出:

DNSSEC supported by current servers: no

Transactions              
Current Transactions: 0   
  Total Transactions: 3117
                          
Cache                     
  Current Cache Size: 58  
          Cache Hits: 1248
        Cache Misses: 1891
                          
DNSSEC Verdicts           
              Secure: 0   
            Insecure: 0   
               Bogus: 0   
       Indeterminate: 0

🌐如何在Linux上清除或清除DNS缓存

如您所见,以上输出显示了当前缓存大小,命中数和丢失缓存的总数。

要清除systemd-resolve缓存,请运行:

$ sudo systemd-resolve --flush-caches

如果成功,您将看不到任何输出。

现在检查systemd-resolve统计信息,以查看是否已清除本地DNS缓存。

$ sudo systemd-resolve --statistics

现在您将看到当前缓存大小为零。

DNSSEC supported by current servers: no

Transactions              
Current Transactions: 0   
  Total Transactions: 3155
                          
Cache                     
  Current Cache Size: 0   
          Cache Hits: 1255
        Cache Misses: 1922
                          
DNSSEC Verdicts           
              Secure: 0   
            Insecure: 0   
               Bogus: 0   
       Indeterminate: 0

2.缓存DNS Nscd的服务。

Nscd,简称 ñ阿美 s服务 C疼痛 daemon是一个缓存守护程序,它为最常见的命名服务请求提供缓存。

对于大多数基于Redhat的系统,它是首选的缓存服务。

如果您的Linux系统使用的是nscd缓存服务,则可以通过简单地重新启动nscd服务来清除本地DNS缓存服务,如下所示:

$ sudo systemctl restart nscd.service

要么

$ sudo service nscd restart

要么

$ sudo /etc/init.d/nscd restart

3.绑定/命名DNS缓存服务。

伯克利互联网名称域名(简称BIND)是当今使用最广泛的开源DNS服务器。

如果使用BIND缓存DNS查询,请在Linux上使用以下命令刷新/重置BIND缓存服务:

$ sudo systemctl restart named

要么

$ sudo service named reload

要么

$ sudo /etc/init.d/named restart

要么

$ sudo rndc reload

要么

$ sudo rndc exec

最新版本的BID还允许您清除特定域的DNS缓存。 以下命令清除itsecforu.ru域的DNS缓存:

$ sudo rndc flushname itsecforu.ru

您还可以清除整个LAN和WAN区域的DNS缓存,如下所示:

$ sudo rndc flush lan
$ sudo rndc flush wan

4. Dnsmasq DNS缓存服务。

Dnsmasq是具有PXE和TFTP服务器支持的轻型DHCP服务器和缓存DNS服务器。

它适用于资源受限的路由器和防火墙来管理小型网络。

如果将dnsmasq用作缓存服务,则可以清除本地DNS缓存服务,如下所示:

$ sudo systemctl restart dnsmasq

在Ubuntu和其他Ubuntu风格(如Linux Mint)中清除本地DNS缓存的另一种方法是运行以下命令:

$ sudo /etc/init.d/dns-clean restart

Sidebar