Mac升级后DNS被重置是系统为兼容新网络栈主动覆盖配置文件所致,导致退回路由器分配的局域网DNS;应使用networksetup命令永久设置并刷新缓存。
mac 升级系统后 dns 配置被重置,本质是 macos 在更新过程中会覆盖或清空旧的网络偏好数据库,尤其是 /library/preferences/systemconfiguration/ 下的配置文件。这不是“随机丢失”,而是系统为兼容新版本网络栈所做的主动重置——但默认会退回路由器分配的 dns(如 192.168.1.1),导致网页打不开、加载慢或解析异常。
确认 DNS 是否真被重置
别只看设置界面是否还留着你填的地址。终端执行:
scutil --dns | grep nameserver如果输出全是局域网地址(如 192.168.x.x 或 10.x.x.x),说明系统正在用 DHCP 分配的 DNS,你的手动设置已失效。
用 networksetup 命令永久写入 DNS
图形界面设置有时会被系统忽略或未写入底层服务名,命令行才是可靠方式:
- 先查当前服务名:networksetup -listallnetworkservices(常见为 Wi-Fi 或 Thunderbolt Bridge)
- 设 DNS(以 Wi-Fi 为例):sudo networksetup -setdnsservers "Wi-Fi" 223.5.5.5 1.1.1.1
- 验证是否生效:networksetup -getdnsservers "Wi-Fi"(应精确返回你刚输的两个 IP)
该操作直接修改系统配置数据库,重启、睡眠、升级后均保留,比图形界面更底层、更稳定。
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
必须同步刷新 DNS 缓存
即使 DNS 设置成功,缓存里仍可能存着旧解析结果,网页照样打不开。根据你的 macOS 版本执行:
- macOS Ventura 13 及更新系统(含 Sonoma、Sequoia):sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder
- Monterey 12 及更早系统:sudo killall -HUP mDNSResponder
输入密码后无报错即完成。之后再测试 nslookup github.com,看返回的 IP 是否由你指定的 DNS 解析出来。
防止下次升级再次覆盖
系统升级时不会主动备份用户自定义的 DNS,但你可以提前导出当前配置,升级后再一键还原:
- 导出当前 DNS 设置(升级前执行):networksetup -getdnsservers "Wi-Fi" > ~/Desktop/dns-backup.txt
- 升级完成后,快速恢复:sudo networksetup -setdnsservers "Wi-Fi" $(cat ~/Desktop/dns-backup.txt)
这个小技巧不依赖第三方工具,几秒搞定,适合经常升级的用户。

















