上一篇
Linux系统如何快速清除DNS缓存
- 行业动态
- 2025-05-08
- 3180
在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):
# 重启服务以清除缓存 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)可能维护独立缓存:
- Chrome浏览器:地址栏输入
chrome://net-internals/#dns
,点击「Clear host cache」。 - Firefox浏览器:访问
about:config
,搜索network.dnsCacheExpiration
,将其值临时改为0
并重启。
验证DNS缓存是否清理成功
执行以下命令检查域名解析是否更新:
# 使用dig命令查询域名(替换为实际域名) dig example.com +short # 或用nslookup验证 nslookup example.com
常见问题
清理后仍无法解析新IP?
- 检查本地
/etc/hosts
文件是否包含旧记录。 - 确认DNS服务器(如
/etc/resolv.conf
配置)是否未返回缓存结果。
- 检查本地
清理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版)