同一区域 - IPv4 和 IPv6 的不同 NS

同一区域 - IPv4 和 IPv6 的不同 NS

运行 example.com 的授权区域,并在 IPv4 可访问的 NS 上使用 A 记录的 NS,但在同一区域的 AAAA 记录运行在可通过 IPv6 访问的不同 NS 上 - 这可能 - 可行 - 合理吗?

答案1

当然可能的要在服务器端执行此操作 - 只需在两组服务器上使用不同版本的区域文件(也称为“水平分割 DNS”),其中一个仅包含A记录,另一个(IPv6 连接)仅包含AAAA记录。不过,父区域需要同时包含这两个文件AAAAAglue。

然而你实际上不应该这样做,特别是当你想要根据 DNS 查询中使用的 IP 协议来引导不同的用户时。

造成这种情况的原因如下:

  1. 入站 DNS 查询来自递归服务器,而不是最终用户。启用 IPv6 的用户完全可以通过 IPv6 发送 DNS 查询,但他们的 DNS 服务器会通过 IPv4 向您发送查询

  2. 这是一种层次违规——用于 DNS 的协议选择应该与后续应用程序使用的协议选择完全分开。

  3. 缓存一致性 - DNS 不喜欢服务器向不同的人返回不同的结果。如果递归缓存仅获取 IPv6 服务器,而 IPv4 客户端随后从缓存中请求信息,则缓存中没有A记录,因此查询将失败。

答案2

您将无法执行此操作,因为无法根据请求类型进行委托。您可以做的是委托一个子域并返回一组名称服务器的 A 记录和另一组名称服务器的 AAAA 记录。但是,在双栈环境中会发生什么?您无法知道请求是首选 IPv4 还是 IPv6,并且它可能会请求两种类型的记录 - 特别是在公共环境中,通常不会是最终客户端对您的服务器进行 DNS 查找。

您还可以对路由进行类似操作,以便将 IPv4 和 IPv6 流量路由到不同的名称服务器。不过,您还是会遇到完全相同的问题。

相关内容