mac清理dns缓存需按系统版本执行对应命令:sonoma至catalina用sudo dscacheutil -flushcache && sudo killall -hup mdnsresponder,mojave至sierra仅sudo killall -hup mdnsresponder,el capitan及更早需先查进程再执行;同时须检查/etc/hosts和代理设置,并清理浏览器dns缓存。

直接在终端里执行对应命令,就能清除 macOS 中冗余或过期的 DNS 缓存。关键不是“清一次”,而是**按系统版本用对命令**,否则可能只清掉一半,甚至完全无效。
先确认你的 macOS 版本
点击左上角苹果图标 → “关于本机”,查看系统版本。不同版本底层管理 DNS 缓存的服务不同,命令不能混用:
- Sonoma (14)、Ventura (13)、Monterey (12)、Big Sur (11)、Catalina (10.15):需同时刷新缓存服务和重启解析进程
- Mojave (10.14) 至 Sierra (10.12):仅需重启 mDNSResponder 即可
- El Capitan (10.11) 及更早:已基本淘汰,若仍在使用,需先检查是否运行 discoveryd 进程
打开终端并执行命令
按下 Command + 空格,输入“终端”并回车启动。然后根据版本粘贴以下命令(注意大小写和空格):
- Sonoma 至 Catalina:sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder
- Mojave 至 Sierra:sudo killall -HUP mDNSResponder
- El Capitan 及更早(如需):ps aux | grep -E '(mDNS|discovery)' && sudo killall -HUP discoveryd(仅当输出含 discoveryd 时才执行)
回车后会提示输入管理员密码——输入时屏幕不显示字符,输完直接按回车。终端返回新行且无报错,即表示成功。
顺手检查两个高危干扰项
很多“清完还打不开网站”的情况,其实和 DNS 缓存无关,而是被下面两项卡住了:
-
/etc/hosts 文件被篡改:终端运行 sudo nano /etc/hosts,删掉所有非 # 开头的域名映射行(比如某行写着
www.bank.com 0.0.0.0),按 Ctrl+O → 回车 → Ctrl+X 保存退出 - 网络设置中启用了代理:进“系统设置 → 网络 → 当前连接 → 详细信息 → 代理”,取消所有勾选,确保 HTTP/HTTPS/SOCKS 代理全部关闭
别忘了浏览器自己的 DNS 缓存
Chrome、Edge、Safari 都有独立于系统的 DNS 缓存,必须单独清理:
- Chrome/Edge:地址栏输入 chrome://net-internals/#dns → 点击“Clear host cache”
- Safari:启用“开发”菜单(设置 → 高级 → 显示开发菜单)→ 菜单栏“开发 → 清除缓存”
- Firefox:地址栏输入 about:networking#dns → 点击“Clear DNS Cache”











