当前位置:首页 > 行业动态 > 正文

Linux系统如何快速清除DNS缓存

在Linux中清理DNS缓存的方法取决于使用的服务:1. 使用systemd-resolved的系统执行 sudo systemctl restart systemd-resolved;2. 使用NSCD的服务运行 sudo /etc/init.d/nscd restart;3. 若使用dnsmasq则执行 sudo systemctl restart dnsmasq,通过 resolvectl statistics可验证缓存状态,不同发行版命令可能略有差异。

清理DNS缓存是解决网络连接问题或更新域名解析记录的常见操作,在Linux系统中,由于不同发行版或服务管理工具存在差异,清理DNS缓存的方法也有所不同,以下是针对多种场景的详细操作指南:


什么是DNS缓存?

DNS缓存是系统或应用程序临时存储的域名解析记录(如example.com对应IP地址184.216.34),用于加快后续访问速度,若域名对应的IP地址更新但本地缓存未刷新,可能导致无法访问最新资源。


清理DNS缓存的通用方法

方法1:使用systemd-resolved服务

多数现代Linux发行版(如Ubuntu 18.04+、Fedora、Debian)默认使用systemd-resolved管理DNS缓存:

# 刷新DNS缓存
sudo systemd-resolve --flush-caches
# 验证是否成功(输出为0表示无缓存)
sudo systemd-resolve --statistics | grep "Current Cache Size"

方法2:重启NetworkManager服务

如果系统依赖NetworkManager管理网络(常见于桌面版Linux):

Linux系统如何快速清除DNS缓存  第1张

# 重启服务以清除缓存
sudo systemctl restart NetworkManager
# 若需同时清理systemd-resolved缓存,可追加命令:
sudo systemd-resolve --flush-caches

针对特定工具或服务的清理方法

场景1:使用dnsmasq的服务

dnsmasq常见于轻量级发行版或路由器系统:

# 重启dnsmasq服务
sudo systemctl restart dnsmasq
# 若需直接发送刷新信号(部分版本支持):
sudo killall -HUP dnsmasq

场景2:使用nscd(Name Service Cache Daemon)

若系统启用了nscd缓存服务:

# 清理DNS缓存
sudo systemctl restart nscd
# 或仅清除DNS记录
sudo nscd -i hosts

手动清除浏览器或应用级DNS缓存

某些应用程序(如Chrome、Firefox)可能维护独立缓存:

  1. Chrome浏览器:地址栏输入chrome://net-internals/#dns,点击「Clear host cache」。
  2. Firefox浏览器:访问about:config,搜索network.dnsCacheExpiration,将其值临时改为0并重启。

验证DNS缓存是否清理成功

执行以下命令检查域名解析是否更新:

# 使用dig命令查询域名(替换为实际域名)
dig example.com +short
# 或用nslookup验证
nslookup example.com

常见问题

  1. 清理后仍无法解析新IP?

    • 检查本地/etc/hosts文件是否包含旧记录。
    • 确认DNS服务器(如/etc/resolv.conf配置)是否未返回缓存结果。
  2. 清理DNS缓存是否影响其他程序?
    临时清除缓存可能导致后续域名解析短暂延迟,但不会中断现有连接。


引用说明

本文参考了以下来源:

  • systemd-resolved官方文档:https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html
  • dnsmasq配置手册:http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html
  • Linux网络管理实践指南(2025版)
0