清空dns缓存可解决网站访问异常或错误跳转问题:windows用ipconfig /flushdns;macos执行sudo killall -hup mdnsresponder;linux依服务类型用systemd-resolve --flush-caches、systemctl restart dnsmasq或nscd -i hosts;dns服务器端用dnscmd /clearcache;最后通过对应命令验证缓存是否清空。

如果您尝试访问某个网站,但页面加载异常或显示错误的IP地址,则可能是由于本地DNS缓存中保存了过期或错误的域名解析记录。以下是清空DNS缓存的具体操作方法:
一、Windows系统使用ipconfig /flushdns命令
Windows内置的DNS客户端服务会在本地缓存DNS查询结果以提升访问速度,但错误缓存可能导致解析失败或跳转至恶意站点。通过管理员权限执行刷新命令可强制清空全部缓存条目。
1、按下Win + R组合键,打开“运行”对话框。
2、输入cmd,然后按住Ctrl + Shift再按回车,以管理员身份启动命令提示符(若弹出用户账户控制提示,请点击“是”)。
3、在命令提示符窗口中输入:ipconfig /flushdns,随后按回车键。
4、观察返回信息,若显示“已成功刷新 DNS 解析缓存”,则操作完成。
二、macOS系统使用终端命令刷新mDNSResponder缓存
macOS使用mDNSResponder守护进程管理本地DNS缓存,该进程不支持直接flush命令,需通过向其发送HUP信号实现重启并清空缓存。此操作需用户权限认证。
1、打开“聚焦搜索”(Command + 空格),输入终端并回车启动。
2、在终端中粘贴并执行以下完整命令:sudo killall -HUP mDNSResponder。
3、系统将提示输入用户密码,输入当前登录账户密码(输入时无可见字符),然后按回车。
4、命令执行后无明确成功提示,但再次执行dscacheutil -cachedump -entries Host应返回空结果或仅含极少量新条目。
三、Linux系统根据解析服务类型分别处理
Linux发行版是否具备DNS缓存取决于是否启用systemd-resolved、dnsmasq或nscd等服务;未启用时无系统级缓存,无需操作。启用后须针对对应服务执行清除指令。
1、先确认systemd-resolved服务状态:在终端中运行systemctl is-active systemd-resolved,若返回active则继续下一步。
2、执行缓存清除命令:sudo systemd-resolve --flush-caches(适用于Ubuntu 18.04+、Debian 10+等主流发行版)。
3、若系统使用dnsmasq,先检查服务是否运行:sudo systemctl is-active dnsmasq,返回active后执行:sudo systemctl restart dnsmasq。
4、若使用nscd,则运行:sudo nscd -i hosts,该命令仅清除hosts缓存,不影响其他类型缓存。
四、Windows系统使用dnscmd清除DNS服务器端缓存
当您管理一台Windows DNS服务器且怀疑其向客户端分发了错误记录时,需清除服务器自身的权威缓存或递归缓存。此操作仅适用于已安装DNS服务器角色的设备。
1、以管理员身份运行命令提示符或PowerShell。
2、若需清除本机DNS服务器的递归缓存,执行:dnscmd /clearcache。
3、若需清除DNS客户端缓存(即本机作为DNS客户端时的缓存),执行:Clear-DnsClientCache(仅PowerShell可用)。
4、命令执行后无输出即表示成功;如提示“拒绝访问”,请确认当前会话具有DNS服务器管理权限。
五、验证DNS缓存是否已清空
清除操作完成后,需验证缓存是否实际被移除,避免误判为成功。不同平台验证方式不同,均依赖于查看当前缓存内容而非仅依赖命令返回信息。
1、Windows下执行:ipconfig /displaydns,若返回“DNS 解析程序缓存为空”,则确认清空成功。
2、macOS下执行:sudo dscacheutil -cachedump -entries Host | head -20,正常应仅显示少量系统保留条目或无输出。
3、Linux启用systemd-resolved时执行:systemd-resolve --statistics,关注“Cache current entries”字段值是否为0或显著降低。











