登录
首页 >  文章 >  linux

Linux清除DNS缓存步骤详解

时间:2026-04-09 08:19:32 104浏览 收藏

当Linux系统出现域名解析异常、访问错误或仍指向过期IP地址时,问题往往源于本地DNS缓存未及时更新——虽然Linux内核不自带全局DNS缓存,但nscd、systemd-resolved或dnsmasq等常用服务会主动缓存查询结果,导致解析滞后;本文手把手教你精准识别当前启用的缓存服务,并提供重启服务、执行专用命令(如`systemd-resolve --flush-caches`)、手动清理缓存文件等多套可靠清除方案,最后还教你用`dig`对比权威DNS与本地解析结果,快速验证缓存是否真正刷新成功,让网络故障排查更高效、更彻底。

Linux怎么修改DNS缓存_Linux nscd清除DNS缓存方法教程【技巧】

如果您在 Linux 系统中遇到域名解析结果未及时更新、访问异常或指向旧 IP 的问题,很可能是由于本地 DNS 缓存未同步最新记录。Linux 本身不自带全局 DNS 缓存,但若启用了 nscd、dnsmasq 或 systemd-resolved 等缓存服务,则需针对性清除其缓存。以下是多种可行的清除方法:

一、重启 nscd 服务清除 hosts 和 DNS 缓存

nscd(Name Service Cache Daemon)会缓存 /etc/hosts 解析、用户、组及 DNS 查询结果。重启该服务可强制清空全部缓存条目,包括 hosts 映射与 DNS 记录。

1、检查 nscd 是否正在运行:sudo systemctl status nscd

2、若状态为 active,执行重启命令:sudo systemctl restart nscd

3、如需仅刷新 hosts 缓存而不重启整个服务,可运行:sudo nscd -i hosts

二、使用 systemd-resolved 清除 DNS 缓存

systemd-resolved 是多数现代发行版(如 Ubuntu 18.04+、Fedora、Debian 10+)默认启用的系统级 DNS 缓存服务。它独立管理 DNS 解析并支持 LLMNR/mDNS,清除缓存需调用专用命令。

1、确认 resolved 服务是否启用并运行:sudo systemctl is-active systemd-resolved

2、执行缓存刷新操作:sudo systemd-resolve --flush-caches

3、验证缓存是否已清空,可查看统计信息:sudo systemd-resolve --statistics

三、重启 dnsmasq 服务清空本地 DNS 缓存

dnsmasq 常用于路由器、小型服务器或开发环境,作为轻量级 DNS 转发与缓存服务器。其缓存驻留在内存中,重启服务即可彻底清空。

1、检查 dnsmasq 运行状态:sudo systemctl status dnsmasq

2、停止并重新启动服务:sudo systemctl restart dnsmasq

3、若系统使用传统 SysV init,可改用:sudo /etc/init.d/dnsmasq restart

四、手动删除 nscd 缓存文件目录

当 nscd 缓存文件损坏或服务无法正常重启时,可直接清除其持久化缓存数据。nscd 将缓存内容写入 /var/cache/nscd/ 目录,删除后重启服务可重建干净缓存。

1、终止 nscd 进程以避免写入冲突:sudo systemctl stop nscd

2、清空缓存目录内容:sudo rm -rf /var/cache/nscd/*

3、重新启动 nscd:sudo systemctl start nscd

五、验证 DNS 缓存是否已清除

清除操作完成后,需通过实际查询行为确认缓存是否生效。建议使用不带缓存的诊断工具进行比对,避免依赖浏览器或应用层缓存干扰判断。

1、执行一次权威 DNS 查询以绕过本地缓存:dig example.com @8.8.8.8 +short

2、对比系统默认解析结果:dig example.com +short

3、若两次返回 IP 不一致,说明本地缓存已更新;若一致,表明清除操作已生效且系统正使用最新记录

理论要掌握,实操不能落!以上关于《Linux清除DNS缓存步骤详解》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>