首页 > 知识 > 正文

命令行清理DNS缓存怎么用?各系统操作步骤与排错指南

2026-10-25 06:54:24 · 以强凌弱网 · 百科 · 阅读 694

网页打不开、命令域名解析到旧 IP、行清系统刚改完 hosts 或 DNS 记录却迟迟不生效,缓存这类问题在运维和日常使用中很常见。用各多数情况下,操作问题出在本地 DNS 缓存还保留着旧结果。步骤命令行清理DNS缓存怎么用,排错其实取决于你用的指南是 Windows、macOS 还是命令 Linux,每个系统的行清系统命令、权限要求和生效范围都不一样。缓存本文按系统给出可直接复制的用各命令,并说明执行失败的操作常见原因和验证方法。

先明确一点:清理本地 DNS 缓存只影响你这台机器,步骤不会改动运营商或公共 DNS 服务器上的排错记录。如果你的域名解析在别处就是错的,清缓存只能让你重新去查询一次,拿到什么结果仍由上游决定。理解这个边界,能避免把「清缓存」当成万能药。

Windows:ipconfig 系列命令最直接

Windows 自带的 ipconfig 是最常用的入口。以管理员身份打开「命令提示符」或「Windows 终端」,输入 ipconfig /flushdns,看到「已成功刷新 DNS 解析缓存」即表示执行成功。普通权限的窗口有时也能跑,但涉及网络适配器操作时会被拒绝,所以建议直接用管理员窗口。

执行完可以顺手核对缓存状态。输入 ipconfig /displaydns 会列出当前缓存条目,清空后再看,列表应该明显变短或为空。如果只想看某条记录,可以先记下域名再对比。整套流程适合排查「改了 hosts 不生效」「网站换服务器后仍访问旧站」等场景。

失败时先看报错文字。提示「请求的操作需要提升」就是权限不足,换管理员窗口即可;提示找不到命令,多半是系统环境变量里的 System32 路径被改动,可到 C:\Windows\System32 目录下直接运行。若刷新后问题依旧,可再执行 ipconfig /release 和 ipconfig /renew 重新获取地址,但这会短暂断网,远程操作时不要用。

macOS:按系统版本选对命令

macOS 的命令随版本变化过,直接照抄网上旧教程容易报错。较新的版本(macOS 10.11 及以后,含近年的系统)通常使用 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder,输入后需要键入开机密码,回车时屏幕不显示字符属于正常现象。

更早的版本命令不同,例如 10.4 到 10.6 使用 sudo dscacheutil -flushcache,10.7 到 10.10 使用 sudo killall -HUP mDNSResponder。不确定自己系统版本时,可在「关于本机」里确认,或直接以当前系统界面和苹果官方支持文档为准。执行成功一般没有回显,这并不代表没生效。

验证方式可以选择一个刚变更解析的域名,用 dig 或 nslookup 查询,对比清理前后的结果。如果浏览器仍显示旧页面,别忘了浏览器自身也有 DNS 缓存和连接复用,可以开一个无痕窗口或换浏览器交叉确认,避免把浏览器缓存误判成系统缓存问题。

Linux:区分 systemd-resolved 与 nscd

Linux 发行版众多,缓存由谁负责并不统一。较新的 Ubuntu、Debian、Fedora 等常用 systemd-resolved,执行 sudo systemd-resolve --flush-caches,部分新版本命令名已改为 resolvectl flush-caches,两个都试一下即可。执行后用 resolvectl statistics 查看缓存统计,能直观看到条目变化。

如果系统里装了 nscd(名称服务缓存守护进程),用 sudo systemctl restart nscd 或 sudo /etc/init.d/nscd restart 重启服务来清空。装了 dnsmasq 的机器,则重启对应服务,例如 sudo systemctl restart dnsmasq。注意有些精简系统默认没有任何本地缓存服务,这种情况下清缓存命令自然找不到,属于正常现象,不是操作错误。

还有一种容易忽略的情况:容器或虚拟机里的解析由宿主机或编排平台接管,在容器内执行上述命令往往无效,需要在宿主机或对应网络组件上处理。遇到这类环境,建议先确认解析链路,再决定在哪一层清理,具体以你所用的平台文档为准。

清理后仍不生效怎么办

按顺序排查通常能定位问题。第一步,确认命令真的执行成功,而不是被权限或拼写错误挡住;第二步,用 nslookup 或 dig 指定公共 DNS 直接查询,看上游返回的是不是新记录,若上游就是旧的,说明要等 TTL 到期或去修改解析配置;第三步,检查 hosts 文件、代理软件、VPN 是否改写了域名走向,这些会绕过系统缓存。

第四步,考虑浏览器和应用层缓存。Chrome、Edge 有独立的内部 DNS 缓存,可通过浏览器自带的网络诊断页面清理;部分开发工具、数据库客户端也会缓存连接地址。第五步,如果只有单个网站异常,而其他网站正常,问题更可能在对方服务器或 CDN,而非你的本地缓存。

需要提醒的是,清理 DNS 缓存属于常规排查手段,不会提升网速,也不解决带宽、丢包或线路故障。频繁清理只在调试阶段有意义,日常无需反复执行。涉及企业内网域名、政务或医疗类系统的访问异常,应以所在单位的网络管理员和官方服务渠道的结论为准,不要仅凭本地命令结果下判断。

小结一下可执行的做法:Windows 用管理员窗口跑 ipconfig /flushdns;macOS 按版本选择 dscacheutil 加 killall 的组合;Linux 先确认缓存服务是 systemd-resolved、nscd 还是 dnsmasq,再执行对应命令。执行后用查询工具验证结果,若上游记录本身未更新,就耐心等 TTL 到期。把这几步固定成排查清单,下次再遇到解析异常,几分钟就能判断问题出在本地还是别处。