命令行清理DNS缓存命令怎么用?Windows、macOS与Linux实操说明
网页打不开、命令命令域名解析到旧IP、行清刚改完解析记录却迟迟不生效,缓存这类问题很多时候并不是实操说明网络断了,而是命令命令本机或本地网络的DNS缓存还在用旧结果。图形界面里翻设置比较绕,行清用命令行清理DNS缓存往往更快,缓存一条命令就能让系统重新向DNS服务器查询。实操说明下面按Windows、命令命令macOS、行清Linux三类系统分别说明命令、缓存执行方式,实操说明以及执行后仍不生效时该怎么继续排查。命令命令
先明确一个概念:DNS缓存是行清系统或浏览器把最近查询过的“域名—IP”对应关系临时存下来,用来加快访问速度。缓存它可能存在于操作系统、浏览器、路由器甚至运营商侧。命令行清理DNS缓存命令通常只能清掉本机操作系统这一层,浏览器和路由器里的缓存需要另外处理,这一点先有心理预期,后面的排查才不会白费功夫。
Windows:ipconfig 系列命令与执行要点
Windows下最常用的命令是 ipconfig /flushdns。操作步骤是:按 Win 键,输入 cmd,在“命令提示符”上右键选择“以管理员身份运行”;在窗口里输入 ipconfig /flushdns 后回车。成功时会提示“已成功刷新 DNS 解析缓存”。如果提示“请求的操作需要提升”,说明没有用管理员权限打开,重新按上面的方式启动即可。部分系统界面语言不同,提示文字会有差异,以实际显示为准。
想先确认缓存里到底存了什么,可以先看再清。输入 ipconfig /displaydns 会列出当前缓存记录,条数可能很多,可以配合 ipconfig /displaydns | more 分页查看。清理之后如果想验证,可以再次执行 displaydns,或者直接用 nslookup 域名 看返回的IP是否已经变成新地址。nslookup 查询的是DNS服务器返回结果,能帮助区分“本机缓存问题”还是“解析本身还没生效”。
如果刷新后依旧访问异常,可以再执行 ipconfig /release 和 ipconfig /renew 重新获取IP地址,但这两个命令会短暂断网,远程办公或正在下载文件时不要随手执行。另外,Windows下还有一个容易忽略的点:浏览器自带DNS缓存。可以在浏览器地址栏输入对应的内部设置页(Chrome、Edge一般为 chrome://net-internals/#dns 一类入口,以浏览器实际界面为准)清理,或者直接重启浏览器。
macOS:按系统版本选择命令
macOS的清理命令随版本变化较大,这是很多人照着旧教程操作失败的原因。较新的macOS(如Big Sur及之后版本)通常在终端执行 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder,输入后会要求输入开机密码,注意输入时屏幕不显示字符,这是正常现象。执行成功一般没有明显回显,没有报错即可认为已生效。
更早的版本曾使用 sudo killall -HUP mDNSResponder 或 sudo discoveryutil mdnsflushcache 等不同写法。如果不确定自己系统该用哪条,可以先执行 sw_vers 查看版本号,再对照Apple官方支持文档中的说明,以官方文档和系统实际反馈为准,不要盲目复制来源不明的命令。终端命令涉及 sudo 权限,来路不明的脚本不要直接粘贴执行。
macOS上还有一个高频坑:Safari和Chrome等浏览器会缓存DNS,系统层清完仍可能访问旧地址。此时可以完全退出浏览器再打开,或重启一次系统。若公司网络使用了内部DNS,清本机缓存可能没用,需要联系网络管理员确认服务器侧记录。
Linux:取决于发行版和解析服务
Linux没有统一的一条命令,要看系统用的是哪种解析缓存服务。常见情况有三类:使用 systemd-resolved 的系统,可执行 sudo systemd-resolve --flush-caches,较新版本也可能是 sudo resolvectl flush-caches;使用 nscd 的系统,执行 sudo systemctl restart nscd 或 sudo service nscd restart;使用 dnsmasq 的系统,执行 sudo systemctl restart dnsmasq。执行前可以用 systemctl status 加服务名确认服务是否存在,避免对不存在的服务反复操作。
如果本机根本没有运行缓存服务,那么“清理缓存”这个动作本身就没有对象,此时应把注意力放到 /etc/resolv.conf 里配置的DNS服务器、以及 /etc/hosts 是否写死了旧记录上。hosts文件的优先级通常高于DNS查询,里面如果有手动添加的条目,清多少次缓存都不会改变结果,需要手动编辑删除。修改系统文件前建议先备份,以发行版官方文档为准。
清理后仍不生效,按这个顺序排查
nslookup 或 dig 直接查询域名,看DNS服务器返回的是新IP还是旧IP。小结一下:Windows记住 ipconfig /flushdns,macOS用 sudo dscacheutil -flushcache 配合重启 mDNSResponder,Linux按 systemd-resolved、nscd、dnsmasq 对号入座。命令行清理DNS缓存命令解决的是本机缓存这一层,执行前先想清楚问题可能出在哪一层,执行后用 nslookup 验证,比反复清缓存更省时间。涉及 sudo 和系统服务重启的操作,建议先确认命令来源可靠,重要环境操作前做好记录。