本文提供了有关域控制器无法正常运行的问题的常见解决方法。
原始 KB 数: 837513
现象
在基于 Microsoft Windows 2000 Server 的域控制器或基于 Windows Server 2003 的域控制器上运行 Dcdiag 工具时,可能会收到以下错误消息:
DC 诊断
执行初始设置:
[DC1] LDAP 绑定失败,错误代码 31
当你在域控制器本地运行 REPADMIN /SHOWREPS
实用工具时,可能会收到以下错误消息:
[D:\nt\private\ds\src\util\repadmin\repinfo.c, 389]LDAP 错误 82(本地错误)。
上次尝试失败,时间为 yyyy-mm-dd hh:mm.ss,结果 1753: 端点映射程序中不再有可用的端点。
上次尝试失败,时间为 yyyy-mm-dd hh:mm.ss,结果 5:拒绝访问。
如果使用 Active Directory 站点和服务触发复制,则可能会收到一条消息,指示拒绝访问。
在尝试使用受影响域控制器控制台中的网络资源(包括通用命名约定 (UNC) 资源或映射网络驱动器)时,可能会收到以下错误消息:
没有可用的登录服务器 (c000005e = "STATUS_NO_LOGON_SERVERS")
如果从受影响域控制器控制台启动任何 Active Directory 管理工具(包括 Active Directory 站点和服务和 Active Directory 用户和计算机),则可能会收到以下错误消息:
无法找到命名信息,原因: 无法联系任何机构进行身份验证。 请与系统管理员联系,验证域是否已正确配置且当前处于联机状态。
无法找到命名信息,原因: 目标帐户名称不正确。 请与系统管理员联系,验证域是否已正确配置且当前处于联机状态。
连接到使用受影响域控制器进行身份验证的 Microsoft Exchange Server 计算机的 Microsoft Outlook 客户端可能会提示输入登录凭据,即使其他域控制器已成功进行登录身份验证。
Netdiag 工具可能会显示以下错误消息:
DC 列表测试。 。 。 。 。 。 。 。 。 。 。 失败:
[警告]无法将 DsBind 调用到 <servername>。<fqdn> (<ip 地址>)。 [ERROR_DOMAIN_CONTROLLER_NOT_FOUND]
Kerberos 测试。 。 。 。 。 。 。 。 。 。 。 失败:
[致命]Kerberos 没有 krbtgt/<fqdn> 的票证。[致命]Kerberos 没有主机名>票证<。
LDAP 测试。 。 。 。 。 。 。 。 。 。 。 。 。 : 通过
[警告]无法在 DC <主机名><fqdn 上查询 SPN 注册>
可能会在受影响的域控制器的系统事件日志中记录以下事件:
Event Type: Error
Event Source: Service Control Manager
Event ID: 7023
Description: The Kerberos Key Distribution Center service terminated with the following error: The security account manager (SAM) or local security authority (LSA) server was in the wrong state to perform the security operation.
解决方法
这些症状有若干种解决方法。 下面是要尝试的方法列表。 列表后面是执行每个方法的步骤。 请尝试每个方法,直到问题得到解决。 Microsoft 知识库文章介绍了这些症状的冷门修复方法,稍后会列出。
- 方法 1:修复域名系统 (DNS) 错误。
- 方法 2:在计算机之间同步时间。
- 方法 3:检查从网络访问此计算机用户权限。
- 方法 4:验证域控制器的 userAccountControl 属性是否为 532480。
- 方法 5:修复 Kerberos 领域(确认 PolAcDmN 注册表项和 PolPrDmN 注册表项互相匹配)。
- 方法 6:重置计算机帐户密码,然后获取新的 Kerberos 票证。
方法 1:修复 DNS 错误
- 在命令提示符下,运行
netdiag -v
命令。 此命令在运行命令的文件夹中创建 Netdiag.log 文件。 - 在继续操作之前,请先解决 Netdiag.log 文件中的任何 DNS 错误。 Netdiag 工具位于 Windows 2000 Server CD-ROM 的 Windows 2000 服务器支持工具中,或者作为下载提供。
- 确保 DNS 配置正确。 一个最常见的 DNS 错误是将域控制器指向 DNS 的 Internet 服务提供商 (ISP),而不是将 DNS 指向自身或支持动态更新和 SRV 记录的另一个 DNS 服务器。 建议将域控制器指向自身或支持动态更新和 SRV 记录的另一个 DNS 服务器。 建议设置 ISP 的转发器以在 Internet 上进行名称解析。
有关如何为 Active Directory 目录服务配置 DNS 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
254680 DNS 命名空间规划
方法 2:在计算机之间同步时间
验证域控制器之间的时间是否正确同步。 此外,请验证客户端计算机和域控制器之间的时间是否正确同步。
方法 3:检查“从网络访问此计算机”用户权限
修改 Gpttmpl.inf 文件,确认相应用户在域控制器上拥有“从网络访问此计算机”用户权限。 为此,请按照下列步骤进行操作:
修改默认域控制器策略的 Gpttmpl.inf 文件。 默认情况下,默认域控制器策略用于为域控制器定义用户权限。 默认情况下,默认域控制器策略的 Gpttmpl.inf 文件位于以下文件夹中。
注意
Sysvol 可能位于其他位置,但 Gpttmpl.inf 文件的路径将相同。
Windows Server 2003 域控制器:
C:\WINDOWS\Sysvol\Sysvol\Domainname>\<Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf
Windows 2000 Server 域控制器:
C:\WINNT\Sysvol\Sysvol\<Domainname>\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf
在 SeNetworkLogonRight 条目右侧,为管理员、经过身份验证的用户和任何人添加安全标识符。 请参阅以下示例。
Windows Server 2003 域控制器:
SeNetworkLogonRight = *S-1-5-32-554,*S-1-5-9,*S-1-5-32-544,*S-1-1-0
Windows 2000 Server 域控制器:
SeNetworkLogonRight = *S-1-5-11,*S-1-5-32-544,*S-1-1-0
注意
管理员 (S-1-5-32-544)、经过身份验证的用户 (S-1-5-11)、任何人 (S-1-1-0) 和企业控制器 (S-1-5-9) 使用在任何域中都相同的常见安全标识符。
删除 SeDenyNetworkLogonRight 条目右侧的任何条目(拒绝从网络访问此计算机),以匹配以下示例。
SeDenyNetworkLogonRight =
注意
Windows 2000 Server 和 Windows Server 2003 的示例相同。
默认情况下,SeDenyNetworkLogonRight 条目中没有 Windows 2000 Server 的条目。 默认情况下,SeDenyNetworkLogonRight 条目中只有 Windows Server 2003 的 Support_random 字符串帐户。 (Support_random 字符串帐户用于远程协助)因为 Support_random 字符串帐户在每个域中都使用不同的安全标识符 (SID),因此,仅通过查看 SID,难以区分此帐户与典型用户帐户。 你可能需要将 SID 复制到另一个文本文件,然后从 SeDenyNetworkLogonRight 条目中删除 SID。 这样,你就可以在解决问题后将其放回原处。
可以在任何策略中定义 SeNetworkLogonRight 和 SeDenyNetworkLogonRight。 如果前面的步骤未解决问题,请检查 Sysvol 中其他策略中的 Gpttmpl.inf 文件,确认用户权限在其中也未进行定义。 如果 Gpttmpl.inf 文件不包含对 SeNetworkLogonRight 或 SeDenyNetworkLogonRight 的引用,则相应策略中未定义这些设置,并且该策略不是导致此问题的原因。 如果这些条目确实存在,请确保它们与之前列出的默认域控制器策略设置相匹配。
方法 4:验证域控制器的 userAccountControl 属性是否为 532480
- 依次单击“开始”和“运行”,然后键入“adsiedit.msc”。
- 依次展开“域 NC”、“DC=域”、“OU=域控制器”。
- 右键单击受影响的域控制器,然后单击“属性”。
- 在 Windows Server 2003 中,单击以选中“显示必需属性”复选框,并在“属性编辑器”选项卡上选中“显示可选属性”复选框。在 Windows 2000 Server 中,单击“选择要查看的属性”框中的“两者”。
- 在 Windows Server 2003 中,单击“属性”框中的 userAccountControl。 在 Windows 2000 Server 中,单击“选择要查看的属性”中的 userAccountControl。
- 如果值不是 532480,请在“编辑属性”框中键入 532480,单击“设置”,单击“应用”,然后单击“确定”。
- 退出 ADSI 编辑。
方法 5:修复 Kerberos 领域(确认 PolAcDmN 注册表项和 PolPrDmN 注册表项互相匹配)
注意
此方法仅适用于 Windows 2000 Server。
重要
此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关如何备份和还原注册表的详细信息,请单击下面的文章编号,查看相应的 Microsoft 知识库文章:
322756 如何备份和还原 Windows 中的注册表
- 启动注册表编辑器。
- 在左窗格中,展开“安全”。
- 在“安全”菜单上,单击“权限”,授予“管理员”本地组对“安全”配置单元及其子容器和对象的完全控制。
- 找到
HKEY_LOCAL_MACHINE\SECURITY\Policy\PolPrDmN
项。 - 在注册表编辑器的右窗格中,单击<“无名称>:REG_NONE”条目一次。
- 在“视图”菜单中,单击“显示二进制数据”。 在对话框的“格式”部分,单击“字节”。
- 域名显示为“二进制数据”对话框右侧的字符串。 域名与 Kerberos 领域相同。
- 找到
HKEY_LOCAL_MACHINE\SECURITY\Policy\PolACDmN
注册表项。 - 在注册表编辑器的右窗格中,双击<“无名称>:”REG_NONE项。
- 在“二进制编辑器”对话框中,粘贴 PolPrDmN 中的值。 (PolPrDmN 中的值将是 NetBIOS 域名)。
- 重新启动域控制器。
方法 6:重置计算机帐户密码,然后获取新的 Kerberos 票证
停止“Kerberos 密钥发行中心”服务,然后将启动值设置为“手动”。
使用 Windows 2000 Server 支持工具或 Windows Server 2003 支持工具中的 Netdom 工具重置域控制器的计算机帐户密码:
netdom resetpwd /server: <another domain controller> /userd:domain\administrator /passwordd: <administrator password>
确保
netdom
命令的返回结果为成功完成。 如果不是,则该命令未起到作用。 对于受影响域控制器为 DC1 且工作域控制器为 DC2 的域 Contoso,请从 DC1 的控制台运行以下netdom
命令:netdom resetpwd /server:DC2 /userd:contoso\administrator /passwordd: <administrator password>
重启受影响的域控制器。
启动“Kerberos 密钥发行中心”服务,然后将启动设置设置设为“自动”。
有关此问题的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
323542 无法启动“Active Directory 用户和计算机”工具,因为服务器未正常运行