是否可以检测访客 DNS 服务器?

Posted

技术标签:

【中文标题】是否可以检测访客 DNS 服务器?【英文标题】:Is it possible to detect visitor DNS server? 【发布时间】:2012-05-30 02:33:56 【问题描述】:

检测访问者 IP 很容易。但是如何检测访问者的 DNS 服务器 ip 呢?

我找到了这个 php 函数,但是它只能找到域名的 DNS。

dns_get_record("website.com", DNS_ANY);

是否可以检测访客DNS服务器?

【问题讨论】:

简而言之:没有。更长:不,这是不可能的。 亲爱的朋友,这不可能…… 不可能?那么他们如何检测> whoer.net @user198989 — 这是负责保存与用户 IP 地址关联的名称的 DNS 服务器,而不是用户用来循环其他 IP 地址的 DNS 服务器。 【参考方案1】:

DNS 解析不是请求本身的一部分,这意味着请求的接收者无法知道客户端(浏览器)使用了哪个 DNS。

【讨论】:

【参考方案2】:

首先发生 DNS 请求,因为需要将主机名解析为 IP 地址。完成后,将对相关地址执行单独的请求。

【讨论】:

【参考方案3】:

答案是否定的。服务器得到的只是与访问者的 TCP 连接,即 [IP, Port] 对。 DNS 解析取决于访问者的本地配置,可以通过代理完成。

【讨论】:

【参考方案4】:

是的,您可以,例如检测访问者的页面分辨率。

您需要自己的 DNS 服务器并强制用户解析唯一的 dns 名称。如果用户试图解决它,那么他们将泄漏到您的 DNS 服务器自己的 DNS 服务器地址。在 DNS 服务器旁边必须分享谁询问了您的网络应用程序的唯一 dns 名称的信息。

【讨论】:

太棒了!我一直在寻找这个,因为这是 f-secure 和他们新的 dns 劫持分析工具使用的确切技术。谢谢! campaigns.f-secure.com/router-checker【参考方案5】:

这并不容易,但可以做到。在 http://ipleak.net/http://ipleak.net/Adam Dobrawy 的另一个答案中建议了该方法的演示

为了补充一点细节,你可以这样实现的方式是:

第 1 部分 - 在 myspecialdomain.com 上设置您自己的 DNS 服务器

需要自定义编写此 DNS 服务器以记录和存储传入请求和源 IP 地址。这种存储只需要很短的时间,所以像 memcache 这样的东西可能会很好地工作。 DNS 响应应该是 NXDOMAIN。

第 2 部分 - 您的客户端代码

在您的 Javscript 中制作并存储一个大的随机数。让浏览器查找 .myspecialdomain.com。通过带有错误处理程序的 JS img 标签加载它。 在该错误处理程序中,现在对传递随机数的服务器端代码进行查询。

第 3 部分 - 您的 Web 应用程序(服务器端)

您需要实现一些服务器端逻辑,该逻辑采用随机字符串,在数据存储中查找它,并检索 DNS 服务器的 IP 地址。 请注意,此处的 IP 地址将是特定服务器的 IP 单播地址,而不是像 8.8.8.8 这样的 IP 任播地址。 在这里,您可以使用 GeoIP 或 Whois 数据库来确定该 IP 地址的所有者(OpenDNS、Google 等)。然后,您可以生成响应以发送到客户端逻辑。

【讨论】:

以上是关于是否可以检测访客 DNS 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测访客国家

python使用dns轮循检测web服务器是否异常

DNS防劫持

网站DNS劫持的原理是什么?怎能检测?

python3 dns轮询业务检测

应对DNS劫持的办法是什么样的?