你的 DNS泄露了吗?
打开网站之前,浏览器要先把域名交给一台 DNS 服务器去解析。页面让浏览器解析一组只用这一次的随机域名,再从我们的域名服务器那里看是谁来问的:开着代理,却有国内运营商的 DNS 服务器出现,你访问了哪些网站,国内 DNS 那边就看得到。
正在获取代理出口…
正在检测…
浏览器正在解析测试域名,通常 5 秒内完成。
替你解析域名的 DNS 服务器
- 检测完成后显示。
检测原理
DNS 查询是一层层转交的。你的设备把域名交给一台递归 DNS 服务器(运营商的、公共的,或者代理节点所在机房的),它再去问这个域名的权威服务器。本页用的测试域名,权威服务器是我们自己的,所以能看到最后是哪台递归服务器来问的。
-
没有泄露域名跟着代理走你的设备 代理节点 节点那边的 DNS
客户端把整个请求连同域名交给代理节点,由节点那边去解析。我们看到的 DNS 服务器在境外,通常和代理出口在同一个地区。
-
泄露域名先交给了国内 DNS你的设备 绕过代理 国内运营商 DNS
网页内容虽然走了代理,但域名先被交给了国内的 DNS 服务器解析。对方记下了你要访问的网站,网页本身照样能打开,所以平时察觉不到。
常见问题
开着代理,为什么还会出现国内 DNS 服务器?
最常见的原因是规则里有 GEOIP、IP-CIDR 这类按 IP 判断的规则。客户端要先知道目标 IP 才能匹配它们,于是用配置里 dns 一节的 nameserver 先解析一次域名,如果那里填的是国内 DNS,域名就交给了国内。以 Mihomo 为例,可以在这些规则末尾加上 no-resolve,或者开启 fake-ip 模式,并用 nameserver-policy 只让国内域名走国内 DNS。
只开了系统代理,没有开 TUN 模式,会泄露吗?
浏览器走系统代理时,通常把域名原样交给代理客户端,不自己解析,这时是否泄露取决于客户端的 DNS 设置。但不走系统代理的程序会直接用系统的 DNS,也就是运营商的 DNS。想让所有程序都不泄露,需要开启 TUN 模式。
列表里出现了 Google、Cloudflare 这类公共 DNS,正常吗?
正常。代理节点所在的机房常用公共 DNS 做上游,浏览器开了“安全 DNS”(DNS over HTTPS)时,也会直接交给你选的那家。只要它们不在大陆,就不算泄露。
一台 DNS 服务器都没有检测到,是怎么回事?
说明测试域名的查询没有到达我们的服务器。常见原因是广告拦截扩展或安全软件拦下了这些随机域名,或者当前网络屏蔽了它们。换一个浏览器或暂时关掉扩展再试一次。
检测会记录我的信息吗?
我们的域名服务器只记下来问的 DNS 服务器 IP,存在内存里,10 分钟后删除,不写日志。本站接口会把这些 DNS 服务器的 IP 交给 ipapi.is 查询所在地区和运营商,不会发送你自己的 IP。
延伸阅读
- GEOSITE 和 GEOIP 有什么不同为什么 GEOIP 规则要先解析域名,no-resolve 是做什么的。
- 分流检测先确认国内直连、谷歌走代理,再来查 DNS。
- WebRTC 检测另一种常见的绕过代理的方式。