自定义DNS后无法上网,大概率是配置破坏内网兼容性;现象为微信等App正常但浏览器打不开内网页面,验证用nslookup查内网域名是否失败,优先还原DHCP自动获取DNS,必要时按优先级配置内网DNS+公网DNS备用,并检查hosts、IPv6及缓存。
自定义 dns 配置后无法上网,大概率不是 dns 本身错了,而是配置方式破坏了网络环境的兼容性——尤其当你要访问公司内网、校园资源或本地服务时,硬塞公网 dns(比如 8.8.8.8)会直接绕过内网 dns 解析能力,导致私有域名全部失效。
确认是不是 DNS 配置冲突
先看现象是否匹配:能用微信、钉钉等 App(它们用 IP 直连或自带 DNS),但浏览器打不开网页;或者只能打开公网网站,公司 OA、内部 Git、打印机管理页等全失败。这说明系统正在用你设的公网 DNS,而它根本不知道内网域名对应哪个 IP。
验证方法:
- 终端运行 scutil --dns,查看当前生效的 DNS 列表,注意是否有你手动加的地址,且是否排在最前面
- 运行 nslookup internal.example.com(把 internal.example.com 换成你单位/学校的任意内网域名),如果返回 server can't find 或超时,基本可断定公网 DNS 不支持该解析
优先还原为 DHCP 自动获取 DNS
这是最稳妥的起点,尤其当你不确定网络环境依赖什么 DNS 时:
- 打开终端,执行:
sudo networksetup -setdnsservers Wi-Fi Empty
(请将 Wi-Fi 替换为你实际的服务名,如 Ethernet、iPhone USB) - 再执行:
sudo networksetup -setdhcp Wi-Fi
强制重新获取 DHCP 分配的完整配置,包括正确的 DNS 和搜索域 - 断开 Wi-Fi 再重连,或重启 mDNSResponder:
sudo killall -HUP mDNSResponder
若必须用自定义 DNS,要保留内网兼容性
不能只填 8.8.8.8,得让系统“分情况处理”:
- 进入「系统设置 → 网络 → 当前连接 → 详细信息… → DNS」
- 点击 + 添加 DNS 服务器,按顺序填入:
• 第一行:你单位路由器或内网 DNS 地址(如 192.168.1.1)
• 第二行:1.1.1.1 或 114.114.114.114(作备用,仅当内网 DNS 失效时 fallback) - 切到「高级 → DNS」,勾选「忽略来自 DHCP 服务器的 DNS 服务器地址」——但仅在你明确知道内网 DNS 地址且稳定时启用
- 回到「高级 → TCP/IP」,确认「配置 IPv4」仍是「使用 DHCP」,不要改成「手动」,否则可能丢掉内网网关和路由
顺手检查干扰项
有些问题看着像 DNS,其实是被其他机制覆盖了:
- 终端运行 sudo nano /etc/hosts,检查有没有把常用域名映射到 0.0.0.0 或错误 IP 的行,有就删掉并保存
- 「系统设置 → 网络 → 当前连接 → 详细信息… → IPv6」中,把「配置 IPv6」临时设为「关闭」,排除双栈 fallback 掩盖真实问题
- 刷新 DNS 缓存:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder


















