macOS通过“网络位置”功能可为不同场景(如家庭、公司)分别配置专属DNS,切换位置即自动生效。具体操作:系统设置→网络→编辑位置→新建并命名位置→选中接口→DNS标签页添加服务器→应用保存;顶部菜单栏或控制中心可快速切换,终端用networksetup -switchlocation命令也可实现。

在 macOS 中为不同位置分配专属 DNS,核心是利用系统内置的“网络位置”功能——它允许你为家庭、公司、出差等场景分别保存整套网络配置,包括 DNS 服务器、IP 设置、代理选项等,切换位置即自动生效,无需重复手动设置。
创建独立网络位置并绑定 DNS
每个位置可配置完全不同的 DNS 列表,互不影响:
- 打开“系统设置” → “网络”,点击右下角“详细信息…”(Ventura 及更新)或“高级…”(Monterey 及更早)
- 点击顶部“位置”旁的“编辑位置…”,再点左下角“+”新建位置,例如命名为“公司内网”
- 选中该新位置后,在左侧服务列表中选中实际使用的接口(如“Wi-Fi”或“以太网”)
- 点击右侧“详细信息…” → 切换到“DNS”标签页 → 点击“+”逐条添加专属 DNS,比如填入 192.168.10.2 和 114.114.114.114
- 点击“好”,再点“应用”完成保存
快速切换位置与 DNS 配置
切换位置后,系统会立即启用对应 DNS,所有后续域名解析都走新配置:
- 屏幕顶部菜单栏点击苹果图标 → “位置” → 选择已创建的位置(如“家庭宽带”、“咖啡馆”)
- 也可通过控制中心快捷开关:点击右上角控制中心图标 → 展开“网络”区域 → 点击位置名称直接切换
- 终端命令同样支持:运行 networksetup -switchlocation "公司内网" 即可一键切换(需提前用 networksetup -listlocations 查看可用名称)
验证 DNS 是否按位置生效
切换后建议确认当前 DNS 是否已更新:
- 终端执行 scutil --dns,查看输出中“nameserver[0]”是否为你刚设的地址
- 运行 networksetup -getdnsservers "Wi-Fi"(替换为你的服务名),确认返回值匹配该位置设定
- 测试解析:nslookup example.com 或 dscacheutil -q host -a name example.com,观察是否使用目标 DNS 响应
注意事项与常见问题
避免配置失效或冲突的关键细节:
- 每个位置的 DNS 设置只对本位置生效;默认“自动”位置的修改不会影响其他位置
- 若同时启用了 /etc/resolver/ 下的域名级规则(如 /etc/resolver/example.com),它会优先于位置 DNS,用于特定域名分流
- 修改后无需重启,但部分 App(如浏览器)可能缓存旧 DNS 结果,可手动刷新或执行 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
- 确保 DNS 地址格式正确(纯 IPv4/IPv6 地址,不带 http:// 或端口号)


















