在 Ubuntu 上刷新 DNS 缓存
DNS 的完整形式是域名系统。它用于将域名转换为IP地址。这看起来很简单,但没有它,互联网就不会是今天的样子。您能想象记住数千个 IP 地址吗?您能想象一个没有 google.com 或 yourwebsite.com 的世界吗? DNS 使我们对互联网的一切都变得非常容易。
本文是关于在 Ubuntu 上刷新 DNS 的。但要理解为什么有必要,首先您必须了解 DNS 的工作原理以及一些有关 DNS 缓存的知识。
DNS 的工作原理:
简单地说,DNS 可以被认为是一个域名和 IP 地址表,如下所示:
- linux教程
1.2.3.4
- support.linux教程
3.4.5.7
- google.com
8.9.5.4
- www.google.com
8.9.5.4
请注意,此表中的数据均不真实。这只是为了演示的目的。那么让我们回到最初的话题。
当您访问 linux教程 时,浏览器会向 DNS 服务器(在您的计算机上设置)询问一些问题。
你的电脑:嘿,你知道linux教程吗?
DNS 服务器: 不,我不知道。但 DNS 服务器 4.4.4.4 可能知道这一点。
您的计算机: 联系 DNS 服务器 4.4.4.4 并询问:“嘿,你知道 linux教程 吗? ”
DNS 服务器 2: 是的,我愿意。我能为你做什么?
您的计算机:我需要linux教程的IP地址。我可以拥有吗?
DNS 服务器 2:不用担心,这就是我在这里的原因。这是 linux教程 1.2.3.4 的 IP 地址。
你的电脑:你是一个救星。谢谢。
现在您的计算机连接到 1.2.3.4 并且您最喜欢的网站 linux教程 显示出来。那真的很难,不是吗?
下次您访问 linux教程 时,同样的事情会再次发生。
DNS 缓存:
在前面的部分中,您了解了如何将域名解析为 IP 地址。通过 DNS 服务器的这一过程需要一段时间,在完成并且域名可以解析为 IP 地址之前,您将无法连接到互联网上的任何网站或服务器。
为了解决这个问题,使用了DNS缓存。在这里,当您第一次尝试将域名解析为 IP 地址时,需要的时间会稍长一些。但是一旦域名解析完毕,IP地址就会存储在您自己的计算机中。这样,下次您需要解析相同的域名时,就不会像第一次那样花费时间了。
DNS 缓存问题:
DNS 缓存很好。为什么 DNS 缓存有问题?互联网世界瞬息万变,DNS 信息也在不断变化。即使在我写这篇文章的时候,它也可能已经改变了几次。
那么,当 DNS 信息发生变化并且我们使用的是自己计算机上缓存的 DNS 信息时,会发生什么情况呢?嗯,这就是问题所在。在这种情况下,我们将使用旧的 DNS 信息。我们可能会遇到连接问题、错误重定向问题和许多其他问题。
为了解决这个问题,我们必须删除缓存(也称为DNS刷新)并重建它。这就是本文的主题。
检查 DNS 缓存是否启用:
您可以在 Ubuntu 上轻松检查 DNS 缓存是否启用。您需要在计算机上安装 nslookup 或 dig 实用程序才能正常工作。
默认情况下,nslookup 或 dig 命令在您的 Ubuntu 计算机上可能不可用。但您可以轻松地从 Ubuntu 的官方软件包存储库安装它。
首先,使用以下命令更新 APT 软件包存储库缓存:
应更新 APT 包存储库缓存。
现在使用以下命令安装 nslookup 和 dig:
现在按y,然后按
nslookup 和 dig 命令现在应该可用。
现在要测试是否启用缓存,请运行以下命令:
可以看到,用于解析域名的DNS服务器是127.0.0.53,这是一个环回IP地址。这样就启用了 DNS 缓存。如果禁用它,则 DNS 服务器应该是 127.0.0.X 以外的任何服务器。
您可以使用 dig 命令检查相同的内容,如下所示:
正如您所看到的,环回 IP 地址也用作此处的 DNS 服务器地址。因此,DNS 缓存已启用。
在 Ubuntu 18.04 LTS 上刷新 DNS:
Ubuntu 18.04 LTS 默认使用本地 DNS 服务器并缓存 DNS 查询。 Ubuntu 18.04 LTS 使用 systemd 来实现此目的。
您可以运行以下命令来检查 Ubuntu 18.04 LTS 上缓存了多少 DNS 条目以及许多其他信息:
正如您所看到的,有关 DNS 缓存的信息列在下面屏幕截图的标记部分中。
要刷新 Ubuntu 18.04 LTS 上的 DNS 缓存,请运行以下命令:
您还可以重新启动 systemd-resolved 服务来刷新 Ubuntu 18.04 LTS 上的 DNS 缓存。
要重新启动 systemd-resolved 服务,请运行以下命令:
如您所见,缓存已被清除。
在 Ubuntu 16.04 上刷新 DNS 缓存:
在 Ubuntu 16.04 LTS 上,默认情况下不启用 DNS 缓存。但一些应用程序,如 bind、dnsmasq、nscd 等可能会缓存它。
如果您使用 nscd 缓存 DNS 查询,则只需重新启动 nscd 服务即可刷新 DNS 缓存。
您可以使用以下命令在 Ubuntu 16.04 LTS 上重新启动 nscd 服务来刷新 DNS 缓存:
如果您使用 dnsmasq 缓存 DNS,则使用以下命令重新启动 dnsmasq 服务应该会刷新 DNS 缓存。
这就是在 Ubuntu 18.04 LTS 和 16.04 LTS 上刷新 DNS 缓存的方法。感谢您阅读本文。