安装 Windows Server 2003 Service Pack 1 后,尝试使用 FQDN 或其 CNAME 别名在本地访问服务器时出现错误消息:访问被拒绝或没有网络提供程序接受给定网络路径

本文提供了尝试使用 FQDN 或其 CNAME 别名在本地访问服务器时发生的错误的解决方案。

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

注意

本文包含的信息介绍如何帮助降低安全设置或关闭计算机上的安全功能。 可以进行这些更改来解决特定问题。 在进行这些更改之前,建议评估与在特定环境中实现此解决方法相关的风险。 如果实现此解决方法,请执行任何适当的附加步骤来帮助保护系统。

症状

请考虑以下应用场景: 在基于 Windows Server 2003 的计算机上安装 Microsoft Windows Server 2003 Service Pack 1 (SP1) 。 执行此操作后,尝试在本地使用服务器的完全限定域名 (FQDN) 或其 CNAME 别名访问本地服务器时会遇到身份验证问题 (UNC) 路径:\\servername\sharename

在此方案中,你会遇到以下症状之一:

  • 你会收到重复的登录窗口。
  • 你会收到“拒绝访问”错误消息。
  • 收到“没有网络提供商接受给定网络路径”错误消息。
  • 事件 ID 537 记录在安全事件日志中。

注意

可以使用服务器 FQDN 或其 CNAME 别名从网络中安装 Windows Server 2003 SP1 的计算机以外的其他计算机访问服务器。 此外,还可以使用以下路径访问本地计算机上的服务器:

  • \\IPaddress-of-local-computer
  • \\Netbiosname 或 \\ComputerName

原因

出现此问题的原因是 Windows Server 2003 SP1 包含名为环回检查功能的新安全功能。 默认情况下,在 Windows Server 2003 SP1 中启用环回检查功能,并将 DisableLoopbackCheck 注册表项的值设置为 0 (零) 。

注意

环回检查功能存储在注册表子项中:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck

解决方案

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的详细信息,请参阅如何备份和还原 Windows 中的注册表

注意

此解决方法可能会让计算机或网络更容易受到恶意用户或恶意软件(如病毒)的攻击。 我们不建议使用此解决方法,但会提供此信息,以便你可以自行决定实现此解决方法。 如果使用此解决方法,需自行承担风险。

若要解决此问题,请将 DisableStrictNameChecking 注册表项设置为 1。 然后,根据自己的情况使用以下方法之一。

为此,请对客户端计算机上的所有节点执行以下步骤:

  1. 依次单击“开始”、“运行”,键入 regedit,然后单击“确定”

  2. 找到并单击下面的注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0

  3. 右键单击 “MSV1_0”,指向“ 新建”,然后单击“ 多字符串值”。

  4. “名称” 列中,键入 BackConnectionHostNames,然后按 Enter。

  5. 右键单击“ BackConnectionHostNames”,然后单击“ 修改”。

  6. “值 数据”框中,键入用于计算机上的本地共享的 CNAME 或 DNS 别名,然后单击“ 确定”。

    注意

    • 在单独的行中键入每个主机名。
    • 如果 BackConnectionHostNames 注册表项作为REG_DWORD类型存在,则必须删除 BackConnectionHostNames 注册表项。
  7. 退出注册表编辑器,然后重启计算机。

方法 2:禁用身份验证环回检查

通过将子项中的 DisableLoopbackCheck 注册表项设置为 1,重新启用 Windows Server 2003 中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa registry 存在的行为。 若要将 DisableLoopbackCheck 注册表项设置为 1,请在客户端计算机上执行以下步骤:

  1. 依次单击“开始”、“运行”,键入 regedit,然后单击“确定”

  2. 找到并单击下面的注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

  3. 右键单击 Lsa,指向 “新建”,然后单击“ DWORD 值”。

  4. 键入 DisableLoopbackCheck,然后按 Enter。

  5. 右键单击“ DisableLoopbackCheck”,然后单击“ 修改”。

  6. 在“数值数据”框中,键入 1,然后单击“确定”

  7. 退出注册表编辑器。

  8. 重启计算机。

注意

必须重启服务器才能使此更改生效。 默认情况下,在 Windows Server 2003 SP1 中启用环回检查功能,并将 DisableLoopbackCheck 注册表项设置为 0 (零) 。 禁用身份验证环回检查,并且打开 Windows Server 2003 服务器进行中间人 (MITM) NTLM 攻击时,安全性会降低。

状态

Microsoft 已确认这是本文开头列出的 Microsoft 产品中的问题。

更多信息

957097安装安全更新后,发出本地 NTLM 身份验证请求时,SQL Server或 Internet Information Services (IIS) 等应用程序可能会失败。

有关如何解决此问题的详细信息,请参阅知识库文章 957097的“此安全更新的已知问题”部分。