Birds – Flying beyond the wall

macOS怎么清除DNS缓存:命令、版本对照与清除后验证

更新于 2026-10-27 · birds.mom

简答:在 macOS 上清除 DNS 缓存,先打开“终端”,执行 <code>sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder</code>,按提示输入 Mac 管理员密码并按回车。输入密码时终端不会显示字符、命令完成后通常也没有成功提示;随后彻底退出并重新打开浏览器,再测试目标网站。

定义:DNS缓存是 Mac 临时保存的域名与IP地址对应信息,清除DNS缓存会让系统重新发起解析,但不会更换DNS服务器,也不会清除浏览器、路由器或上游DNS缓存。

先试这一步:当前macOS清除DNS缓存命令

适用范围:截至 2026-10-27,本文按当前 macOS 及近年版本整理。如果你遇到网站更换服务器后仍打开旧页面、域名解析错误,或者其他设备能打开而 Mac 不能,先关闭正在访问该网站的浏览器标签页,然后按下面流程操作。

  1. 按 Command+Space 打开 Spotlight,搜索“终端”,打开 Terminal。
  2. 复制并执行:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  3. 看到 Password: 后,输入当前 Mac 管理员账户密码,再按回车。
  4. 等待命令返回新的命令行,不要连续重复执行。
  5. 彻底退出浏览器后重新打开,再访问原来打不开的网站。

这条组合命令被多所高校 IT 服务部门用于较新 macOS 的 DNS 缓存清理流程,例如俄克拉荷马大学的说明将 Catalina、Big Sur、Monterey、Ventura、Sonoma 和 Tahoe 列入同一组命令范围;如果你的系统非常旧,应先参照下方版本表,而不要盲目套用新命令。俄克拉荷马大学 IT:Flushing DNS Cache

Apple 的 Terminal 文档确认,终端要求输入密码时,输入过程不会显示字符,光标也可能不移动;这是正常的安全设计,不代表键盘没有输入。Apple:在 Mac 终端输入密码

不同macOS版本该用哪条命令?

命令在不同 macOS 版本上存在差异。下面的表格用于快速选择;如果你不知道版本号,可打开“系统设置”>“通用”>“关于本机”查看。近年版本优先使用第一行;旧系统则按对应版本执行。

系统范围建议命令说明
较新的 macOS,包括 Catalina 及之后的常见版本sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder先刷新缓存,再向 mDNSResponder 发送重新加载信号
部分旧版 macOS,如 Mojave、High Sierra、Sierra、El Capitansudo killall -HUP mDNSResponder旧版资料常将该命令作为主要清理方式
OS X Yosemitesudo discoveryutil udnsflushcaches仅适用于旧系统,不建议在新系统中尝试
更早的 Mac OS X命令可能继续变化应先确认具体版本与对应文档,本文不建议凭经验试错

版本对照来自大学 IT 服务文档的公开维护页面。伊利诺伊大学系统还按 macOS 12、11、10.15、10.14 及更早版本列出命令差异,可用于核对旧设备。伊利诺伊大学:Reset my DNS

不要把“清除DNS缓存”和“修改DNS服务器”混为一谈。清缓存只是删除本机暂存的解析结果;如果你要更换 DNS 服务器,需要进入 Apple 菜单>“系统设置”>“网络”>选择当前网络服务>“详情”>“DNS”,再添加或删除 DNS 服务器。Apple 官方说明了这一设置入口。Apple:在 Mac 上更改 DNS 设置

输入命令后没有提示,怎样判断是否成功?

清除 DNS 缓存的命令通常不会显示“清除成功”这类确认文字。只要没有出现明确的错误信息,并且终端返回新的命令提示符,通常可以继续进行验证。输入密码时看不到字符是正常现象;不要因为屏幕没有变化就多次输入或强制关闭终端。

  1. 先重开浏览器:退出浏览器,而不是只关闭当前标签页,再重新打开。
  2. 测试域名解析:在终端执行 dig example.com,查看是否返回 ANSWER SECTION 或地址记录。将 example.com 替换为实际打不开的域名。
  3. 查看系统 DNS 配置:执行 scutil --dns,检查输出中的 nameserver,确认系统当前使用的 DNS 服务器是否符合你的网络设置。
  4. 对比浏览器与其他设备:如果同一网络下其他设备也无法解析,问题可能不在 Mac 本地缓存;如果只有某个浏览器打不开,则优先检查浏览器缓存、代理或安全 DNS 设置。

dig 和 scutil --dns用于观察解析结果与系统 DNS 配置,不等于能证明目标网站本身正常。验证时应记录域名、返回结果和测试时间,避免把一次解析失败直接判断为线路或服务器故障。

清除后仍打不开网页:按现象继续排查

清除 DNS 缓存只处理 Mac 本地缓存这一层。如果问题仍存在,请按下面顺序检查,避免直接删除配置文件或反复执行命令。

  • 只有一个域名打不开:执行 dig 目标域名,再检查 /etc/hosts 是否存在手动写入的旧地址。只查看,不要在没有备份的情况下删除或改写系统文件。
  • 所有网站都打不开:进入 Apple 菜单>“系统设置”>“网络”,确认当前 Wi-Fi 或以太网服务已连接,并检查 DNS 页面中是否存在明显错误的服务器地址。Apple 官方的 DNS 设置入口是“网络”>网络服务>“详情”>“DNS”。Apple:DNS 设置路径
  • 关闭代理或 VPN 后才恢复:检查系统“网络”设置中的“代理”,以及相关客户端是否接管 DNS。不要只看 Wi-Fi 图标判断网络正常,代理、VPN 和安全 DNS 都可能改变解析路径。
  • 同一 Wi-Fi 下所有设备都失败:重启路由器或检查路由器的 DNS 设置;Mac 清缓存无法清除路由器缓存,也无法刷新运营商或上游 DNS 服务器。
  • 只有浏览器失败:彻底退出浏览器后重开;必要时检查浏览器自己的安全 DNS、代理和缓存设置。不要把浏览器缓存问题误认为系统 DNS 缓存问题。

如果你刚修改过 DNS 服务器,先确认修改已保存,再重新连接 Wi-Fi。修改 DNS 服务器与清除 DNS 缓存是两个不同动作:前者改变后续查询使用的服务器,后者只是让本机重新查询。

安全提醒与结果标准

  • 只执行明确知道作用的命令,不要为了“加快网络”随意运行 killall -9、删除系统目录或删除 /etc/hosts。
  • 清除 DNS 缓存不会保证网页一定恢复,也不会直接降低延迟;它适合处理本机可能保留旧解析结果的场景。
  • 如果终端提示权限不足,确认当前账户是管理员账户,并重新输入 Mac 登录密码;不要输入 Apple 账户密码或其他网站密码。
  • 如果命令提示找不到工具、服务名称不匹配或出现明确报错,停止继续试错,先确认 macOS 版本,再查对应版本文档。

完成验证的标准是:目标域名能够重新解析,浏览器已重新建立连接,并且问题范围没有从单个域名扩大到全部网站。若只有某个站点仍失败,应继续核查代理、VPN、hosts 文件和目标站点状态,而不是无限重复清缓存。

相关设置与排障入口

如果你要继续处理的是 DNS 配置或 macOS 网络连接,而不只是清缓存,可以参考站内以下页面:

常见问题

macOS清除DNS缓存后没有任何提示,是不是失败了?

不一定。该命令完成后通常直接返回新的命令提示符,不一定显示成功文字。只要没有明确报错,可退出并重新打开浏览器,再用 dig 目标域名验证解析。

在终端输入Mac密码时看不到字符,应该怎么办?

这是正常现象。Apple说明终端输入密码时不会显示字符,光标也可能不移动。直接输入当前Mac管理员账户密码并按回车,不要输入Apple账户密码。

清除DNS缓存会不会修改我设置的DNS服务器?

不会。清除缓存只让本机重新进行域名解析,不会自动把DNS服务器改成其他地址。修改DNS服务器要到“系统设置”>“网络”>当前网络服务>“详情”>“DNS”中操作。

清除DNS缓存后网页仍然打不开怎么办?

先执行 dig 目标域名和 scutil --dns,分别观察解析结果与当前DNS配置;然后检查浏览器缓存、代理、VPN、/etc/hosts、路由器和其他设备是否也存在同样问题。

我需要每天清除一次DNS缓存吗?

通常不需要。清除DNS缓存主要用于排查旧解析、域名更换地址或解析异常;它不是日常提速操作,也不能保证解决所有连接问题。

相关阅读

参考资料

  1. 俄克拉荷马大学 IT:Flushing DNS Cache
  2. 伊利诺伊大学系统:AITS - How Do I Reset my DNS?
  3. Apple 支持:在 Mac 上更改 DNS 设置