You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MacOS Monterey系统DNS缓存无法清除的技术求助

MacOS Monterey系统DNS缓存无法清除的技术求助

遇到这种明明改了DNS配置,却还是能查到旧IP的情况,真的挺闹心的!我帮你梳理几个大概率的原因和对应的解决办法,你可以逐一排查:

1. 忽略了系统里的其他DNS缓存组件

MacOS Monterey 之后,除了大家熟知的mDNSResponder,还新增了unbound这个本地递归DNS服务,它也会缓存DNS记录,常规的缓存清除命令可能没覆盖到它。你可以试试手动重启这个服务:

sudo launchctl stop com.apple.unbound
sudo launchctl start com.apple.unbound

另外,浏览器自带的独立DNS缓存也容易被忽略——比如Chrome、Safari都有自己的缓存池,单纯重启浏览器不一定能清干净:

  • Chrome可以打开chrome://net-internals/#dns,点击「Clear host cache」按钮
  • Safari可以在「偏好设置->隐私->管理网站数据」里搜索对应的域名,直接删除相关缓存

2. 系统DNS配置里还残留了旧服务器

先确认你真的把旧DNS服务器从系统配置里删掉了!有时候手动改DNS后,系统可能还保留着DHCP自动获取的旧条目。你可以:

  1. 打开「系统偏好设置->网络」,选中你的WLAN连接
  2. 点击「高级->DNS」,检查列表里是不是只有你要的那个正确DNS,把其他条目全部移除
    也可以用终端命令快速查看当前DNS配置:
scutil --dns

重点看resolver #下面的nameserver列表,确认没有旧服务器的痕迹。

另外,还要排查DNS服务器本身的问题:会不会你现在用的“正确DNS”本身就返回两个IP?你可以临时换成公共DNS(比如8.8.8.8),然后用dig your-domain.com测试,如果还是返回两个IP,那问题就出在DNS服务器上,不是你的Mac缓存。

3. mDNSResponder缓存清除不彻底

有时候用killall -HUP只是让mDNSResponder重新加载配置,并没有完全清空缓存。试试直接重启这个服务:

sudo launchctl stop com.apple.mDNSResponder
sudo launchctl start com.apple.mDNSResponder

你也可以用下面的命令查看系统缓存里的域名记录,确认旧IP是不是还在:

dscacheutil -q host -a name your-domain.com

如果输出里还有旧IP,那说明缓存确实没清掉,再试试上面的重启命令。

4. VPN/代理软件的干扰

如果你之前用过VPN或者代理工具,它们可能会强制覆盖系统DNS设置,即使你在系统偏好里改了,代理依然会用自己的DNS服务器。先关掉所有VPN和代理软件,再重新测试DNS查询。

备注:内容来源于stack exchange,提问作者ventle

火山引擎 最新活动