macOS终端管理DNS缓存需分三步:先用dscacheutil -cachedump -entries Host查看缓存状态,再按系统版本执行对应清除命令(Sonoma至Catalina用sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder,Mojave至Sierra仅sudo killall -HUP mDNSResponder),最后检查/etc/hosts和代理设置并清理浏览器独立DNS缓存。
在 macos 终端中查看和管理 dns 缓存,核心是区分“查看缓存内容”和“清除/刷新缓存”两类操作。系统不提供直观的图形界面查看工具,但可通过命令行观察缓存状态、验证是否清空,并配合版本适配命令精准管理。
查看当前 DNS 缓存内容
macOS 没有直接列出所有缓存域名的命令,但可用 dscacheutil 查看缓存条目摘要或指定类型记录:
- 执行 dscacheutil -cachedump -entries Host:显示当前被缓存的主机名(域名)及其解析结果、TTL 剩余时间等。若输出为空或只有极少量新条目,说明缓存已基本清空
- 执行 dscacheutil -cachedump -entries IPv4 或 -entries IPv6:分别查看 IPv4/IPv6 地址缓存记录
- 注意:该命令仅对 Catalina(10.15)及更新系统有效;Mojave 及更早版本可能返回不完整或无响应,属正常现象
按 macOS 版本执行正确的清除命令
清除不是“一键通用”,必须匹配你当前系统版本,否则可能只清掉一半或完全无效:
-
Sonoma(14)、Ventura(13)、Monterey(12)、Big Sur(11)、Catalina(10.15):
运行 sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder -
Mojave(10.14)至 Sierra(10.12):
运行 sudo killall -HUP mDNSResponder -
El Capitan(10.11)及更早(已淘汰):
先运行 ps aux | grep -E '(mDNS|discovery)' 查进程,若含 discoveryd,再执行 sudo killall -HUP discoveryd
检查干扰项:/etc/hosts 和代理设置
很多“清完还是解析错”的问题,其实与 DNS 缓存无关,而是被本地配置覆盖:
- 运行 sudo nano /etc/hosts,删掉所有非 # 开头的自定义映射行(如 127.0.0.1 example.com),按 Ctrl+O → 回车 → Ctrl+X 保存退出
- 进“系统设置 → 网络 → 当前连接 → 详细信息 → 代理”,确认 HTTP、HTTPS、SOCKS 代理全部未勾选
别漏掉浏览器自己的 DNS 缓存
Chrome、Edge、Safari、Firefox 都维护独立 DNS 缓存,系统级清理对其无效:
- Chrome / Edge:地址栏输入 chrome://net-internals/#dns → 点击 Clear host cache
- Safari:启用“开发”菜单(设置 → 高级 → 勾选“显示开发菜单”)→ 菜单栏“开发 → 清除缓存”
- Firefox:地址栏输入 about:networking#dns → 点击 Clear DNS Cache


















