捕获DNS泄漏

7

我正在尝试记录DNS“泄漏”,也就是访问我的网站的访客使用的DNS服务器。

如何找出Web请求来自哪个DNS服务器(即获取DNS泄漏)。这个网站dnsleaktest.com做到了,它知道我来自哪个DNS服务器?为什么?它只能知道一些关于我的浏览器的统计数据,以及可能的HTTP referer。它怎么知道我的DNS服务器?

是什么被利用或者被使用了?还是从我的浏览器到这个服务器的流量,dnsleaktest 能够从这个流量中获取这些信息吗?


我认为这是不可能的,也许他们是自己的DNS服务器,并且只是进行IP匹配(他们可能有多个IP与所请求的IP匹配)? - boruch
由于某些原因,URL没有出现在原始帖子中。该网站http://www.dnsleaktest.com/可以实现此功能。他们是如何做到的? - revi
@boruch,您指的是哪个IP地址?他们怎么会知道我的DNS服务器的IP地址呢? - revi
这是设计上绝对不可能的。为什么要使用“泄漏”这个术语?你认为有什么在“泄漏”吗?dnsleaktest.com 是关于 VPN, 关于 VPN,而不是普通的 Web 服务器和客户端! - Greg A. Woods
@greg-a-woods dnsleaktest.com 能够识别出我的 DNS 服务器。如果这是设计上不可能的,它是如何做到的?我 _没有使用任何 VPN_。你试过这个网站吗?它能够识别出你的 DNS 服务吗? - revi
1个回答

9

这并不是那么容易。

DNS泄漏可能的做法是,他们拥有自己的权威DNS服务器,网站上的JavaScript查询其域的各种随机生成的子域名,在其DNS服务器上,他们监控对这些随机生成的子域名的请求来源。

为此,您需要在您自己的DNS服务器上托管一些域(而不是由您的注册商或托管提供者提供的服务器)。您需要监控对此服务器的查询-如果您解析DNS服务器日志或拥有自己的DNS服务器软件,或者如果您的DNS服务器提供某些API挂钩以查看传入的请求,则可以完成此操作。然后,您编写一个脚本,用于查询各种子域,并告诉您的网站上的服务器端脚本应该监视哪些子域请求。服务器端脚本反过来与DNS服务器通信。

以上所有内容都是未经验证的猜测。我没有看到其他方法可以做到这一点。


谢谢@Sandman4让我更接近理解这个问题!有一些问题——当你说他们查询“随机生成的子域名”时,这不是真的吗?那些域名的DNS信息必须在互联网上的各个DNS服务器上复制,并且他们无法控制解析该域或子域的确切服务器。如果是这样,他们如何保证我的DNS请求将从我的DNS服务器到达他们呢? - revi
如果您拥有一个名为dnsleaktest.com的域名,对laiuwerhflkjsfn.dnsleaktest.com的查询将被发送到其中一个__dnsleaktest.com__ DNS服务器。之后,其他DNS服务器可能会缓存结果,因此后续查询可能无法到达dnsleaktest.com服务器,这就是为什么我假设他们为每个测试查询新的唯一子域的原因。 - Sandman4
太棒了!所有的部分似乎都很合适,我也明白他们可能是如何做到这一点的。谢谢! - revi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接