在Mac终端用networksetup命令可永久设置DNS:先-listallnetworkservices查服务名,再-setdnsservers "服务名" IP1 IP2覆盖配置,-getdnsservers验证;支持按网络位置批量设置,用-listlocations、-switchlocation切换并配置。

想在Mac终端里直接设置DNS服务器地址,避免图形界面反复点击,同时确保配置永久生效、不随网络重连丢失。
用networksetup命令设置DNS
打开“终端”(可通过聚焦搜索启动),这是唯一需要的入口,无需进入系统设置或重启网络服务。
执行以下命令查看当前所有网络服务名称:
networksetup -listallnetworkservices
输出中会列出类似“Wi-Fi”“以太网”“Thunderbolt Bridge”的条目。注意名称中若含空格,后续命令中必须用英文双引号包裹,否则命令会报错。
确认目标服务名后,运行设置命令:
networksetup -setdnsservers "Wi-Fi" 223.5.5.5 114.114.114.114
这条命令会**完全覆盖**该服务原有的DNS列表,原有DHCP自动获取的DNS将被清空。如果你只想追加而非替换,必须先用-getdnsservers查出当前值,再手动拼接后重新-set——networksetup不支持增量添加。
设置完成后立即验证:
networksetup -getdnsservers "Wi-Fi"
终端应逐行返回你刚填入的两个IP地址。若显示“There aren't any DNS servers set”,说明服务名错误或引号缺失;若只返回一行旧地址,说明命令未真正执行成功。
恢复DHCP自动获取DNS
方法一:执行命令
networksetup -setdnsservers "Wi-Fi" automatic
方法二:直接删掉DNS配置项(效果等同于automatic)
networksetup -setdnsservers "Wi-Fi"
【注意】两种方式都会清除所有手动设置的DNS,且无法撤销。若未提前记录原DNS地址,恢复后可能暂时无法解析域名。
为不同网络位置批量设置DNS
第一步:列出所有已定义的位置
networksetup -listlocations
第二步:切换到目标位置(例如“公司内网”)
networksetup -switchlocation "公司内网"
第三步:对该位置下的指定服务设置DNS
networksetup -setdnsservers "Wi-Fi" 192.168.10.2 114.114.114.114
第四步:切回原位置验证是否隔离生效
networksetup -switchlocation "自动"
这一步操作起来很简单,直接把位置名填进命令就行,但必须确保位置名与-listlocations输出完全一致,包括中文标点和空格。大小写敏感,引号不可省略。











