【问题标题】:Can the DNS Server have source IP?DNS服务器可以有源IP吗?
【发布时间】:2023-03-03 09:44:02
【问题描述】:

小问题:

由于 DNS 是任播,DNS 服务器有什么方法可以知道“第一个”源 DNS 查询的来源?

长问题: 我使用 PowerDNS 开发了一个自定义 DynDNS 服务器,我想通过 Web 界面为用户提供信息。我希望 Web 界面“基于 IP”更新每个用户的记录。

所以当 DNS 服务器收到请求时,如果它可以确定源 IP,则很容易返回与该 IP 关联的记录。

只要我测试过,DNS Server 只能知道 DNS 链上的“最后一个”节点 IP,而不是来源。有什么办法吗?

问候

【问题讨论】:

  • 您描述了机制,而不是您要解决的问题。也许 DNS 并不是实现您想要实现的任何目标的最佳方式。
  • 我怀疑你的问题有一个简单的答案,但你能详细说明你想要做什么吗?我用谷歌搜索了 DynDNS,但它并没有真正帮助我理解你想要实现的目标——你想“用户通过网络界面向它提供信息”并且你希望它基于 IP 进行更新?如果您可以重组您的问题,也许有人可以找到适合您需求的解决方案。此外,添加指向您正在使用的东西的链接,这将有助于更多地理解。
  • 嗯,这个故事很长,在这里发表。简单地说,我有一个 DNS 服务器,想知道客户端 IP(查询的来源),而不是递归器请求 IP。有办法吗?

标签: dns ip


【解决方案1】:

谷歌和雅虎!向IETF DNS Extensions Working Group 提交了一份草案 (draft-vandergaast-edns-client-ip-01),该草案在 DNS 请求中提出了一个新的 EDNS0 选项,递归服务器可以使用该选项向上游权威服务器指示他们自己的客户端 IP 地址。

其目的是通过确保返回的网络服务器地址基于最终用户的 IP 地址,而不是最终用户的 DNS 服务器地址,从理论上优化内容交付网络的使用。

这个想法没有得到很好的接受,也没有被工作组接受,因为它故意破坏了 DNS 的缓存层,因此草案随后已过期。

更新 - 随后已将其更改为 RFC 7871

【讨论】:

  • 谢谢,但这根本不实用。例如,OpenDNS 根据您的 IP 地址(或网络范围)决定返回什么。它是如何做到的?我知道在非递归请求上 IP 是可用的,但是如何在递归请求上实现呢?
  • 他们使用自定义软件根据客户端查询来自的任何 IP 地址进行响应 - 只要代码调用 recv_from,就可以使用。
  • 这正是我要问的。您不能在 DNS 中使用“客户端查询 IP”,因为您可能会从其他服务器而不是原始客户端接收递归查询
  • 那么不清楚你在问什么。任何 IP 服务器都可以确定其直接客户端的 IP 地址。所以递归器知道存根的地址,而权威知道递归器的地址。权威不知道存根的地址。
  • 并回复:您的评论,是的,这就是草案提出的内容 - 在这种情况下,递归缓存必须是“客户端感知的”,如果相同的请求进入,则重新发出上游查询来自新客户。
【解决方案2】:

也许您可以控制执行查找的软件?如果是这样,您可以在请求中包含 IP 地址,例如

23-34-45-56.www.example.com

您自定义编写的服务器回复的内容

23-34-45-56.www.example.com 1800 CNAME www-europe.example.com

23-34-45-56.www.example.com  300     A 34.45.56.67

等等

如果客户端是 Web 浏览器,由于 NAT、HTTP 代理以及无法直接从 Javascript 查询主机接口地址,会出现复杂情况。但是,您也许可以对 what's-my-ip 服务进行 AJAX 样式的查找,该服务可以理解 X-Forwarded-For。

【讨论】:

  • 你的想法几乎解决了我的问题,虽然方式非常困难:D 谢谢
  • 那么,唯一的选择是自定义编写的 dns 服务器?
【解决方案3】:

简短问题的长答案:

DNS 不是任播。一些内容 DNS 服务器所有者使用任播将服务器分布在世界各地的多个物理位置,但 DNS/UDP 和 DNS/TCP 协议本身不是任播。该协议层根本不存在这个概念。

长问题的简短回答:

没有。

扩展

如前所述,DNS 协议中没有任何内容。此外,caching resolving proxy DNS server 处的前端和后端事务之间的关系不是一对一的。

您必须使用您正在使用的实际服务协议中存在的任何客户端区分机制,而不是将您的客户端区分放在名称→IP 地址查找机制中。无论如何,其他服务的客户端区分不属于名称→IP地址查找。对于初学者来说,这种查找对于多个协议来说是常见的。使用与您的服务器通信的客户端正在使用的任何实际服务协议的机制。

【讨论】:

  • 那么 OpenDNS 究竟是如何工作的呢?它会询问您的 IP 并提供您在网站上设置的 DNS 条目。
  • 苹果和橙子。你在搞乱content DNS server。 OpenDNS 提供了一个proxy DNS server
猜你喜欢
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
  • 2013-05-18
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
相关资源
最近更新 更多