我正在尝试记录DNS“泄漏”,也就是访问我的网站的访客使用的DNS服务器。
如何找出Web请求来自哪个DNS服务器(即获取DNS泄漏)。这个网站dnsleaktest.com做到了,它知道我来自哪个DNS服务器?为什么?它只能知道一些关于我的浏览器的统计数据,以及可能的HTTP referer。它怎么知道我的DNS服务器?
是什么被利用或者被使用了?还是从我的浏览器到这个服务器的流量,dnsleaktest 能够从这个流量中获取这些信息吗?
我正在尝试记录DNS“泄漏”,也就是访问我的网站的访客使用的DNS服务器。
如何找出Web请求来自哪个DNS服务器(即获取DNS泄漏)。这个网站dnsleaktest.com做到了,它知道我来自哪个DNS服务器?为什么?它只能知道一些关于我的浏览器的统计数据,以及可能的HTTP referer。它怎么知道我的DNS服务器?
是什么被利用或者被使用了?还是从我的浏览器到这个服务器的流量,dnsleaktest 能够从这个流量中获取这些信息吗?
这并不是那么容易。
DNS泄漏可能的做法是,他们拥有自己的权威DNS服务器,网站上的JavaScript查询其域的各种随机生成的子域名,在其DNS服务器上,他们监控对这些随机生成的子域名的请求来源。
为此,您需要在您自己的DNS服务器上托管一些域(而不是由您的注册商或托管提供者提供的服务器)。您需要监控对此服务器的查询-如果您解析DNS服务器日志或拥有自己的DNS服务器软件,或者如果您的DNS服务器提供某些API挂钩以查看传入的请求,则可以完成此操作。然后,您编写一个脚本,用于查询各种子域,并告诉您的网站上的服务器端脚本应该监视哪些子域请求。服务器端脚本反过来与DNS服务器通信。
以上所有内容都是未经验证的猜测。我没有看到其他方法可以做到这一点。
laiuwerhflkjsfn.dnsleaktest.com
的查询将被发送到其中一个__dnsleaktest.com__ DNS服务器。之后,其他DNS服务器可能会缓存结果,因此后续查询可能无法到达dnsleaktest.com服务器,这就是为什么我假设他们为每个测试查询新的唯一子域的原因。 - Sandman4