DNS
在 Mac 上刷新 DNS 缓存
macOS 会将 DNS 应答保留一段时间。清除缓存会删除这些应答,下次查询时会重新询问 DNS 服务器。
症状
- 网站已迁移到新服务器,但 Mac 仍然访问旧地址。
- 对
/etc/hosts或 DNS 记录的修改没有生效。 - 网络恢复后,“找不到服务器”错误仍然存在。
可能的原因
- 缓存的应答。mDNSResponder 会缓存 DNS 回复,缓存中可能有已经过时的应答。
- 浏览器缓存。一些浏览器有自己的 DNS 缓存,清除 macOS 缓存不会清除它。
- DNS 服务器缓存。路由器或运营商也会缓存应答,在 Mac 上清除缓存不会清除它们。
如何检查
向 macOS 解析器查询该名称,把返回的地址与预期地址比较。
dscacheutil -q host -a name example.com显示 macOS 使用的 DNS 服务器。
scutil --dns
如何修复
打开“终端”,清除目录服务缓存。
sudo dscacheutil -flushcache需要管理员密码。
让 mDNSResponder 清除其缓存。Apple 为 OS X 10.10.4 及更高版本给出了这条命令。
sudo killall -HUP mDNSResponder需要管理员密码。
“终端”要求时输入你的密码。命令成功时不会显示任何消息。
退出并重新打开浏览器,让它不再使用自己缓存的旧应答。
再次查询该名称。如果仍返回旧地址,说明 DNS 服务器上还有旧记录。
使用 Kilobat
CLI 运行的是同样两条命令。macOS 会要求输入管理员密码。
kilobat dns flush在 App 中打开“健康”标签页,然后在 DNS 面板中点按“清除缓存…”。
MCP 工具
set_dns在provider设为flush时效果相同。它会让智能体先征求你的同意。
常见问题
清除缓存能让 DNS 更快吗?
不能。它只是删除旧应答。之后的查询会重新发往 DNS 服务器,所以可能会稍慢一点。
清除 DNS 缓存安全吗?
安全。App 查询名称时,macOS 会重新填充缓存。dscacheutil 的 man 手册页建议仅在必要时才清除缓存。
需要重启 Mac 吗?
不需要。命令会立即生效。
参考资料
- Apple 支持(已归档):在 OS X 中重设 DNS 缓存
- dscacheutil(1),macOS 27.2 自带的 man 手册页
- mDNSResponder(8),macOS 27.2 自带的 man 手册页
参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。