我们正在使用 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 文件条目。
对于 DNS 服务器的解析器,首先配置不同的 DNS 服务器的 IP 地址,然后配置此 DNS 服务器的 IP 地址,然后配置本地主机 IP。
即使 DNS 服务重新启动,它仍然可以从远程服务器解析。此外,在使用 AD DS 时,首先使用不同的主机不太可能导致复制问题。
是的,首选 IPv6 是标准行为,Microsoft 不会测试禁用 IPv6。如果您不使用 IPv6,请不要将 IPv6 地址分配给主机。包括,确保路由器不发送 IPv6 RA。如果名称只有 A 记录而不是 AAAA,则主机解析并使用 IPv4,无需进一步配置。
为了解决这个问题,我不得不考虑几件事:
经过这一切,我发现最好的解决方案是更改网络接口上的 DNS 服务器设置,而不是对 Windows 中的任何内容进行其他更改。为了解决上述所有问题,我:
<Peer DNS Server IP>
<IPv4 address of this DNS server>
127.0.0.1
本地主机)BPA 的任何相关投诉均已解决。Localnetpriority 在网络功能齐全且站点因网络故障而中断时起作用。并且,即使本地网线被拔掉,或者出现其他网络接口问题,AD仍然可以正常工作。
最终结果回答了这个问题,“当 DNS 服务器查询自身时,如何使 localnetpriority 工作? ”还有一个次要要求,即我不会破坏其他任何东西。