服务器是否有可能知道哪个客户端(IP)对其域名进行了 DNS 查询?

mis*_*yes 2 networking dns domain

假设我有一个域名,例如myproxy.com. 然后我有很多网站,比如kitty.myproxy.comwow.myproxy.com 我想为域名配置一个权威的DNS服务器。

我希望,如果用户想要访问这些网站,当浏览器发送 DNS 查询时,该 DNS 查询最终会到达权威的 DNS 服务器。这样,权威机构就可以获得进行DNS查询的主机的IP。

我的期望是:这些网站的所有 DNS 查询都必须发送到权威 DNS 服务器,这样我才能知道进行 DNS 查询的所有主机。有可能吗?

恐怕其他一些 DNS 服务器会缓存 DNS 记录,因此这些 DNS 服务器会回答 DNS 查询,然后这些查询不会转发到权威的 DNS 服务器。有没有可能防止这种情况?

注意:我正在做研究工作。我的目标是做一个代理。有许多 Web 服务器在代理上注册。只有代理知道这些 Web 服务器的 IP。当浏览器想要访问这些 Web 服务器之一时,它可以从 DNS 查询中获取代理的 IP。然后它连接到代理。我希望代理可以在TCP SYN到来时准确知道这个浏览器想要访问哪个Web服务器(在HTTP请求之前,实际上,通过解析HTTP请求,代理可以知道浏览器想要访问哪个Web服务器) . 因此,如果 Web 浏览器执行 DNS 查询并且代理知道该查询,则代理可以缓存 Web 服务器和浏览器主机 IP 之间的映射。当 TCP SYN 到来时,代理立即检查映射并了解浏览器实际想要访问的 Web 服务器。谢谢!

Ric*_*lka 8

你想达到什么目的?我的猜测是您正在尝试做某事,并且当它不起作用时,您认为“监视 DNS 是答案”。

如果您希望在每个 DNS 请求中看到来自客户端 IP 的命中,那将永远不会发生。DNS 是分层的,并且客户端被配置为访问本地 DNS 服务器,然后最终会访问您的 DNS 服务器。

如果您希望在每个 DNS 请求中看到一个请求(来自某人),您可以尝试将 TTL 调整为较小的值,例如一秒。然后你会在某个地方看到某人的打击。这可能不是 100% - 这取决于每个人是否尊重您的 TTL,这不是给定的。

更新

如果我没看错,您正在尝试将 DNS 请求与未来的 HTTP 请求相关联。这将由于多种原因而失败。

  1. 缓存。DNS - IP 映射非常容易缓存,因此它们被大量缓存。即使设置 TTL 也无济于事,因为无论设置如何,一些 ISP 都会忽略 TTL 并缓存一小时/一天左右。浏览器也有自己的 DNS 缓存。有太多的级别供您控制。

  2. 多个用户 - 一个 IP 地址。在 NAT(和运营商级 NAT即将到来)和每台机器的普通多个用户之间,您不能再将 IP 映射到浏览器(您真的不可能)。即使每个用户有多个浏览器或多个选项卡也可能使这个系统失效。

  3. 人们可能出于其他原因使用 DNS。如果有人只是在一个域上执行 nslookup,然后又访问了另一个域(IP 在缓存中),该怎么办?你会转发错误的网站。

  4. 多个出口点。虽然现在不太常见,但 ISP 将请求代理出去曾经很常见,有时单个订户可能会在出口点(您将其视为他们的 IP)上轮换,即使在单个会话中也是如此。AOL 过去经常这样做,随着它们的流行度下降,我看到其他工具(移动 Opera)也使用代理。

  5. DNS 转发不会以这种方式工作。如果有人试图在您的站点中查找主机名,绝大多数情况下他们会询问 google 的 8.8.8.8 服务器或他们的 ISP 的递归 DNS 服务器。在任何一种情况下,查询您的 DNS 服务器以获取主机名的 IP 地址都不会与稍后查看的 Web 浏览器的源 IP 地址相同。

简而言之,你不能从这里到达那里。IP 地址不是(以前也不是)用户的唯一 1-1 标识符。你会破坏 HTTP。您一直在查看 HTTP 流并进行解析。确保您的代理支持 Keep-Alive,这样会减少一些影响。