如何在 Linux 中清除或刷新 DNS 缓存

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

内容

  1. 为什么要清除或刷新 DNS 缓存?
  2. 在 Linux 中清除或刷新 DNS 缓存
    1. 1.清除Systemd-resolve DNS缓存服务
    2. 2.清除Nscd DNS缓存服务
    3. 3.清除绑定/命名DNS缓存服务
    4. 4.清除Dnsmasq DNS缓存服务

为什么要清除或刷新 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.清除Systemd-resolve DNS缓存服务

系统解析 是 systemd 服务,为本地应用程序提供系统级 DNS 缓存服务。 它是默认安装的 systemd 软件包的一部分。 在大多数现代 Linux 操作系统中默认启用 Systemd-resolved 服务,例如 Fedora 和 Ubuntu。 首先,让我们使用命令检查 systemd-resolved 服务是否处于活动状态:

$ sudo systemctl is-active systemd-resolved.service

如果启用了 systemd-resolved 服务,您将看到 “积极的” 在输出中。 如果它不活动,它将打印 “不活跃”.

检查 systemd-resolved 服务是否处于活动状态

正如您在上面的输出中看到的,systemd-resolved 服务在我的系统中处于活动状态。

让我们用命令查看 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
systemd-resolve 统计

如您所见,上面的输出列出了当前缓存大小、命中和未命中缓存的总数。

要刷新 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
显示 systemd-resolve 统计信息 显示 systemd-resolve 统计信息

2.清除Nscd DNS缓存服务

国家标准局, 短缺 n阿梅 服务 C疼痛 daemon 是一个缓存守护进程,为最常见的名称服务请求提供缓存。 它是大多数基于 Redhat 的系统的首选缓存服务。 如果您的 Linux 系统正在使用 nscd 缓存服务,您可以通过简单地重新启动 nscd 服务来清除或刷新本地 DNS 缓存服务,如下所示:

$ sudo systemctl restart nscd.service

或者,

$ sudo service nscd restart

或者,

$ sudo /etc/init.d/nscd restart

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

伯克利互联网域名 (不久 绑定) 是当今最流行的开源 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 缓存。 以下命令清除 ostechnix.com 域的 DNS 缓存:

$ sudo rndc flushname ostechnix.com

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

$ sudo rndc flush lan
$ sudo rndc flush wan

4.清除Dnsmasq DNS缓存服务

域名 是一个轻量级的 DHCP 和缓存 DNS 服务器,支持 PXE 和 TFTP 服务器。 适用于资源受限的路由器和防火墙来管理小型网络。

如果你使用 dnsmasq 作为缓存服务,你可以像下面这样刷新本地 DNS 缓存服务:

$ sudo systemctl restart dnsmasq

c的另一种方式在 Ubuntu 和其他 Ubuntu 变体(如 Linux Mint)中学习本地 DNS 缓存是运行以下命令:

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

希望这可以帮助。

相关阅读:

  • 在 Ubuntu 16.04 LTS 中安装和配置 DNS 服务器

DNSDNS CacheDomain Name SystemLinuxLinux 命令