本文可帮助修复以下问题:如果域控制器的计算机名称包含大写字母,Windows DNS 会注册域控制器的重复服务器位置(SRV)记录。
适用于: Windows Server 2019、Windows Server 2016原始 KB 数: 4496901
现象
在使用 AD DS 集成 DNS 区域的部署中,你有一个或多个基于 Windows Server 2019 或基于 Windows Server 2016 的域控制器(DC)。 至少有一个 DC 具有包含大写字符的计算机名称。
在这种情况下,你会注意到域的 DNS 记录包括计算机名称中具有大写字符的 DC 的重复服务器位置(SRV)记录。 一条记录包括所有小写字符的 RDATA 中的计算机名称,一条记录在与计算机名称相同的字符大小写中包含 RDATA 中的计算机名称。
原因
发生此行为的原因是 Windows Server DNS 功能如何管理 SRV 记录的 RDATA 段发生更改。 在 Windows Server 2012 R2 和早期版本中,RDATA 段仅包含小写字母。 如果计算机名称包含大写字母,则 DNS 功能将其转换为小写。 但是,Windows Server 2016(或更高版本)DNS 功能接受大写字母和小写字母。
当 DNS 服务器检查计算机名称是否已有关联的 SRV 记录时,它不会考虑发生更改的情况。 因此,它会考虑 winserv16.contoso.com 并 WinServ16.contoso.com 成为不同的地址。
出于此原因,如果使用以下配置,可能会看到意外的影响:
- 域中的所有 DNS 服务器和 DC 都已从 Windows Server 2012 R2(或更早版本)升级到 Windows Server 2016(或更高版本)。 DNS 数据库可能会为其计算机名称中具有大写字符的任何 DC 生成额外的 SRV 记录。
- 域中的所有 DNS 服务器和 DC 都运行 Windows Server 2012 或更早版本。 在 Windows Server 2016 成员服务器上安装 DNS 服务器角色,然后将该成员服务器提升到同一域中的 DC。 如果 Windows Server 2016 DC 的计算机名称中有大写字符,则会在 DNS 中具有额外的 SRV 记录。
- 你有一个域,其中包含运行各种版本的 Windows Server 的 DC 和 DNS 服务器。 主 DNS 服务器是运行 Windows Server 2012 或更早版本的 DC,辅助 DNS 服务器是 Windows Server 2016 DC。 主 DNS 服务器变得不可用,并且你将 Windows Server 2016 DC 更改为新的主 DNS 服务器。 此更改后,DNS 数据库可能会为其计算机名称中具有大写字符的任何 DC 生成额外的 SRV 记录。
解决方法
Microsoft已发布可缓解此问题的更新。 下表列出了受影响版本的 Windows 更新的相关版本。
| 版本 | 发布 |
|---|---|
| Windows Server 2019 版本 1903 | 2020 年 3 月 24 日-KB4541335(OS 内部版本 18362.752 和 18363.752) |
| Windows Server 2019 版本 1809 | 2020 年 3 月 17 日-KB4541331(OS 内部版本 17763.1131) |
| Windows Server 2016 | 2020 年 3 月 17 日-KB4541329(OS 内部版本 14393.3595) |
此更新在 NETLOGON 中引入了新的组策略策略设置。ADMX 文件,如下表所述。
| 策略名称 | 注册域控制器 SRV 记录时使用小写 DNS 主机名 |
|---|---|
| 策略路径 | 计算机配置\策略\管理模板\系统\Net Logon\DC 定位符 DNS 记录\ |
| 策略值 | - 1 (默认值)。 已启用此策略。 策略清除重复的 DNS SRV 记录。 在 DC 上安装更新时,这将成为该 DC 默认本地配置的一部分。 - 0.策略已禁用。 在此设置下,有问题的行为仍然存在,具有包含大写字符的计算机名称的 DC 继续注册包含这些大写字符的 SRV 记录。 仅紧急或测试使用支持值 0 。 它不应在典型条件下使用。 如果未配置策略或缺少值,DC 会回退到新的默认本地配置,并将策略视为已启用。 |
此更新将添加与此策略关联的以下注册表项。 (此信息仅供参考。
- 注册表子项:
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Netlogon\Parameters - 注册表项:DnsSrvRecordUseLowerCaseHostNames
- 数据类型:REG_DWORD
安装更新后
注意
安装更新、手动清理记录或禁用策略时,无需重启或禁用 Netlogon 服务。 安装更新后,无需重启计算机。
安装更新(或在禁用更新的环境中启用策略)时,Netlogon 服务会尽力删除包含大写字符的现有 DNS 记录。
建议安装此修补程序(或启用策略),然后等待一两天,让 Netlogon 获取并应用新设置。 然后,等待足够长的时间让更改在整个环境中复制。 之后,检查 DNS 记录中是否存在任何剩余重复项。 策略可能会错过一些重复的记录。 在这种情况下,必须手动删除这些记录。
可以使用以下 Windows PowerShell 命令查看记录:
Get-DnsServerResourceRecord -ZoneName "contoso.com" -RRType Srv
注意
在此命令中, contoso.com 是占位符域名。
若要删除剩余的重复记录,请运行以下 PowerShell 命令:
Remove-DnsServerResourceRecord -ZoneName "contoso.com" -RRType Srv -Name "<hostname of record to delete>" -RecordData "<recorddata of record to delete>"
禁用策略不需要进行任何清理。
重要
Microsoft发布了一个更新来解决此问题,并阻止其重复。 建议安装更新,而不是解决此问题。
解决方法 1:防止重复的 SRV 记录
可以使用以下方法阻止 Windows DNS 创建重复的 SRV 记录:
- 在将成员服务器提升到 DC 或将 DC 升级到 Windows Server 2016 或更高版本之前,请确保其计算机名称仅包含小写字符。
- 请确保创建、修改或使用计算机名称的所有内部生成进程、工具和脚本也使用小写字符。
- 如果无法重命名 DC(或者需要很长时间才能这样做),请配置 DNS 拓扑,以便运行 Windows Server 2016 或更高版本的 DC 使用运行 Windows Server 2016 或更高版本的 DNS 服务器。 同样,将运行 Windows Server 2012 R2 或更早版本的 DC 配置为使用运行 Windows Server 2012 R2 或更早版本的 DNS 服务器。
解决方法 2:删除重复的 SRV 记录
若要在遇到此问题后解决此问题,必须使用所有小写字符重命名 DC。 根据部署的详细信息,可能需要手动重新配置设置或删除文件。 本部分提供以下解决方法方法,其复杂性如下:
- 方法 1:在单 DC 域中重命名 DC
- 方法 2:重命名多 DC 域中的 DC
- 方法 3:重命名 DC 并删除所有存储的 SRV 记录
重要
在使用上述任一方法之前,请查看以下文章。 这些文章提供了重命名 DC 时要遵循的详细步骤。 它们还提供有关在降级或重命名 DC 后可能需要执行的其他清理任务的信息。
注意
如果在重命名 DC 后遇到任何问题,请将 DC 名称还原为其原始内容。
方法 1:在单 DC 域中重命名 DC
如果有一个 DC,请使用重命名域控制器中的步骤将 DC 的计算机名称更改为仅包含小写字符的新名称。 对于单个 DC,无需降级并重新编写它。
重要
强烈建议任何域至少包含两个 DC。 如果只有一个 DC,则每当 DC 遇到问题时,域可能不可用。
方法 2:重命名多 DC 域中的 DC
如果域中有多个 DC,请针对每个受影响的 DC 执行以下步骤:
- 降级 DC,并清理相关元数据。 有关详细信息,请参阅 降级域控制器和域 和 AD 林恢复 - 清理已删除可写域控制器的元数据。
- 重命名计算机,为其提供仅包含小写字符的名称。
- 再次将计算机提升为 DC。
到所有 DC 都重新联机时,重复的(混合大小写)SRV 记录应消失。
方法 3:重命名 DC 并删除所有存储的 SRV 记录
如果方法 1 和方法 2 未提供令人满意的结果,请针对每个受影响的 DC 执行以下步骤:
-
降级 DC,并清理相关元数据。 有关详细信息,请参阅 降级域控制器和域 和 AD 林恢复 - 清理已删除可写域控制器的元数据。
-
在降级的计算机上,执行以下步骤:
- 重命名计算机,为其提供仅包含小写字符的名称。
- 停止 netlogon 服务。 为此,请打开提升的命令提示符窗口,然后运行
net stop netlogon。 - 删除 C:\Windows\System32\config\ 文件夹中的以下文件:
- netlogon.dnb
- netlogon.dns
-
在其他 DC 之一上,打开服务器管理器,选择“工具**”**,然后选择“DNS”。
-
在 DNS 管理器中,检查转发查找区域下的容器,然后删除你降级的 DC 的 SRV 记录。
-
在重命名的计算机上,启动 netlogon 服务。 为此,请打开提升的命令提示符窗口,然后运行
net start netlogon。 -
再次将重命名的计算机提升为 DC。