DNS 问题 · 故障排查

代理 DNS 问题怎么解决

作者:机场a 编辑部 更新: 阅读约 3 分钟

代理 DNS 问题,最常见的原因是系统直接用本地 DNS 解析被污染的域名,或者客户端 DNS 功能没有开启、配置不当。最快的办法是:在客户端中开启内置 DNS(多数情况下用 fake-ip 模式),然后清除系统 DNS 缓存并重启浏览器。

问题表现

现象 可能的 DNS 问题
网站提示 DNS_PROBE_FINISHED_NXDOMAIN 或「找不到服务器」 解析失败
网站解析到错误 IP,连接被重置 DNS 污染
DNS 泄露检测网站显示本地运营商的 DNS DNS 泄露
关闭代理后部分网站打不开,ping 显示 198.18.x.x fake-ip 缓存残留
局域网设备、游戏联机、时间同步异常 这些域名拿到了假 IP
国内网站变慢或打开了海外版本 国内域名被境外 DNS 解析,CDN 调度错误

可能原因

  1. DNS 污染:在国内网络中直接查询部分境外域名,可能得到错误结果;
  2. 客户端 DNS 未开启:系统 DNS 请求没有经过客户端,规则无法按域名正确匹配;
  3. DNS 泄露:只设置系统代理(非 TUN)时,部分程序仍用本地 DNS 查询。这不一定影响上网,但会暴露访问的域名,详见《DNS 泄露检测与防护》;
  4. fake-ip 残留:fake-ip 模式会给域名分配 198.18.0.0/16 段的假地址,客户端退出后系统或浏览器缓存仍保留这些地址;
  5. nameserver 配置不当:国内外 DNS 的分流设置有误,或填写的 DNS 服务器在当前网络无法访问;
  6. 浏览器安全 DNS(DoH):浏览器自行使用 DoH,绕过了客户端的 DNS 设置。

排查方法

  1. 对比不同 DNS 的解析结果(Windows cmd、PowerShell、macOS、Linux 都可用 nslookup):

    nslookup www.google.com
    nslookup www.google.com 223.5.5.5

    在未开启代理时,如果解析失败或结果明显异常,说明本地网络存在污染或 DNS 服务器问题。

  2. 检查是否有 fake-ip 残留:关闭代理后执行 ping 域名,如果返回 198.18. 开头的地址,就是缓存残留。

  3. 查看客户端 DNS 设置:确认已开启 DNS、enhanced-mode 是 fake-ip 还是 redir-host,nameserver 是否可用。两种模式的差别见《Fake-IP 与 Redir-Host 的区别》。

  4. 检查浏览器安全 DNS:Chrome 在「设置 → 隐私和安全 → 安全」中查看「使用安全 DNS」;Firefox 在设置中搜索「DNS over HTTPS」。

  5. 查看客户端日志:把日志级别调到 info 或 debug,搜索 dns 相关报错,例如超时或连接被拒绝。

解决步骤

1. 清除 DNS 缓存

Windows(cmd,以管理员身份运行):

ipconfig /flushdns

Windows(PowerShell):

Clear-DnsClientCache

macOS:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Linux(使用 systemd-resolved 的发行版):

sudo resolvectl flush-caches

浏览器:Chrome 可打开 chrome://net-internals/#dns 点击「Clear host cache」,或直接重启浏览器。

2. 开启客户端 DNS 并使用 fake-ip

以 mihomo(Clash Meta 内核)配置为例,具体 DNS 服务器按需选择:

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - https://223.5.5.5/dns-query
    - https://doh.pub/dns-query

图形客户端一般在「DNS 覆写」或相关设置中提供同样选项,可参考《Clash Verge Rev 教程》。更完整的配置说明见《DNS 设置教程》。

3. 处理 fake-ip 兼容问题

局域网设备发现、部分游戏、NTP 时间同步等不适合使用假 IP,可在 fake-ip-filter 中加入相关域名,让它们返回真实 IP。具体列表和写法见《fake-ip 兼容问题排查》。

4. 减少 DNS 泄露

  • 使用 TUN 模式并开启 DNS 劫持,让所有 DNS 请求进入客户端;
  • 关闭浏览器的安全 DNS,或将其设置为与客户端一致;
  • 使用规则模式,确保境外域名的解析与连接都通过代理完成。

验证结果

  • nslookup 与浏览器访问都正常,不再出现解析失败;
  • 关闭代理后 ping 域名返回真实 IP,而不是 198.18.x.x;
  • DNS 泄露检测网站显示的 DNS 服务器与预期一致;
  • 国内网站打开速度恢复正常。

其他方案与求助

DNS 问题基本属于客户端配置问题,一般不需要联系机场客服。但如果机场下发的配置文件中 DNS 段写法有误,导致所有用户都解析失败,可以向机场反馈,并附上客户端版本与日志中的 DNS 报错。若解析正常但网页仍打不开,请看《节点延迟正常但打不开网页》。如果同一机场长期频繁出问题,可以参考《稳定机场》里的长期记录。

常见问题

开代理后国内网站反而变慢了,是 DNS 的问题吗?

很可能是。国内域名如果被境外 DNS 解析,会拿到海外 CDN 地址,访问就会变慢。检查 nameserver 是否为国内可用的 DNS,或用 nameserver-policy 让国内域名走国内 DNS。

ping 出来是 198.18 开头的地址正常吗?

开启 fake-ip 时这是正常现象,说明客户端在接管 DNS。只有在关闭客户端后仍然出现,才说明有缓存残留,清除缓存即可。

需要把电脑网卡 DNS 改成 8.8.8.8 吗?

通常不需要。开启客户端 DNS 和 TUN 后,系统 DNS 请求会被客户端接管;手动改成境外 DNS 反而可能让国内网站变慢。

手机上也会遇到这些 DNS 问题吗?

会。安卓端客户端一般默认使用 VPN 模式接管 DNS,问题较少;iOS 上可以在 Shadowrocket、Quantumult X 等客户端的 DNS 设置中调整,思路相同。

相关阅读

按 ⌘K / Ctrl+K 打开搜索