如何清理不同 Linux 系统的 DNS 缓存

本文最后更新时间 ☞

对于 Linux 来说,没有针对 DNS 服务器的单一标准,每种发行版都有所不同,因此需要根据不同的系统进行操作,不过基本上都大同小异。

大多数现代发行版都使用了 systemd-resolvenscd,有些可能也会用到 dnsmasqBIND

一般情况下,清除 DNS 缓存都不太复杂,也不需要重启整个系统。对于基于 Debian 的发行版,可以使用 systemd 内置函数来清除缓存。下面分享一下不同系统可以使用的方法。

systemd-resolve

基于 Ubuntu、Debian 的各种发行版一般使用的是 systemd-resolve。 这是 systemd 中内置的一个 DNS 守护程序。 在 Ubuntu 系统中执行如下命令来让 systemd 刷新清除缓存:

Flush DNS Cache Systemd

sudo systemd-resolve --flush-caches

执行完后可通过以下命令来检查是否成功清除缓存:

DNS Cache Stats Systemd

sudo systemd-resolve --statistics

如果 Cache Size0 ,则缓存已经成功清理。

nscd

Flush DNS Cache NSCD

如果使用的是其他发行版,则有可能用到 nscd 。 这是 Red Hat 发行版和 Arch Linux 的选择。在这些系统中只需要重新启动服务即可清除缓存。使用如下命令来进行操作:

sudo systemctl restart nscd

dnsmasq

dnsmasq 在服务器上经常用到,它非常适合本地 DNS 服务器,在路由器上也经常被使用。 与 nscd 一样, dnsmasq 只需要重新启动服务即可。使用如下命令来进行操作:

sudo systemctl restart dnsmasq

named

BIND 是比较老的选择了。 现在使用它的发行版不多,但可能也会遇到。 BIND 目前仍用于专用的 DNS 服务器。使用如下命令来进行操作:

sudo systemctl restart named

发表评论