在有大量域控制器时 Active Directory 集成 DNS 区域出现的问题

文章翻译 文章翻译
文章编号: 267855 - 查看本文应用于的产品
重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要备份注册表,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
展开全部 | 关闭全部

本文内容

症状

在包含大量 DC(一般超过 800)的域中,某些 DC 的 SRV 和域控制器 (DC) 定位器 A 记录(由 Netlogon 注册)和 NS 记录(由权威 DNS 服务器添加)在 Active Directory 集成 DNS 区域中的域名系统 (DNS) 注册可能无法成功完成。如果 Active Directory 集成 DNS 区域的名称与 Active Directory 域名相同,则在超过 400 个 DC 的域中,A 记录和 NS 记录在区域根目录的注册也会出现问题。而且,事件日志中可能会记录以下一条或多条错误信息:
Event Type:Error
Event Source:DNS
Event Category:None
Event ID:4011
Date: 6/28/2000
Time:7:50:13 PM
User:N/A
Computer:MACHINE1
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
Date:6/28/2000
Time:7:50:13 PM
User:N/A
Computer:MACHINE1
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
Date:6/28/2000
Time:7:33:24 PM
User:Everyone
Computer:MACHINE1
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 77d76064-f49e-4762-ba8c-324b6c518f11) 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
Date:6/28/2000
Time:7:33:24 PM
User:Everyone
Computer:MACHINE1
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 77d76064-f49e-4762-ba8c-324b6c518f11) 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 把可以与单个对象关联的值限制在大约 800 个左右。在一个 Active Directory 集成 DNS 区域中,DNS 名称由 dnsNode 对象表示,并且 DNS 记录作为值存储在 dnsNode 对象上的多值 dnsRecord 属性中,因而导致出现本文前面列出的错误信息。

解决方案

要解决此问题,请获取最新的 Windows 2000 Service Pack。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中的相应文章:
260910 如何获取最新的 Windows 2000 Service Pack
该修复程序的英文版应具有以下或更新的文件属性:
    日期       时间       大小                  文件名
---------------------------------------------------------
02/08/2001  01:32p  5,090,728  Q267855_W2K_SP2_x86_en.EXE  
				

此修复程序包含针对 DNS 和 Netlogon 组件的修复。这些修复程序不会消除当 DNS 区域与 Active Directory 集成时对可以添加到同一 DNS 名称的记录数量的限制,但是它们提供了一种机制,可以在 Active Directory 集成 DNS 区域中禁用不必要的 SRV 和 DC 定位器 A 记录和 NS 记录的 DNS 注册。

DNS 修复

将此修复程序应用到在 DC 上运行的每一个 DNS 服务器。此修复程序的 DNS 部分还包含一个更新版本的 Dnscmd.exe,后者安装在 系统驱动器:\Program Files\Support Tools 文件夹中。应用此修复程序后,请使用以下任何一种方法:

方法 1

如果您想指定一个列表,列出那些可以通过添加 NS 记录以将其自身对应于一个指定区域的 DNS 服务器,您可以选择一个 DNS 服务器,然后使用 /AllowNSRecordsAutoCreation 开关运行 Dnscmd.exe:
  • 若要设置有权为一个区域自动创建 NS 记录的 DNS 服务器的 TCP/IP 地址列表,请使用“dnscmd 服务器名 /config 区域名 /AllowNSRecordsAutoCreation IPList”命令。例如:
    Dnscmd NS1 /config 区域名.com /AllowNSRecordsAutoCreation 10.1.1.1 10.5.4.2
  • 若要清除有权自动为一个区域创建 NS 记录的 DNS 服务器的 TCP/IP 地址列表,并在每一个主 DNS 服务器向区域自动添加一个与其对应的 NS 记录时让该区域返回默认状态,请使用“dnscmd 服务器名 /config 区域名 /AllowNSRecordsAutoCreation”命令。例如:
    Dnscmd NS1 /config 区域名.com /AllowNSRecordsAutoCreation
  • 若要查询有权自动为区域创建 NS 记录的 DNS 服务器的 TCP/IP 地址列表,请使用“dnscmd 服务器名 /zoneinfo 区域名 /AllowNSRecordsAutoCreation”命令。例如:
    Dnscmd NS1 /zoneinfo 区域名.com /AllowNSRecordsAutoCreation
注意:只须在一个 DNS 服务器上运行此命令。Active Directory 复制将把这些更改传播给在同一域中的 DC 上运行的所有 DNS 服务器。

在域的多数 DNS DC 位于分支办公室,少数 DNS DC 位于中心位置的环境中,您可能希望使用本文前面介绍的 Dnscmd 命令来设置 IPList 以仅包括位于中心位置的 DNS DC。这样,就只有位于中心位置的 DNS DC 将其各自的 NS 记录添加到 Active Directory 域区域中。

方法 2

警告:“注册表编辑器”使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因“注册表编辑器”使用不当而导致的问题。使用“注册表编辑器”需要您自担风险。

如果您想选择让某一个 DNS 服务器不向任何 Active Directory 集成 DNS 区域添加与其对应的 NS 记录,请使用注册表编辑器 (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    DNS 服务器不自动为所有
Active Directory 集成 DNS 区域创建 NS 记录,而不管 Active Directory 集成 DNS 区域中的
AllowNSRecordsAutoCreation 配置
如何。
					
注意:Windows 2000 未向注册表中添加此值。如要应用对此值的更改,您必须重新启动“DNS 服务器”服务。

如果您想防止某些 DNS 服务器将其对应的 NS 记录添加到它们承载的 Active Directory 集成 DNS 区域中,您可以使用本文前面部分介绍的 DisableNSRecordsAutoCreation 这一注册表值。

注意,如果将 DisableNSRecordsAutoCreation 注册表值设置为 0x1,则任何一个由该 DNS 服务器承载的 Active Directory 集成 DNS 区域都将不包含此服务器的 NS 记录。因此,如果此服务器必须将其自己的 NS 记录添加到它承载的至少一个 Active Directory 集成 DNS 区域中,就不要将此注册表值设置为 0x1。

Netlogon 修复

警告:“注册表编辑器”使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因“注册表编辑器”使用不当而导致的问题。使用“注册表编辑器”需要您自担风险。

如本文前面部分所述,此修复程序的 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.dc._msdcs.<SiteName>._sites.<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>
				
注意:Windows 2000 不会将此值添加到注册表中,并且不必重新启动 Netlogon 服务。如果在 Netlogon 服务停止或者在其启动后的前 15 分钟内创建或修改了 DnsAvoidRegisterRecords 注册表值,则在短暂的延迟后将开始相应的 DNS 更新(不过此延迟不会超过 Netlogon 启动后 15 分钟)。

由 Netlogon 执行的对 A 记录的 DNS 注册也可以通过使用 RegisterDnsARecords 注册表值进行修改。 有关如何进行此操作的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
246804 如何启用/禁用 Windows 2000 动态 DNS 注册
注意,DnsAvoidRegisterRecords 注册表值设置优先于 RegisterDnsARecords 注册表值设置。因此,如果在 DnsAvoidRegisterRecords 注册表值中使用了 LdapIpAddress 和/或 GcIpAddress 助记符,则存在以下情况:
  • 如果 DnsAvoidRegisterRecords 包含 LdapIpAddress 并且 RegisterDnsARecords 设置为 0x0,则 Dns 域名 A 记录将不会由 Netlogon 注册。
  • 如果 DnsAvoidRegisterRecords 不包含 LdapIpAddress 并且 RegisterDnsARecords 设置为 0x1,则 Dns 域名 A 记录将不会由 Netlogon 注册。
  • 如果 DnsAvoidRegisterRecords 包含 GcIpAddress 并且将 RegisterDnsARecords 设置为 0x0,则 _gc._msdcs.Dns 林名称 A 记录将不会由 Netlogon 注册。
  • 如果 DnsAvoidRegisterRecords 不包含 GcIpAddress 并且 RegisterDnsARecords 设置为 0x1,则 _gc._msdcs.Dns 林名称 A 记录将不会由 Netlogon 注册。
为防止在一组 DC 和/或全局编录 (GC) 服务器位于中心位置并且大量 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。

即使在同一域中有不到 800 个 DC 的情形中,管理员也可以选择限制由 Netlogon 针对同一个一般 DNS 名称(_ldap._tcp.dc._msdcs.域名)注册的 DC 定位器记录(如 SRV 和 A 记录)的数量,以减少查询此类记录时 DNS 返回的响应内容数量。

状态

Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中存在的问题。 此问题最早在 Windows 2000 Service Pack 2 中得到了解决。

更多信息

每一个对 Active Directory 集成 DNS 区域具有权威性的 DNS 服务器都将添加一条 NS 记录。默认情况下,域中的每一个 DC 都将为非特定于站点的一组名称(如“_ldap._tcp.域名”)注册一条 SRV 记录,并注册一条将 Active Directory DNS 域名映射到 DC 的 TCP/IP 地址的 A 记录。当 DNS 服务器尝试使用同一个共享名在大约 800 条记录之后写入一条记录时,本地安全机构 (LSA) 将以 100% 的 CPU 使用率运行大约 10 秒钟,并且注册失败。Netlogon 每小时尝试一次此注册;100% CPU 使用率这一峰值每小时至少重复一次,而且注册尝试均不成功。

有关如何同时安装 Windows 2000 和 Windows 2000 修复程序的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
249149 安装 Microsoft Windows 2000 和 Windows 2000 修补程序

属性

文章编号: 267855 - 最后修改: 2006年4月3日 - 修订: 3.1
这篇文章中的信息适用于:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
关键字:?
kberrmsg kbbug kbfix kbdns kbwin2000presp2fix kbqfe kbenv kbnetwork kbhotfixserver KB267855
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com