macOS实际使用的DNS服务器列表及优先级顺序,由当前最高服务序号的活动网络服务所配置的DNS列表决定,图形界面中“DNS”标签页从上至下即为查询顺序,终端执行scutil --dns | grep nameserver可获取实时生效顺序。

想在Mac上快速确认当前系统实际使用的DNS服务器列表及其查询优先级顺序,避免因配置错乱导致域名解析失败或访问异常。
通过系统设置图形界面查看
这是最直观、无需命令行基础的方法,适合所有用户,且能直接看到DNS条目的排列顺序——系统按从上到下的顺序依次尝试查询。
点击屏幕左上角苹果图标 → 选择“系统设置” → 左侧点击“网络” → 在右侧服务列表中选中当前已连接的网络(如“Wi-Fi”) → 点击右下角的“详细信息…”按钮 → 切换到“DNS”标签页。
此时窗口中显示的IP地址列表即为当前生效的DNS服务器顺序,第一行是最高优先级,最后一行是备用兜底项。若列表为空,说明该服务正使用DHCP自动获取的DNS,未手动覆盖。
用终端命令快速验证
适用于需要脚本化检查、远程维护或多网口比对的场景,输出为纯文本,便于复制和自动化处理。
打开“终端”,执行:networksetup -getdnsservers "Wi-Fi"(请将"Wi-Fi"替换为你实际使用的网络服务名)。
终端会逐行输出当前配置的DNS服务器IP地址,顺序与图形界面中“DNS”标签页完全一致。如果返回“There aren't any DNS servers set”,说明该服务未手动设置DNS,正在使用DHCP分配的地址;若返回空行,则可能服务名错误或引号缺失。
【注意】networksetup不显示DHCP自动获取的DNS值,只显示你手动set过的或设为automatic的显式状态。
查看最终生效的底层DNS配置
系统所有网络服务的DNS最终都会汇总写入/etc/resolv.conf,这是内核实际读取的唯一来源。但macOS默认不直接写入此文件,而是由mDNSResponder动态生成——所以该文件内容可能滞后或为空。
方法一:运行scutil --dns | grep nameserver,输出中以nameserver开头的每行IP即为当前实时生效的DNS,顺序反映真实查询路径。
方法二:运行cat /etc/resolv.conf,若文件存在且非空,其内容代表当前最低层可见的DNS配置;但macOS Ventura及更新版本中该文件常为空或仅含注释,不可单独依赖。
这一步操作起来很简单,直接复制粘贴命令回车就行,但要注意:scutil结果才是真实生效顺序,/etc/resolv.conf只是快照,二者不一致时以scutil为准。


















