五个站点的公司通过低延迟第 2 层或 IPSec 隧道连接,每个站点有 2 个 DC。
我注意到,浏览 \\domain.tld 通常会显示来自远程 DC 的 sysvol/netlogon 共享。我之所以能说出这些,是因为一些较小的站点的 DC 也运行打印管理;打印机共享也显示在那里。
从总部站点的桌面 ping domain.tld 通常会解析为远程 DC 的 IP 地址。ipconfig /flushdns 然后再次 ping domain.tld 似乎总是会导致工作站将域名解析为不同的 DC,通常是本地站点的 DC。
需要明确的是,这不会引起我所知道的问题,我只是想了解为什么 DNS 会以这种方式运行。无论哪个 DC 返回我的 domain.tld ping,%logonserver% 似乎总是解析为本地 DC。
站点间延迟低于 10 毫秒,带宽同步 > 50 Mbps。
非常感谢您的阅读!
更新:在 DNS ->(右键单击 DNS 服务器名称)-> 属性 -> 高级 ->“启用循环”下,每个 DNS 服务器都启用了循环。此外,在 DNS ->(服务器名称)-> 转发查找区域 -> domain.tld 中,我看到了林中每个域控制器的名称服务器条目(“与父文件夹相同”)。每个 DC 也有名为“(与父文件夹相同)”的 A 记录。我认为这种行为是预期的,有人可以验证我的假设是否正确吗?
答案1
DNS 循环是一种负载平衡技术,而DNS 网络掩码排序提供接近感知。
默认情况下,DNS 服务器将使用 C 类子网掩码来确定哪些记录是客户端本地的。然后,循环机制将在这些本地结果之间对客户端进行负载平衡。
如果没有网络掩码排序,您的 DNS 服务器将随机发送任何匹配的 A 记录,无论它是否是客户端的本地地址。这听起来就像您正在经历的情况。
所以,首先,我们需要确保您的 DNS 服务器上启用了网络掩码排序。
- 打开 DNS 管理控制台
- 右键单击您的 DNS 服务器并选择
Properties
。 - 点击
Advanced
选项卡 - 确保
Enable Netmask Ordering
已选中。您也可以在此处禁用/启用循环。
下一个,确保您的LocalNetPriorityNetmask
与您的网络拓扑相匹配。默认情况下,您的服务器将使用 C 类网络掩码。换句话说,它将通过比较两个 IP 地址的前 3 个八位字节来确定哪些 A 记录是客户端本地的。如果您的站点使用的网络掩码小于或大于 255.255.255.0,则必须进行调整。
- 打开管理命令提示符
- 发出以下命令:
Dnscmd /Config /LocalNetPriorityNetMask 0x000000FF
将其恢复为默认值。或者调整网络掩码以满足您的需求。
如果您的站点子网掩码为255.255.0.0
,则使用优先级掩码0x0000FFFF
。如果您的站点子网掩码为 ,255.255.255.192
则使用优先级掩码0x0000003F
。请确保您设置的掩码涵盖站点上的所有子网,这样该站点上的所有计算机都会获得该站点本地的 A 记录。
我更喜欢使用组策略在所有域控制器上强制执行这些设置。可以通过直接修改以下注册表项中的参数来实现:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
寻找:
LocalNetPriority
启用/禁用网络掩码排序。LocalNetPriorityNetmask
设置掩码值。
如果您修改注册表来设置这些选项,则需要重新启动 DNS 服务才能使更改生效。