有一类问题特别让人困惑:客户端显示已连接,延迟测试正常,但浏览器就是打不开网页——转圈一会儿,然后提示”无法访问此网站”。
这种情况下,链路本身多半是通的,问题出在域名解析这一步。浏览器还没能把域名变成 IP 地址,自然谈不上传输数据。
DNS 在做什么
你输入 example.com,设备并不知道该往哪里发数据。它需要先向 DNS 服务器询问:“这个域名对应哪个 IP?“拿到答案后,才能建立连接。
这个环节涉及三个可能出问题的地方:
- 向谁询问(用的是哪个 DNS 服务器);
- 在哪里询问(本地网络还是代理侧);
- 拿到的答案对不对。
三者任何一环出问题,都会表现为”连着但打不开”。
判断是不是 DNS 问题
方法一:用 IP 直接访问
如果你知道某个服务的 IP 地址,直接用 IP 访问。IP 能通而域名不通,基本可以锁定是解析问题。
方法二:命令行测试
Windows(在命令提示符里):
nslookup example.com
macOS / Linux(在终端里):
nslookup example.com
观察返回结果:
- 提示超时或找不到服务器 → 解析请求发不出去;
- 返回了一个明显不合理的地址 → 解析结果被干扰;
- 返回正常但网页仍打不开 → 问题可能不在 DNS,转到节点超时排查。
方法三:换浏览器或用隐私窗口
浏览器自身也有缓存。用另一个浏览器或隐私窗口访问同一个网址,可以排除缓存干扰。
什么是 DNS 泄漏
这是使用代理时最典型的 DNS 问题。
正常情况下,域名解析应该在代理侧完成——你把域名交给节点,由节点去解析并连接。这样得到的结果才是适合该节点访问的地址。
但如果配置不当,设备会用本地网络的 DNS去解析,然后把解析出的地址交给代理。这就叫 DNS 泄漏。后果是:
- 解析出的地址可能不适合从该节点访问;
- 解析结果本身可能就是错误的;
- 你访问了哪些域名,会暴露给本地网络的 DNS 服务器。
表现出来就是:连接一切正常,但某些网站打不开。
处理方式
优先:让客户端接管解析
大多数客户端都有相关选项,名称类似:
- 远程解析 / Remote DNS
- 防止 DNS 泄漏 / DNS Leak Protection
- enhanced-mode / fake-ip 模式(Clash 类客户端)
打开它们,让域名解析在代理侧完成。这是最有效的一条。
修改后记得重启客户端并清理系统 DNS 缓存,否则旧的解析结果可能还在生效。
其次:在客户端里指定 DNS 服务器
如果客户端支持自定义 DNS,可以填入一个明确的公共 DNS 地址。注意:
- 在客户端里配置,比在系统里配置更合适——这样解析请求会跟着代理走;
- 不要同时在系统和客户端里设置互相冲突的 DNS。
系统层面修改(谨慎)
在系统里改 DNS 也是一种方式,但要理解它的局限:如果解析请求本身在传输途中被干扰,仅仅换一个服务器地址不一定有效。
Windows:设置 → 网络和 Internet → 属性 → DNS 服务器分配 → 手动。
macOS:系统设置 → 网络 → 详细信息 → DNS。
Android / iOS:在 Wi-Fi 的详细设置里修改,或使用系统的私有 DNS 功能。
手机上的注意事项:修改系统 DNS 可能与客户端的 DNS 设置冲突。建议二选一,优先使用客户端的设置。
清理 DNS 缓存
改动之后一定要清缓存,否则旧结果会继续生效。
Windows(管理员身份运行命令提示符):
ipconfig /flushdns
macOS(终端,需要输入密码):
sudo dscacheutil -flushcache
手机:打开飞行模式十秒后关闭,或者重启设备。
浏览器:Chrome 类浏览器可以在地址栏访问 chrome://net-internals/#dns 清理其内部缓存。
几个具体场景
场景一:换节点后某网站打不开
上一个节点的解析结果被缓存了下来,和新节点不匹配。清理 DNS 缓存并重启客户端。
场景二:只有个别网站打不开
先检查分流规则——那个域名可能被规则归到了直连。临时切到全局模式测试一次,如果正常,就说明是规则问题。
场景三:公司或校园网下异常
这类网络常常强制指定 DNS 服务器,甚至拦截外部的 DNS 请求。处理方式是让客户端接管解析。如果网络限制严格,可能需要换用不同的传输方式。
场景四:Wi-Fi 正常但移动数据异常
运营商在移动网络下使用的 DNS 与固网不同。详细排查见移动数据无法连接。
场景五:路由器上设置了 DNS
家里的路由器如果配置了自定义 DNS,会影响所有连接它的设备。登录路由器管理界面检查一下,必要时改回自动获取。
排查清单
- 用 IP 直接访问,确认是否为解析问题
-
nslookup查看解析结果是否合理 - 客户端里开启远程解析 / 防 DNS 泄漏
- 清理系统与浏览器的 DNS 缓存
- 检查分流规则是否把该域名归到了直连
- 确认路由器没有设置异常 DNS
- 换一条网络复测