原始 KB 数: 267855适用于: 支持的 Windows Server 版本
现象
SRV 和域控制器(DC)定位符的域名系统(DNS)注册(由 Netlogon 注册)和 NS 记录(由权威 DNS 服务器添加)在 Active Directory 集成的 DNS 区域中,某些 DC 可能无法在包含大量 DC(通常超过 1200 个)的域中工作。 如果 Active Directory 集成 DNS 区域的名称与 Active Directory 域名相同,则区域根目录中的 A 记录和 NS 记录注册问题似乎发生在超过 400 个 DC 的域中。 此外,可能会在事件日志中记录以下一个或多个错误消息:
Event Type: Error
Event Source: DNS
Event Category: None
Event ID: 4011
Description: The DNS server was unable to add or write an update of domain name xyz in zone xyz.example.com to the Active Directory. Check that the Active Directory is functioning properly and add or update this domain name using the DNS console. The event data contains the error.
Data: 0000: 2a 23 00 00 *#..
Event Type: Error
Event Source: DNS
Event Category: None
Event ID: 4015
Description: The DNS server has encountered a critical error from the Active Directory. Check that the Active Directory is functioning properly. The event data contains the error.
Data: 0000: 0b 00 00 00 ....
The final status code from event 4015, 0x00000b, maps to error "LDAP_ADMIN_LIMIT_EXCEEDED Administration limit on the server has exceeded."
Event Type: Warning
Event Source: NTDS Replication
Event Category: Replication
Event ID: 1093
Description: The directory replication agent (DRA) could not apply changes to object DC=@,DC=xyz.example.com,CN=MicrosoftDNS,CN=System,DC=xyz,DC=example, DC=com (GUID <GUID>) because the incoming changes cause the object to exceed the database's record size limit. The incoming change to attribute 9017e (dnsRecord) will be backed out in an attempt to make the update fit. In addition to the change to the attribute not being applied locally, the current value of the attribute on this system will be sent out to all other systems to make that the definitive version. This has the effect of nullifying the change to the rest of the enterprise.
The reversal may be recognized as follows: version 5474, time of change 2000-06-28 19:33.24 and USN of 2873104.
Event Type: Information
Event Source: NTDS Replication
Event Category: Replication
Event ID: 1101
Description: The directory replication agent (DRA) was able to successfully apply the changes to object DC=@,DC=xyz.example.com,CN=MicrosoftDNS,CN=System, DC=xyz,DC=example,DC=com (GUID <GUID>) after backing out one or more of the attribute changes. Preceding messages will indicate which attributes were reversed. Please note that this will have the effect of nullifying the change where it was made, causing the original update not to take effect. The originator should be notified that their change was not accepted by the system.
原因
出现此问题的原因是 Active Directory 的限制约为 1200 个值,这些值可以与单个对象相关联。 在 Active Directory 集成的 DNS 区域中,DNS 名称由 dnsNode 对象表示,DNS 记录作为值存储在 dnsNode 对象的多值 dnsRecord 属性中,导致出现本文前面列出的错误消息。
解决方法
可以使用下列方法之一来解决此问题。
方法 1
如果要指定一个 DNS 服务器列表,这些服务器可以向指定区域添加对应于自己的 NS 记录,请选择一个 DNS 服务器,然后使用 /AllowNSRecordsAutoCreation 开关运行Dnscmd.exe:
-
若要设置有权自动为区域创建 NS 记录的 DNS 服务器的 TCP/IP 地址列表,请使用
dnscmd servername /config zonename /AllowNSRecordsAutoCreation IPList该命令。 例如:Dnscmd NS1 /config zonename.com /AllowNSRecordsAutoCreation 10.1.1.1 10.5.4.2 -
若要清除 DNS 服务器的 TCP/IP 地址列表,这些服务器有权自动为区域创建 NS 记录,并在每个主 DNS 服务器自动添加到与其对应的 NS 记录的区域时,将区域返回到默认状态。
dnscmd servername /config zonename /AllowNSRecordsAutoCreation例如:Dnscmd NS1 /config zonename.com /AllowNSRecordsAutoCreation -
若要查询有权自动为区域创建 NS 记录的 DNS 服务器的 TCP/IP 地址列表,请使用
dnscmd servername /zoneinfo zonename /AllowNSRecordsAutoCreation该命令。 例如:Dnscmd NS1 /zoneinfo zonename.com /AllowNSRecordsAutoCreation
注意
仅在一个 DNS 服务器上运行此命令。 Active Directory 复制会将更改传播到在同一域中的 DC 上运行的所有 DNS 服务器。
在域的大多数 DNS DC 位于分支机构中,并且一些 DNS DC 位于中心位置的环境中,你可能希望使用 Dnscmd 本文前面所述的命令将 IPList 设置为仅包含集中的 DNS DC。 为此,只有集中定位的 DNS DC 将其各自的 NS 记录添加到 Active Directory 域区域。
方法 2
重要
此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关详细信息,请参阅 如何在 Windows 中备份和还原注册表。
如果要选择哪个 DNS 服务器不会将对应于自己的 NS 记录添加到任何 Active Directory 集成的 DNS 区域,请使用注册表编辑器(Regedt32.exe)在每个受影响的 DNS 服务器上配置以下注册表值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
注册表值:DisableNSRecordsAutoCreation 数据类型:REG_DWORD 数据范围:0x0 |0x1 默认值:0x0
此值会影响所有 Active Directory 集成的 DNS 区域。 这些值具有以下含义:
| 值 | 含义 |
|---|---|
| 0 | DNS 服务器会自动为所有 Active Directory 集成的 DNS 区域创建 NS 记录,除非服务器托管的任何区域包含不包括服务器的 AllowNSRecordsAutoCreation 属性(本文前面所述)。 在这种情况下,服务器使用 AllowNSRecordsAutoCreation 配置。 |
| 1 | 无论 Active Directory 集成的 DNS 区域中的 AllowNSRecordsAutoCreation 配置如何,DNS 服务器都不会自动为所有 Active Directory 集成的 DNS 区域创建 NS 记录。 |
注意
若要将更改应用到此值,必须重启 DNS 服务器服务。
如果要阻止某些 DNS 服务器将相应的 NS 记录添加到它们托管的 Active Directory 集成 DNS 区域,可以使用本文前面所述的 DisableNSRecordsAutoCreation 注册表值。
注意
如果 DisableNSRecordsAutoCreation 注册表值设置为0x1,则由该 DNS 服务器托管的 Active Directory 集成 DNS 区域将不包含其 NS 记录。 因此,如果此服务器必须将自己的 NS 记录添加到它托管的至少一个 Active Directory 集成的 DNS 区域,请不要将注册表值设置为0x1。
Netlogon 修复
重要
此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关详细信息,请参阅 如何在 Windows 中备份和还原注册表。
此修补程序的 Netlogon 部分使管理员可以更好地控制本文前面所述。 应将修补程序应用到每个 DC。 此外,若要防止 DC 尝试默认由 Netlogon 动态更新的某些 DNS 记录的动态更新,请使用Regedt32.exe来配置以下注册表值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
注册表值:DnsAvoidRegisterRecords 数据类型:REG_MULTI_SZ
在此值中,指定对应于此 DC 不应注册的 DNS 记录的助记列表。
注意
将值设置为下表中指定的输入分隔助记列表。
助记列表包括:
| 助记键 | 类型 | DNS 记录 |
|---|---|---|
| LdapIpAddress | A | <DnsDomainName> |
| Ldap | SRV | _ldap._tcp。<DnsDomainName> |
| LdapAtSite | SRV | _ldap._tcp。<SiteName>._sites。<DnsDomainName> |
| Pdc | SRV | _ldap._tcp.pdc._msdcs。<DnsDomainName> |
| Gc | SRV | _ldap._tcp.gc._msdcs。<DnsForestName> |
| GcAtSite | SRV | _ldap._tcp。<SiteName>._sites.gc._msdcs。<DnsForestName> |
| DcByGuid | SRV | _ldap._tcp。<DomainGuid>.domains._msdcs。<DnsForestName> |
| GcIpAddress | A | gc._msdcs。<DnsForestName> |
| DsaCname | CNAME | <DsaGuid>._msdcs.<DnsForestName> |
| Kdc | SRV | _kerberos._tcp.dc._msdcs。<DnsDomainName> |
| KdcAtSite | SRV | _kerberos._tcp。<SiteName>._sites.dc._msdcs。<DnsDomainName> |
| Dc | SRV | _ldap._tcp.dc._msdcs。<DnsDomainName> |
| DcAtSite | SRV | _ldap._tcp。<SiteName>._sites.dc._msdcs。<DnsDomainName> |
| Rfc1510Kdc | SRV | _kerberos._tcp。<DnsDomainName> |
| Rfc1510KdcAtSite | SRV | _kerberos._tcp。<SiteName>._sites。<DnsDomainName> |
| GenericGc | SRV | _gc._tcp。<DnsForestName> |
| GenericGcAtSite | SRV | _gc._tcp。<SiteName>._sites。<DnsForestName> |
| Rfc1510UdpKdc | SRV | _kerberos._udp。<DnsDomainName> |
| Rfc1510Kpwd | SRV | _kpasswd._tcp。<DnsDomainName> |
| Rfc1510UdpKpwd | SRV | _kpasswd._udp。<DnsDomainName> |
注意
无需重启 Netlogon 服务。 如果在 Netlogon 服务停止时或在 Netlogon 启动后的前 15 分钟内创建或修改 DnsAvoidRegisterRecords 注册表值,则进行适当的 DNS 更新,延迟时间不会晚于 Netlogon 启动后的 15 分钟。
还可以使用 RegisterDnsARecords 注册表值修改 Netlogon 执行的 A 记录的 DNS 注册。 有关详细信息,请参阅 如何在 Windows 中启用或禁用 DNS 更新。
请注意,DnsAvoidRegisterRecords 和 RegisterDnsARecords 注册表值都需要允许注册主机(A)记录:
- RegisterDnsARecords = 0x1 如果在 DnsAvoidRegisterRecords 注册表值设置中列出 LdapIpAddress 和 GcIpAddress,则不会注册 A 记录。
- RegisterDnsARecords = 0x0 无论是否在 DnsAvoidRegisterRecords 注册表值设置中列出 LdapIpAddress 和 GcIpAddress,A 记录都不会注册。
为防止本文前面所述的问题发生在一个环境中,一组 DC 和/或全局目录 (GC) 服务器位于中心位置,并且大量 DC 和/或 GC 服务器位于分支机构中,管理员可以禁用 Netlogon 在分支机构中注册某些 DNS 记录。 在这种情况下,不应注册的助记列表包括:
特定于 DC 的记录:
| 助记键 | 类型 | DNS 记录 |
|---|---|---|
| LdapIpAddress | A | <DnsDomainName> |
| Ldap | SRV | _ldap._tcp。<DnsDomainName> |
| DcByGuid | SRV | _ldap._tcp。<DomainGuid>.domains._msdcs。<DnsForestName> |
| Kdc | SRV | _kerberos._tcp.dc._msdcs。<DnsDomainName> |
| Dc | SRV | _ldap._tcp.dc._msdcs。<DnsDomainName> |
| Rfc1510Kdc | SRV | _kerberos._tcp。<DnsDomainName> |
| Rfc1510UdpKdc | SRV | _kerberos._udp。<DnsDomainName> |
| Rfc1510Kpwd | SRV | _kpasswd._tcp。<DnsDomainName> |
| Rfc1510UdpKpwd | SRV | _kpasswd._udp。<DnsDomainName> |
特定于 GC 的记录:
| 助记键 | 类型 | DNS 记录 |
|---|---|---|
| Gc | SRV | _ldap._tcp.gc._msdcs。<DnsForestName> |
| GcIpAddress | A | gc._msdcs。<DnsForestName> |
| GenericGc | SRV | _gc._tcp。<DnsForestName> |
注意
这些列表不包括特定于网站的记录。 因此,分支机构中的 DC 和 GC 服务器由通常由 DC 定位符使用的特定于站点的记录找到。 如果程序使用泛型(非站点特定)记录(例如本文前面列出的列表中的任何记录)搜索 DC/GC,则会在中心位置找到 DC/GC。
管理员还可以选择限制 Netlogon 为同一通用 DNS 名称注册的 DC 定位符记录(_ldap._tcp.dc._msdcs)注册的 DC 定位符记录数。<DomainName>),即使在同一域中少于 1200 个 DC 的情况下,也会减少对此类记录的查询的 DNS 响应的大小。
Status
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。
更多信息
对于 Active Directory 集成的 DNS 区域,每个具有权威性的 DNS 服务器都会添加一条 NS 记录。 默认情况下,域中的每个 DC 都会为一组非特定于站点的名称(例如“_ldap._tcp)注册 SRV 记录。<>domain_name“和 A 记录(s)将 Active Directory DNS 域名映射到 DC 的 TCP/IP 地址(es)。 当 DNS 服务器尝试在大约 1200 条具有相同共享名称的记录之后写入记录时,本地安全机构 (LSA) 在大约 10 秒内以 100% 的 CPU 使用率运行,注册不会成功。 Netlogon 每小时重试此注册;100% 的 CPU 使用率峰值至少每小时重新出现一次,尝试注册不会成功。