IP 判官 ipjudge.org

文章 ·

DNS 泄露:开了代理,DNS 为什么还在国内

打开网页之前,设备要先把域名换成 IP,这一步叫 DNS 解析,由「解析器」完成。代理接管的是连接,DNS 查询不一定跟着走。出口已经在海外,DNS 查询却还交给国内运营商或国内的解析器,就是 DNS 泄露。它暴露的主要是你所在的网络:解析器的运营者能看到你查了哪些域名,做检测的网站能看到解析器在哪里。ChatGPT、Claude 等平台会不会检查这一项,没有公开说明。

一图看懂:出口在海外,DNS 却在国内网页连接经代理从海外出口出去;DNS 查询不一定跟着代理走,仍交给国内的解析器,运营者看到你查的域名,网站看到解析器在国内。 一图看懂:出口在海外,DNS 却在国内 网页连接 走代理 浏览器 代理软件 海外出口 网站看到的是代理出口 DNS 查询(先把域名换成 IP) 泄露 设备 不跟代理走 国内解析器 运营者看到你查的域名,网站看到它在国内 改法:让 DNS 和出口在同一侧。
代理接管的是连接,DNS 查询不一定跟着走。出口和解析器不在一侧,就是一组对不上的信号。

DNS 查询是怎么走的

一次解析通常分两段:设备把域名发给解析器(运营商下发的,或者你自己填的公共 DNS),解析器再去问这个域名的权威 DNS 服务器。按 RFC 7871 的说法,权威服务器收到的查询大多来自中间的递归解析器,它看到的是解析器的地址,不是你的地址。

传统 DNS 是明文的。Mozilla 的 DoH 说明写到,这种连接没有加密,第三方很容易看到你要访问哪个网站。

泄露以后,谁能看到什么

  • 解析器的运营者:看到你查询的每一个域名。解析器属于国内运营商,这些记录就留在国内。
  • 途经的网络:明文查询在路上能被看到,也可能被干扰。防止途经设备干扰 DNS,是 RFC 8484(DNS over HTTPS,简称 DoH)列出的两个设计目标之一。
  • 网站自己的权威 DNS:看到解析器的 IP,从而知道它在哪个国家、属于哪家运营商。检测站就是这样看到的。
  • 解析器附带 ECS 时:有的解析器会把你 IP 的一段(EDNS Client Subnet,简称 ECS)一并转给权威服务器。RFC 7871 第 11.1 节写明,这时你的网段对参与解析的所有服务器、以及 DNS 包经过的网络都可见;它建议 IPv4 截到 24 位、IPv6 截到 56 位,所以对方拿到的是你所在的一段地址,不是完整 IP。
一次 DNS 查询的两段,漏在哪第一段:设备把域名发给解析器,传统 DNS 是明文,途经网络能看到、能干扰,解析器的运营者看到每一个域名。第二段:解析器去问网站的权威 DNS,权威 DNS 看到的是解析器的 IP;解析器附带 ECS 时,你 IP 的一段也会转过去。 一次 DNS 查询的两段,漏在哪 你的设备 第一段:设备 → 解析器 传统 DNS 是明文,途经网络能看到 解析器 运营者看到每一个域名 属于国内运营商时,记录留在国内 第二段:解析器 → 权威 DNS 带 ECS 时,你的网段也转过去 网站权威 DNS 看到解析器的 IP,不是你的 检测站就是这样看到解析器的 ECS:把你 IP 的一段转给权威 DNS 建议 IPv4 截到 24 位、IPv6 截到 56 位 加密(DoH)防的是途经偷看,解析器照样看得到。
泄露发生在第一段:查询交给了哪家解析器,哪家就看到你查的域名,网站也从第二段看到它在哪。

平台这一侧:AI 平台没有公开风控细则,也没有说明会不会看访客的解析器。技术上,任何网站只要能看到自己域名的权威 DNS 查询,就能用同样的办法看到解析器。所以 DNS 泄露不必当成「一定会被封」,但出口在海外、解析器在国内,本身是一组对不上的信号。

IP 判官怎么检测

首页和 Claude、ChatGPT、Muse 专项检测页都会跑这一项,结果在「浏览器与连接检查」的「DNS 解析器」一行:

  1. 页面随机生成一个 12 位字符串,访问 4 个从没人查过的子域名:随机串-1.t.ipjudge.org 到 随机串-4.t.ipjudge.org。
  2. 名字是全新的,任何缓存里都没有,你的解析器只能去问 t.ipjudge.org 的权威 DNS。这台权威 DNS 是我们自己的探针服务器,用独立 IP,不经过 CDN。它记下每一个来查询的服务器地址;查询里带着 ECS 的,也记下那段网段。
  3. 页面取回这份记录,用本地 IP 库查出每个解析器所在的国家和网络(ASN),再和打开本站的出口所在国家比较。最多列出 6 个解析器。

判定规则:

  • 出口不在中国大陆,而有解析器在中国大陆:泄露到国内。
  • 出口不在中国大陆,解析器附带的 ECS 网段在中国大陆:同样记为泄露到国内,因为你的真实网段被转告给了网站的 DNS。
  • 解析器和出口在不同国家,但不属于上面两种:地区不一致,只作提示。
  • 国家一致:未泄露。这一次没有记录到任何解析器:未知,刷新重测即可。
IP 判官怎么判 DNS 泄露页面访问全新的随机子域名,解析器只能去问我们的权威 DNS 探针,探针记下解析器,再和出口所在国家比较。出口不在中国大陆而解析器或 ECS 网段在大陆,判泄露到国内;国家不同的其他情况只提示地区不一致;国家一致为未泄露;没记录到解析器为未知。 IP 判官怎么判 DNS 泄露 检测:每次都用新名字 随机子域名 探针记录 比对国家 名字全新,解析器只能来问我们的探针 判定 泄露到国内 出口不在大陆,解析器在大陆或 ECS 网段在大陆 地区不一致 国家不同的其他情况,只作提示 未泄露 解析器和出口国家一致 未知 这次没记录到解析器,刷新重测 探针只在内存里保存记录 10 分钟,不写入磁盘。
只有出口不在中国大陆、而解析器或 ECS 网段在大陆时,才判「泄露到国内」;「地区不一致」不扣分。

在 Claude 环境分里,「DNS 走国内」在 20 分的「泄露」项中扣 8 分;Muse 注册环境分扣 5 分。这是 IP 判官按常见风控信号定的权重,不是平台公布的规则,完整说明见 判定方法。探针只在内存里保存「随机串 → 解析器」的对应关系 10 分钟,不写入磁盘。

常见原因

1. 代理只接管了连接,没有接管 DNS。查询照旧按系统设置发给路由器或运营商下发的解析器。开了 TUN(虚拟网卡)模式也不一定够:以开源代理内核 mihomo 为例,它的 TUN 文档写明,在 macOS、Windows 上无法自动劫持发往局域网地址的 DNS 请求;Android 开着 Private DNS 时,也无法自动劫持。

2. 域名先在本机解析,再交给代理。SOCKS5 协议允许把域名原样交给代理(RFC 1928 里的 DOMAINNAME 地址类型),但程序不一定这样用。以 curl 为例,官方手册写明 --socks5(即 socks5://)在本地解析主机名,--socks5-hostname(即 socks5h://)才让代理解析。

3. 按 IP 分流的规则触发本机解析。规则要按目标 IP(例如某个国家的 IP 段)决定走向,软件就得先知道域名对应的 IP。mihomo 的 规则文档写明,匹配到这类规则时会触发 DNS 解析,加 no-resolve 参数可以跳过。解析用的是软件里配置的 DNS 服务器,如果那是国内的解析器,查询就留在国内。

4. fake-ip 一类模式的例外。fake-ip 模式下,本机程序查询域名得到的是 fake-ip-range 网段里的占位地址,不是真实地址(mihomo DNS 文档的示例配置用 198.18.0.1/16)。但列在 fake-ip-filter 里的域名不分配占位地址,要真正去解析;DNS 服务器本身的连接走不走代理,也要另外设置(同一文档里的 respect-rules 让 DNS 连接遵守分流规则,并要求同时配置 proxy-server-nameserver)。

5. 浏览器自己的安全 DNS。Chrome 帮助页面写明,安全 DNS 默认以自动模式开启,查找出问题时会改用未加密方式。Chrome 企业政策 DnsOverHttpsMode 说明,没有设置这项政策的非受管设备上,浏览器可能把加密查询发给与系统解析器相关联的服务商。系统解析器在国内,加密后可能还是同一家。Firefox 的 默认保护出问题时回退到默认解析器,VPN、家长控制或企业策略生效时会停用 DoH。另外,DoH 通常走 HTTPS 的 443 端口,只拦截 53 端口的 DNS 接管设置拦不到它。

6. IPv6 的 DNS。IPv6 网络里,路由器可以通过路由通告(RA)直接给设备下发 DNS 服务器地址(RFC 8106)。只改了 IPv4 的 DNS,或者代理只接管了 IPv4,查询就可能经 IPv6 发给运营商的解析器。

怎么改

目标是让 DNS 和出口在同一侧:要么把域名交给代理,由出口那一侧解析;要么让解析器的连接也经过代理。具体选项因软件而异,原则如下:

  1. 在代理软件里找「远程解析」「接管 DNS」一类的设置;用 TUN 模式时开启 DNS 劫持,并留意上面提到的系统限制。
  2. 检查有没有按 IP 分流的规则让域名在本机解析,以及软件里配置的 DNS 服务器是谁、连接走不走代理。
  3. 浏览器的安全 DNS 二选一:交给代理处理,或者选一个自定义提供商,并确认这条加密连接本身经过代理。Chrome 在 设置 → 隐私与安全 → 安全 → 高级 → 使用安全 DNS,帮助页面写明选了自定义提供商就不会退回未加密模式;Firefox 在设置里的 DNS over HTTPS 部分。
  4. 双栈网络上,确认代理同时接管了 IPv6,或者把 IPv6 的 DNS 设置一并改掉。
  5. 命令行里用 curl 等支持 SOCKS5 的工具时,写成 socks5h:// 这种让代理解析的形式。
  6. 改完回 首页 重测。每次检测都用新的随机子域名,不受上一次缓存影响。

DNS 之外,WebRTC 也可能让网页拿到另一个 IP,见 WebRTC 泄露。

常见问题

显示「地区不一致」算泄露吗?

IP 判官不把它算作泄露,也不扣分。解析器和出口不在同一个国家时,按查询来源位置返回结果的网站(例如 CDN)可能把你分到离出口较远的服务器,RFC 7871 的引言讲的就是这个问题。

开了浏览器的安全 DNS,就不会泄露了吗?

不一定。加密防的是途经网络偷看和干扰,解析器的运营者照样看得到查询,Mozilla 也写明它的 DoH 合作方能看到用户的查询。自动模式还可能沿用系统解析器的服务商,出问题时回退到未加密查询。以检测结果为准。

页面显示的解析器 IP,为什么和我设置的 DNS 地址不一样?

探针记录的是实际来查询的那台服务器的地址。你填的可能是路由器、代理软件或公共 DNS 的服务地址,它们会转给上游,或者从自己的其他服务器出去查询,所以看到的常常是另一个 IP。判断时看国家和运营商就够了。

出口本来就在国内,会判 DNS 泄露吗?

不会。「泄露到国内」只在出口不在中国大陆时判定;出口在国内、解析器在别处,只提示地区不一致。

ChatGPT、Claude 会因为 DNS 泄露封号吗?

没有公开资料能回答。平台看得最清楚的是你连接它时的出口 IP,见 ChatGPT、Claude 看到的是哪个 IP。DNS 泄露更直接的后果,是国内运营商能看到你访问的域名。修好它,是让各项网络信号保持一致、少暴露一些信息;其他信号见 Claude 验证的 6 个网络信号。

想知道你自己的 IP 属于哪一类?

免费检测我的 IP