macos网络位置无法直接快切未创建项,但通过networksetup命令可高效查看、切换、配置dns及刷新缓存:用-getcurrentlocation/listlocations/switchlocation管理位置;-setdnsservers为服务设dns;-createlocation创建新位置;dscacheutil与killall刷新dns缓存。
macos 的网络位置(location)本身不能“快切”到未创建的位置,但通过终端命令可以高效完成查看、切换、配置 dns 和刷新缓存等操作,实现接近一键切换的效果。关键在于用 networksetup 命令配合已有位置,无需打开图形界面。
查看和切换当前网络位置
系统会记录所有已创建的位置,终端可即时读取并切换:
- 查看当前激活的位置:
networksetup -getcurrentlocation - 列出全部位置名称:
networksetup -listlocations - 切换到指定位置(如“办公室”):
networksetup -switchlocation "办公室"
⚠️ 切换后系统不会自动重载网络服务。建议执行 sudo ifconfig en0 down && sudo ifconfig en0 up(en0 替换为你的实际网口,如 en1、en2 或 bridge0),或在“系统设置→网络”中点一次“应用”以确保新配置生效。
为指定位置下的服务配置 DNS
网络位置不直接存 DNS,而是由其包含的网络服务(如 Wi-Fi、以太网)各自保存。因此需先切换位置,再配置对应服务:
- 切换至目标位置:
networksetup -switchlocation "家庭" - 查看该位置下启用的服务:
networksetup -listallnetworkservices - 为“Wi-Fi”设两个 DNS:
networksetup -setdnsservers "Wi-Fi" 223.5.5.5 119.29.29.29 - 恢复自动获取 DNS:
networksetup -setdnsservers "Wi-Fi" automatic - 验证是否写入成功:
networksetup -getdnsservers "Wi-Fi"
创建新位置并预置 DNS(命令行辅助)
终端无法完全 GUI 化新建位置,但可通过一条命令快速初始化并填充配置:
- 创建名为“开发环境”的新位置,并继承当前配置:
networksetup -createlocation "开发环境" populate - 立即切换并配置:
networksetup -switchlocation "开发环境" - 设置 Wi-Fi 的 DNS 和静态 IP(可选):
networksetup -setmanual "Wi-Fi" 192.168.1.200 255.255.255.0 192.168.1.1 && networksetup -setdnsservers "Wi-Fi" 127.0.0.1 8.8.8.8
之后只需 -switchlocation,整套参数(DNS、IP、代理等)即刻加载。
刷新 DNS 缓存确保解析生效
DNS 设置写入后,系统缓存可能仍返回旧结果。必须手动刷新:
- macOS Ventura 及更新版本:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - 验证是否生效:用
nslookup example.com或dig example.com查看解析服务器是否为刚设的地址
把以上命令组合成 shell 脚本,就能实现“一个命令切换位置 + DNS + 刷新缓存”的真正快切体验。











