基于 Windows 的计算机上发生事件 ID 5788 和 5789

本文提供了以下问题的解决方案:当 DNS 域名和 Active Directory 域名在基于 Windows 的计算机上不同时,记录事件 ID 5788 和事件 ID 5789。

适用于:Windows 7 Service Pack 1,Windows Server 2012 R2
原始 KB 编号: 258503

症状

可能会遇到以下问题之一:

  • 在 Windows Vista 及更高版本上,在交互式登录期间收到以下错误消息:

    服务器上的安全数据库没有用于此工作站信任关系的计算机帐户。

  • 使用基于域的帐户进行交互式登录不起作用。 只有使用本地帐户登录才能正常运行。

  • 系统日志中记录了以下事件消息:

    事件类型:错误
    事件源:NETLOGON
    事件类别:无
    事件 ID:5788
    计算机:ComputerName
    说明:
    尝试更新 Active Directory 中计算机对象的服务主体名称 (SPN) 失败。 发生以下错误: <详细错误消息因原因而异。>

    事件类型:错误
    事件源:NETLOGON
    事件类别:无
    事件 ID:5789
    计算机:计算机
    说明:
    尝试更新 Active Directory 中计算机对象的 DNS 主机名失败。 发生以下错误: <详细错误消息因原因而异。>

    注意

    “原因”部分列出了这些事件的详细错误消息。

原因

当计算机尝试但未写入Active Directory 域服务 (AD DS) 域中计算机帐户的 dNSHostName 和 servicePrincipalName 属性时,会发生此行为。

如果满足以下条件,计算机会尝试更新这些属性:

  • 在基于 Windows 的计算机加入域后,计算机会立即尝试在新域中为其计算机帐户设置 dNSHostName 和 servicePrincipalName 属性。
  • 在已是 AD DS 域成员的基于 Windows 的计算机上建立安全通道时,计算机会尝试为域中的计算机帐户更新 dNSHostName 和 servicePrincipalName 属性。
  • 在基于 Windows 的域控制器上,Netlogon 服务尝试每 22 分钟更新一次 servicePrincipalName 属性。

更新失败的可能原因有两种:

  • 计算机没有足够的权限来完成其计算机帐户的 dNSHostName 或 servicePrincipalName 属性的 LDAP 修改请求。

    在这种情况下,与“症状”部分中描述的事件对应的错误消息如下所示:

    • 事件 5788

      访问被拒绝。

    • 事件 5789

      系统找不到指定的文件。

  • 计算机的主 DNS 后缀与计算机所属的 AD DS 域的 DNS 名称不匹配。 此配置称为“不连续命名空间”。

    例如,计算机是 Active Directory 域 contoso.com的成员。 但是,其 DNS FQDN 名称为 member1.nyc.contoso.com。 因此,主 DNS 后缀与 Active Directory 域名不匹配。

    此配置中阻止更新,因为属性值的先决条件写入验证失败。 写入验证失败,因为默认情况下,安全帐户管理器 (SAM) 要求计算机的主 DNS 后缀与计算机所属的 AD DS 域的 DNS 名称匹配。

    在这种情况下,与“症状”部分中描述的事件对应的错误消息如下所示:

    • 事件 5788

      为目录服务指定的属性语法无效。

    • 事件 5789

      参数不正确。

解决方案

若要解决此问题,请根据“原因”部分中所述找到最可能的原因。 然后,使用适合原因的解决方法。

原因 1 的解决方法

若要解决此问题,必须确保计算机帐户具有更新其自己的计算机对象的足够权限。

在 ACL 编辑器中,确保对受托人帐户“SELF” (ACE) 存在访问控制项,并且它具有以下扩展权限的“允许”访问权限:

  • 已验证写入 DNS 主机名
  • 已验证对服务主体名称的写入

然后,验证可能应用的任何拒绝权限。 除计算机的组成员身份外,以下受托人也适用于计算机:

  • 所有人
  • 经过身份验证的用户
  • SELF

适用于这些受托人的 ACE 也可能拒绝对属性进行写入的访问,或者可能拒绝“已验证写入 DNS 主机名”或“已验证写入服务主体名称”扩展权限。

原因 2 的解决方案

若要解决此问题,请根据需要使用以下方法之一:

方法 1:更正意外的不连续命名空间

如果非连续配置是无意的,并且要还原到连续命名空间,请使用此方法。

有关如何在 Windows Server 2003 上还原到连续命名空间的详细信息,请参阅以下 Microsoft TechNet 文章:
从不连续命名空间转换到连续命名空间
对于 Windows Server 2008 以及 Windows Vista 及更高版本,请参阅以下 Microsoft TechNet 文章:
反转意外创建的不连续命名空间

方法 2:验证不连续命名空间配置是否正常工作

如果要保留不连续的命名空间,请使用此方法。 为此,请按照以下步骤进行一些配置更改以解决错误。

有关如何在 Windows Server 2003 R2、Windows Server 2003、Windows Server 2003 Service Pack 1 (SP1) 和 Windows Server 2003 service Pack 2 (SP2) 上验证不连续命名空间是否正常工作的详细信息,请参阅以下 Microsoft TechNet 文章: 创建非连续命名空间
有关如何验证不连续命名空间是否在 Windows Server 2008 R2 和 Windows Server 2008 上正常工作的详细信息,请参阅以下 Microsoft TechNet 文章: 创建不连续命名空间

通过扩展“原因”部分中最后一个主要项目符号点中提到的示例,可以添加 nyc.contoso.com 为 属性的允许后缀。

更多信息

本文的旧版本提到更改计算机对象的权限,以启用常规写入访问来解决此问题。 这是 Windows 2000 中存在的唯一方法。 但是,它的安全性不如使用 msDS-AllowedDNSSuffixes。

msDS-AllowedDNSSuffixes 限制客户端将任意 SPN 写入 Active Directory。 “Windows 2000 方法”使客户端能够编写阻止 Kerberos 处理其他重要服务器的 SPN, () 创建重复项。 使用 msDS-AllowedDNSSuffixes 时,仅当其他服务器与本地计算机具有相同的主机名时,才会发生 SPN 冲突,例如这些冲突。

LDAP 修改请求响应的网络跟踪显示以下信息:
win: 17368, src: 389 dst: 1044

LDAP:ProtocolOp:ModifyResponse (7)

LDAP:MessageID

LDAP:ProtocolOp = ModifyResponse

LDAP:结果代码 = 约束冲突

LDAP:错误消息 = 0000200B:AtrErr:DSID-03151E6D 在此网络跟踪中,200B 十六进制等于 8203 十进制数。

net helpmsg 8203 命令返回以下信息:为目录服务指定的属性语法无效。”网络监视器 5.00.943 显示以下结果代码:“约束冲突”。Winldap.h 将错误 13 映射到“LDAP_CONSTRAINT_VIOLATION。

如果满足以下一个或多个条件,则 DNS 域名和 Active Directory 域名可能有所不同:

  • TCP/IP DNS 配置包含与计算机所属的 Active Directory 域不同的 DNS 域,并禁用了“ 域成员身份更改时更改主 DNS 后缀 ”选项。 若要查看此选项,请右键单击“ 我的电脑”,单击“ 属性”,然后单击“ 网络标识 ”选项卡。

  • 基于 Windows Server 2003 或基于 Windows XP Professional 的计算机可能会应用组策略设置,将主后缀设置为不同于 Active Directory 域的值。 组策略设置如下:计算机配置\管理模板\网络\DNS 客户端:主 DNS 后缀

  • 域控制器位于 Rendom.exe 实用工具重命名的域中。 但是,管理员尚未更改以前的 DNS 域名的 DNS 后缀。 域重命名过程不会更新主 DNS 后缀以匹配 DNS 域名重命名后的当前 DNS 域名。 Active Directory 林中不具有相同分层域名的域位于不同的域树中。 当林中存在不同的域树时,根域不是连续的。 但是,此配置不会创建不连续的 DNS 命名空间。 有多个 DNS 甚至 Active Directory DNS 根域。 非连续命名空间的特点是主 DNS 后缀与计算机所属的 Active Directory 域名之间的差异。

在某些情况下,可以谨慎使用不连续命名空间。 但是,并非所有方案都支持它。