当前位置:首页 > Ubuntu > 正文

Ubuntu DNS缓存清理(手把手教你彻底清除Linux系统中的DNS缓存)

在使用 Ubuntu 系统时,有时你会发现访问某个网站总是跳转到旧的 IP 地址,或者修改了 hosts 文件后没有生效。这很可能是因为系统缓存了 DNS 解析结果。这时候,你就需要清理 Ubuntu 的 DNS 缓存了。

本文将为你详细介绍在不同版本的 Ubuntu 系统中如何清除 DNS 缓存,无论你是刚接触 Linux 的小白,还是有一定经验的用户,都能轻松操作。

Ubuntu DNS缓存清理(手把手教你彻底清除Linux系统中的DNS缓存) DNS缓存清理  Linux清除DNS缓存 Ubuntu系统DNS刷新 清理本地DNS缓存 第1张

为什么需要清理 DNS 缓存?

DNS(Domain Name System)负责将域名(如 www.example.com)转换为 IP 地址。为了提升访问速度,系统或服务会临时存储这些解析结果,这就是 DNS 缓存。但当目标网站更换了服务器 IP,而你的本地缓存未更新时,就可能导致无法访问或访问错误页面。

Ubuntu 是否默认启用 DNS 缓存?

早期版本的 Ubuntu(如 16.04 之前)默认不启用本地 DNS 缓存服务。但从 Ubuntu 18.04 开始,系统默认使用 systemd-resolved 作为本地 DNS 解析器,并自动缓存 DNS 查询结果。

因此,如果你使用的是 Ubuntu 18.04、20.04、22.04 或更高版本,极有可能启用了 DNS 缓存,需要手动清理。

方法一:使用 systemd-resolved 清理 DNS 缓存(推荐)

这是目前 Ubuntu 最主流的方式。请按以下步骤操作:

  1. 打开终端(快捷键 Ctrl + Alt + T
  2. 输入以下命令查看 systemd-resolved 是否正在运行:
systemctl status systemd-resolved

如果看到 “active (running)”,说明服务已启用。

接下来,执行以下命令清除 DNS 缓存:

sudo systemd-resolve --flush-caches

注意:在 Ubuntu 22.04 及更新版本中,该命令已被弃用,请改用:

sudo resolvectl flush-caches

执行成功后,终端不会返回任何信息,但缓存已经清除。

方法二:重启 systemd-resolved 服务(适用于所有版本)

如果你不确定使用哪个命令,也可以直接重启整个服务,这样也能清空缓存:

sudo systemctl restart systemd-resolved

方法三:如果你安装了其他 DNS 缓存服务

有些用户可能手动安装了 nscddnsmasq 等 DNS 缓存工具。如果是这种情况,请按以下方式清理:

1. 清理 nscd 缓存:

sudo /etc/init.d/nscd restart# 或sudo systemctl restart nscd

2. 清理 dnsmasq 缓存:

sudo systemctl restart dnsmasq

验证 DNS 缓存是否已清除

你可以通过以下命令查看当前缓存状态(仅适用于 systemd-resolved):

resolvectl statistics

执行后,你会看到类似 “Cache size: 0” 的输出,说明缓存已清空。

总结

对于大多数 Ubuntu 用户来说,只需使用 resolvectl flush-caches 命令即可快速完成 Ubuntu DNS缓存清理。掌握这一技巧,能有效解决因 DNS 缓存导致的网页访问异常问题。

希望这篇关于 Linux清除DNS缓存 的教程对你有帮助!如果你经常需要调试网络或开发 Web 应用,建议将清理命令加入快捷别名,提高效率。

记住关键词:Ubuntu系统DNS刷新清理本地DNS缓存,它们是你排查网络问题的好帮手!