如何在 Ubuntu 20.04 上刷新 DNS 缓存

DNS 服务器用于将域名转换为 IP 地址。 当您在浏览器的地址栏中输入网站名称时,您的系统不知道在哪里可以找到该地址。 它从 DNS 服务器请求这个地址。 DNS 服务器包含域名到 IP 地址的映射。 此域名到 IP 地址的映射会不时更改。

我们的系统还维护一个临时数据库,其中包含有关我们最近访问的站点的域到 IP 映射信息。 这个临时数据库称为 DNS 缓存。 它用于避免从本地存储的 DNS 缓存中更快地获取经常或最近访问的站点,而不是从 DNS 服务器中检索它们。

有时,需要刷新 DNS 缓存。 在缓存损坏并将您重定向到错误的网站等情况下,这是必需的。 当站点移动到不同的地址但您的浏览器仍在加载旧站点时,也需要它。 刷新 DNS 缓存会删除整个域到 IP 的映射条目,包括旧的和无效的记录。 下次系统尝试访问网站时,DNS 缓存会重新填充新条目。

让我们看看如何在 Ubuntu 上刷新 DNS 缓存。

笔记:这里描述的过程已经过测试 Ubuntu 20.04 LTS. 命令已在终端上执行,可以通过 Ctrl+Alt+T 捷径。

如何刷新 DNS 缓存

大多数 Ubuntu(18.04 和更高版本)和 Debian 系统使用 systemd-resolved 守护进程来缓存 DNS 查询。 我们还可以使用它来刷新 DNS 缓存。

1.检查“systemd-resolved”状态

让我们首先检查 systemd-resolved 是否正在运行。 执行以下命令:

$ sudo systemctl is-active systemd-resolved

如果你看到 ”积极的” 在上述命令的输出中,这意味着 systemd-resolved 正在您的系统上运行。

2.查看当前缓存大小

现在,如果您想查看当前缓存大小以及其他一些信息,请在终端中执行以下命令:

$ sudo systemd-resolve --statistics

以下是上述命令的输出,显示了不同的信息。 目前,我们只关心“当前缓存大小”,即 8. 我们要使缓存大小 0 通过冲洗它。

3.刷新DNS缓存

现在为了刷新 DNS 缓存,在终端中执行以下命令:

$ sudo systemd-resolve --flush-caches

4.验证缓存大小

然后,您可以查看统计信息以确保您的缓存大小现在为零:

$ sudo systemd-resolve --statistics

以下输出显示当前缓存大小为“0”,确认 DNS 缓存现在已被清除。