DNS

在 Mac 上刷新 DNS 缓存

macOS 会将 DNS 应答保留一段时间。清除缓存会删除这些应答,下次查询时会重新询问 DNS 服务器。

适用于:OS X 10.10.4 Yosemite 及更高版本,包括所有当前 macOS 版本。核查日期:2026年10月29日

症状

  • 网站已迁移到新服务器,但 Mac 仍然访问旧地址。
  • 对 /etc/hosts 或 DNS 记录的修改没有生效。
  • 网络恢复后,“找不到服务器”错误仍然存在。

可能的原因

  • 缓存的应答。mDNSResponder 会缓存 DNS 回复,缓存中可能有已经过时的应答。
  • 浏览器缓存。一些浏览器有自己的 DNS 缓存,清除 macOS 缓存不会清除它。
  • DNS 服务器缓存。路由器或运营商也会缓存应答,在 Mac 上清除缓存不会清除它们。

如何检查

  1. 向 macOS 解析器查询该名称,把返回的地址与预期地址比较。

    dscacheutil -q host -a name example.com
  2. 显示 macOS 使用的 DNS 服务器。

    scutil --dns

如何修复

  1. 打开“终端”,清除目录服务缓存。

    sudo dscacheutil -flushcache

    需要管理员密码。

  2. 让 mDNSResponder 清除其缓存。Apple 为 OS X 10.10.4 及更高版本给出了这条命令。

    sudo killall -HUP mDNSResponder

    需要管理员密码。

  3. “终端”要求时输入你的密码。命令成功时不会显示任何消息。

  4. 退出并重新打开浏览器,让它不再使用自己缓存的旧应答。

  5. 再次查询该名称。如果仍返回旧地址,说明 DNS 服务器上还有旧记录。

使用 Kilobat

  1. CLI 运行的是同样两条命令。macOS 会要求输入管理员密码。

    kilobat dns flush
  2. 在 App 中打开“健康”标签页,然后在 DNS 面板中点按“清除缓存…”。

  3. MCP 工具 set_dns 在 provider 设为 flush 时效果相同。它会让智能体先征求你的同意。

常见问题

清除缓存能让 DNS 更快吗?

不能。它只是删除旧应答。之后的查询会重新发往 DNS 服务器,所以可能会稍慢一点。

清除 DNS 缓存安全吗?

安全。App 查询名称时,macOS 会重新填充缓存。dscacheutil 的 man 手册页建议仅在必要时才清除缓存。

需要重启 Mac 吗?

不需要。命令会立即生效。

参考资料

参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。