当 Windows DNS 服务器查询自身时,如何使 localnetpriority / netmask 排序起作用?

当 Windows DNS 服务器查询自身时,如何使 localnetpriority / netmask 排序起作用?

我们正在使用 Windows 2016+ DNS 服务器。我们依赖 DNS 服务器上的 LocalNetPriority。我们在多个站点上拥有多个 Active Directory DNS 服务器。预期的行为是,当对 DNS 服务器进行特定查询时,如果同一主机存在多个 A 记录,它将返回与查询来源位于同一子网中的 IP 地址。这在大多数情况下都很好用。

但是,对于来自 DNS 服务器本身的请求,它不起作用。首先,DNS 服务器(或 Active Directory)默认将其网络接口配置为通过 localhost(127.0.0.1 和 ::1)将其自身用作首选 DNS 服务器。这会导致 LocalNetPriority 选择失败,因为原始 IP 地址不在我们的子网之一中。

其次,服务器更喜欢 IPv6,而不是 IPv4。我们不使用 IPv6,但也不想禁用它,因为它在过去的不同情况下显然造成了问题,而且微软声称这是强制性的,不支持或建议禁用它。使用 IPv6 是不可能的。

最后,当网络中断时,它必须能够正常工作。这一特定要求要求 localnetpriority 在卫星位置与网络其余部分断开连接时正常工作。因此,仅使用对等 DNS 解析器作为主服务器并不能满足这一要求。

似乎将 IPv4 设置为优先于 IPv6,并将服务器的实际 IP 地址配置为首选 DNS 服务器可能是唯一的解决方案。但是,我很久以前就知道,使用 127.0.0.1 是最好的选择,因为在重新启动或拔掉网线时,活动目录可能会完全崩溃。

我错过了什么?有没有更直接的方法来解决这个问题?也许我应该为我们遇到问题的特定主机添加一个 HOSTS 文件条目。

答案1

为了解决这个问题,我必须考虑几件事:

  • 无论我们是否使用 IPv6,IPv6 链路本地寻址均已启用。因此,每台服务器/主机都将拥有一个 IPv6 地址,并在可能的情况下使用 IPv6。
  • 将服务器升级为带 DNS 的域控制器会在 IPv4 和 IPv6 的本地网络接口上添加“localhost”作为 DNS 服务器。这是 MS 的最佳实践。
  • 我们无法禁用 IPv6,因为 Microsoft 不支持它。
  • Windows 更喜欢 IPv6 而不是 IPv4,因此任何配置的 IPv6 DNS 服务器都将优先。
  • 在多 DC 环境中,服务器应该将对等体称为主 DNS,将自己称为辅助 DNS、第三 DNS 等。
  • 即使其他 DNS 服务器/站点不可用,我也需要 localnetpriority 能够工作。
  • 当 Windows DNS 服务器查询自身时,如果它使用“localhost”来执行此操作,它将破坏 localnetpriority。
  • MS 最佳实践分析器为 DNS 服务器配置问题提供了有用的见解,并会抱怨网络接口上配置不当的 DNS 设置。

经过所有这些,我发现最好的解决方案是更改网络接口上的 DNS 服务器设置,并且不对 Windows 中的任何其他内容进行任何更改。为了解决上述所有问题,我:

  • 删除了 IPv6 中配置的“localhost”DNS 服务器。现在没有配置 IPv6 DNS 服务器。
  • 我重新配置了 IPv4 DNS 服务器列表,如下所示:
    1. 基本的:<Peer DNS Server IP>
    1. 次要的:<IPv4 address of this DNS server>
    1. 第三级:(127.0.0.1本地主机)

BPA 的所有相关投诉都已解决。Localnetpriority 在网络完全正常运行时以及在站点因网络故障而中断时均有效。而且,即使本地网络电缆被拔掉或出现其他网络接口问题,AD 仍将正常运行。

最终结果回答了这个问题,“当 DNS 服务器查询自身时,如何使 localnetpriority 起作用?“第二个要求是,我不能破坏其他任何东西。

答案2

对于 DNS 服务器的解析器,首先配置不同的 DNS 服务器的 IP 地址,该 DNS 服务器的 IP 地址排在第二位,本地主机 IP 排在第三位。

即使 DNS 服务正在重新启动,它仍然可以从远程服务器解析。此外,当使用 AD DS 时,首先使用不同的主机不太可能导致复制问题。

其次,服务器更喜欢 IPv6,而不是 IPv4。我们不使用 IPv6,但也不想禁用它,因为它在过去的不同情况下显然造成了问题,而且微软声称这是强制性的,不支持或建议禁用它。

是的,首选 IPv6 是标准行为,Microsoft 不会测试禁用 IPv6。如果您不使用 IPv6,请不要将 IPv6 地址分配给主机。包括确保路由器不发送 IPv6 RA。如果名称只有 A 记录而没有 AAAA,则主机将解析并使用 IPv4,无需进一步配置。

相关内容