scutil --dns可直接查看macOS当前实际生效的DNS配置,包括服务器地址、顺序及搜索域;其输出的nameserver[0]为系统首选DNS,该顺序受服务序号和/etc/resolver/文件优先级影响,未必与图形界面设置一致。
直接用 scutil --dns 就能看到当前 macos 真正在用的 dns 配置,包括服务器地址、搜索域、解析顺序等完整信息。
快速查看生效的 DNS 服务器 IP
终端中运行:
scutil --dns | grep nameserver
输出类似:
nameserver[0] : 223.5.5.5<br>nameserver[1] : 1.1.1.1
这表示系统当前优先使用 223.5.5.5,第二顺位是 1.1.1.1——注意:这个顺序是实际生效的,不等于你在图形界面里看到的列表顺序(可能被服务序号或 /etc/resolver/ 覆盖)。
验证某网络服务的 DNS 设置是否写入成功
比如你改了 Wi-Fi 的 DNS,想确认配置已保存到系统数据库:
networksetup -getdnsservers "Wi-Fi"
若返回 There aren't any DNS servers set,说明该服务没配;若返回 IP 列表,说明命令行设置已生效。注意引号内名称需与 networksetup -listallnetworkservices 输出完全一致(含空格或特殊字符)。
检查是否有高优先级的域名专用 DNS
/etc/resolver/ 下的文件会强制指定某些域名走特定 DNS,且优先级高于所有全局配置:
ls /etc/resolver/
若有文件(如 github.com 或 internal.local),可用:
cat /etc/resolver/github.com
查看内容是否含 nameserver xxx.xxx.xxx.xxx。这类配置常被忽略,却可能导致单个网站解析异常或变慢。
辅助判断:对比 resolv.conf 是否同步
虽然 /etc/resolv.conf 是只读映射(由系统动态生成),但它能反映当前 resolver 实际加载的结果:
cat /etc/resolv.conf
正常情况下,这里列出的 nameserver 应与 scutil --dns 中的前几项一致。如果不一致,说明 mDNSResponder 缓存未刷新或存在冲突配置(如 IPv6 DNS 干扰、DHCP 覆盖等)。


















