如果尝试在基于 Microsoft Windows NT 4.0 的域和基于 Active Directory 的域之间建立信任,您可能会遇到以下任何一种症状:
此外,您可能还会看到下面的某条错误信息:
The following error occurred attempting to join the domain "Domain_Name":The account is not authorized to log in from this station.
No domain controller could be contacted.
Logon failure:unknown username or bad password.
之所以发生此问题,原因是以下任一方面存在配置问题:
- 名称解析
- 安全设置
- 用户权限
- Microsoft Windows 2000 或 Microsoft Windows Server 2003 的组成员资格
要正确地确定问题的原因,您必须对信任配置进行故障诊断。
要对基于 Windows NT 4.0 的域和 Active Directory 之间的信任配置进行故障诊断,您必须验证以下方面的正确配置:
- 名称解析
- 安全设置
- 用户权限
- Microsoft Windows 2000 或 Microsoft Windows Server 2003 的组成员资格
为此,请使用以下方法。
方法 1:验证名称解析的正确配置
第一步:创建 LMHOSTS 文件
在主域控制器上创建一个 LMHOSTS 文件,以便能够进行跨域名称解析。LMHOSTS 文件是文本文件,可以用任何文本编辑器(如“记事本”)进行编辑。每台域控制器上的 LMHOSTS 文件必须包含其他域控制器的 TCP/IP 地址、域名以及 \0x1b 条目。
有关如何创建 LMHOSTS 文件的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
180094?
(http://support.microsoft.com/kb/180094/
)
如何为域验证和其它名称解析问题编写 LMHOSTS 文件
创建了 LMHOSTS 文件后,请按照下列步骤操作:
- 修改该文件以使其包含如下的类似文本:
1.1.1.1 <NT_4_PDC_Name> #DOM:<NT_4_Domain_Name> #PRE
1.1.1.1 "<NT_4_Domain> \0x1b" #PRE
2.2.2.2 <Windows_2000_PDC_Name> #DOM:<Windows_2000_Domain_Name> #PRE
2.2.2.2 "<2000_Domain> \0x1b" #PRE
注意:对于 \0x1b 条目,引号 (" ") 之间必须一共要有 20 个字符和空格。在域名之后添加空格以使其使用 15 个字符。第 16 个字符是后跟“0x1b”值的反斜杠,这样就一共有 20 个字符。 - 完成对 LMHOSTS 文件的更改后,将文件保存到域控制器上的 %SystemRoot%\System32\Drivers\Etc 文件夹。
有关 LMHOSTS 文件的更多信息,请查看位于
%SystemRoot%\System32\Drivers\Etc 文件夹中的 Lmhosts.sam 示例文件。
第二步:将 LMHOSTS 文件加载到缓存中
- 依次单击“开始”和“运行”,键入 cmd,然后单击“确定”。
- 在命令提示符下,键入 NBTSTAT -R,然后按 Enter。此命令将 LMHOSTS 文件加载到缓存中。
- 在命令提示符处,键入 NBTSTAT -c,然后按 Enter。此命令显示缓存。如果正确写入了文件,缓存将类似于下面这样:
NT4PDCName <03> UNIQUE 1.1.1.1 -1
NT4PDCName <00> UNIQUE 1.1.1.1 -1
NT4PDCName <20> UNIQUE 1.1.1.1 -1
NT4DomainName <1C> GROUP 1.1.1.1 -1
NT4DomainName <1B> UNIQUE 1.1.1.1 -1
W2KPDCName <03> UNIQUE 2.2.2.2 -1
W2KPDCName <00> UNIQUE 2.2.2.2 -1
W2KPDCName <20> UNIQUE 2.2.2.2 -1
W2KDomainName <1C> GROUP 2.2.2.2 -1
W2KDomainName <1B> UNIQUE 2.2.2.2 -1
如果文件未正确填充缓存,请继续执行下一步。
第三步:确保在基于 Windows NT 4.0 的计算机上启用了 LMHOSTS 查询
如果文件未正确填充缓存,请确保在基于 Windows NT 4.0 的计算机上启用了 LMHOSTS 查询。为此,请按照下列步骤操作:
- 单击“开始”,指向“设置”,然后单击“控制面板”。
- 双击“网络”,单击“协议”选项卡,然后双击“TCP/IP 协议”。
- 单击“WINS 地址”选项卡,然后单击以选中“启用 LMHOSTS 查询”复选框。
- 重新启动计算机。
- 重复“将 LMHOSTS 文件加载到缓存中”一节中的步骤。
- 如果文件未正确填充缓存,请确保 LMHOSTS 文件位于 %SystemRoot%\System32\Drivers\Etc 文件夹中,并且该文件的格式正确无误。
例如,该文件的格式必须类似于以下示例格式设置:
1.1.1.1 NT4PDCName #DOM:NT4DomainName #PRE
1.1.1.1 "NT4DomainName \0x1b" #PRE
2.2.2.2 W2KPDCName #DOM:W2KDomainName #PRE
2.2.2.2 "W2KDomainName \0x1b" #PRE
注意:对于域名和 \0x1b 条目,引号 (" ") 内必须一共要有 20 个字符和空格。
第四步:使用 Ping 命令测试连接
当文件在每台服务器上正确填充了缓存后,在每台服务器上使用 Ping 命令来测试服务器之间的连接。为此,请按照下列步骤操作:
- 依次单击“开始”和“运行”,键入 cmd,然后单击“确定”。
- 在命令提示符处,键入 Ping Name_Of_Domain_Controller_You_Want_To_Connect_To,然后按 Enter。如果 Ping 命令不起作用,请确保 LMHOSTS 文件中列出了正确的 IP 地址。
- 在命令提示符处,键入 net view Name_Of_Domain_Controller_You_Want_To_Connect_To,然后按 Enter。预计您会收到以下错误消息:
System error 5 has occurred.Access is denied
如果 net view 命令返回以下错误消息或任何其他相关错误消息,请确保 LMHOSTS 文件中列出了正确的 IP 地址:System error 53 has occurred.The network path was not found
或者,可以配置 Windows Internet 名称服务 (WINS) 以便在不使用 LMHOSTS 文件的情况下启用名称解析功能。
有关如何使用 WINS 进行名称解析的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
185786?
(http://support.microsoft.com/kb/185786/
)
用于 WINS 的建议做法
方法 2:查看安全设置
通常,信任配置的 Active Directory 一方具有会导致连接问题的安全设置。但是,必须对信任的双方都检测安全设置。
第一步:查看 Windows 2000 Server 和 Windows Server 2003 上的安全设置
在 Windows 2000 Server 和 Windows Server 2003 中,安全设置可能是由组策略、本地策略或应用的安全模板应用或配置的。
您必须使用正确的工具来确定安全设置的当前值,以避免不正确的读数。
为了获得当前安全设置的准确读数,请使用以下方法:
- 在 Windows 2000 Server 中,使用“安全配置和分析”管理单元。
有关如何在基于 Windows 2000 的计算机上确定当前安全策略的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
258595?
(http://support.microsoft.com/kb/258595/
)
Gpresult 未枚举结果计算机安全策略
- 在 Windows Server 2003 中,使用“安全配置和分析”管理单元,或“策略的结果集”(RSoP) 管理单元。
有关如何使用“策略的结果集”管理单元的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
323276?
(http://support.microsoft.com/kb/323276/
)
如何在 Windows Server 2003 中安装和使用 RSoP
确定了当前设置后,您必须确定应用设置的策略。例如,您必须确定 Active Directory 中的组策略,或者设置安全策略的本地设置。
在 Windows Server 2003 中,设置安全值的策略由 RSoP 工具确定。但是,在 Windows 2000 中,您必须查看组策略和本地策略才能确定包含安全设置的策略:
- 要查看组策略设置,您必须在组策略处理过程中为 Microsoft Windows 2000 安全配置客户端启用日志输出。
有关如何在组策略处理过程中为 Microsoft Windows 2000 安全配置客户端启用日志输出的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
245422?
(http://support.microsoft.com/kb/245422/
)
如何在 Windows 2000 中启用安全配置客户端处理日志
- 在事件查看器中查看应用程序日志,并查找事件 ID 1000 和事件 ID 1202。
有关事件 ID 1000 和事件 ID 1202 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
319352?
(http://support.microsoft.com/kb/319352/
)
在 Windows 2000 Server 中,每隔 5 分钟将事件 ID 1000 和事件 ID 1202 记录到事件日志
下面三节确定操作系统,并列出您必须在收集的信息中针对操作系统进行验证的安全设置:
Windows 2000
确保按所示方式配置了以下设置。
RestrictAnonymous:
LM 兼容性:
收起该表格展开该表格
| LAN Manager 身份验证级别 | “LM & NTLM 响应”或“发送 LM & NTLM - 如果已协商,使用 NTLMv2 会话安全” |
SMB 签名、SMB 加密(或两者):
收起该表格展开该表格
| 数字签名的客户端通信(总是) | 禁用 |
| 数字签名的客户端通信(如果可能) | 启用 |
| 数字签名的服务器通信(总是) | 禁用 |
| 数字签名的服务器通信(如果可能) | 启用 |
| 安全通道:对安全通道数据进行数字加密或签名(总是) | 禁用 |
| 安全通道:对安全通道数据进行数字加密(如果可能) | 禁用 |
| 安全通道:对安全通道数据进行数字签名(如果可能) | 禁用 |
| 安全通道:需要强(Windows 2000 或以上版本)会话密钥 | 禁用 |
Windows Server 2003
确保按所示方式配置了以下设置。
RestrictAnonymous 和 RestrictAnonymousSam:
收起该表格展开该表格
| 网络访问:允许匿名 SID/名称转换 | 启用 |
| 网络访问:不允许 SAM 帐户的匿名枚举 | 禁用 |
| 网络访问:不允许 SAM 帐户和共享的匿名枚举 | 禁用 |
| 网络访问:让“每个人”权限应用于匿名用户 | 启用 |
| 网络访问:可以匿名访问命名管道 | 启用 |
| 网络访问:限制匿名访问命名管道和共享 | 禁用 |
| |
LM 兼容性:
收起该表格展开该表格
| 网络安全:LAN Manager 身份验证级别 | “LM & NTLM 响应”或“发送 LM & NTLM - 如果已协商,使用 NTLMv2 会话安全” |
SMB 签名、SMB 加密(或两者):
收起该表格展开该表格
| Microsoft 网络客户端:数字签字的通信(总是) | 禁用 |
| Microsoft 网络客户端:数字签字的通信(若服务器同意) | 启用 |
| Microsoft 网络服务器:数字签字的通信(总是) | 禁用 |
| Microsoft 网络服务器:数字签字的通信(若客户端同意) | 启用 |
| 域成员:对安全通道数据进行数字加密或签名(总是) | 禁用 |
| 域成员:对安全通道数据进行数字加密(如果可能) | 启用 |
| 域成员:对安全通道数据进行数字签名(如果可能) | 启用 |
| 域成员:需要强(Windows 2000 或以上版本)会话密钥 | 禁用 |
正确配置了这些设置后,您必须重新启动计算机。在重新启动计算机之前,这些安全设置将不会实施。
计算机重新启动后,等待 10 分钟以确保所有安全策略都已应用,并且配置了有效的设置。我们之所以建议您等待 10 分钟,原因是域控制器上的 Active Directory 策略每 5 分钟更新一次,而更新可能会更改安全设置值。10 分钟后,使用“安全配置和分析”或其他工具在 Windows 2000 和 Windows Server 2003 中检查安全设置。
Windows NT 4.0
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能会出现严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证可以解决这些问题。修改注册表需要您自担风险。
在 Windows NT 4.0 中,必须通过使用 Regedt32 工具来查看注册表,从而验证当前的安全设置。为此,请按照下列步骤操作:
- 依次单击“开始”和“运行”,键入 regedt32,然后单击“确定”。
- 展开以下注册表子项,然后查看分配给 RestrictAnonymous 条目的值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters
- 展开以下注册表子项,然后查看分配给 LM Compatibility 条目的值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\LMCompatibilityLevel
- 展开以下注册表子项,然后查看分配给 EnableSecuritySignature (server) 条目的值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters\EnableSecuritySignature
- 展开以下注册表子项,然后查看分配给 RequireSecuritySignature (server) 条目的值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters\RequireSecuritySignature
- 展开以下注册表子项,然后查看分配给 RequireSignOrSeal 条目的值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
- 展开以下注册表子项,然后查看分配给 SealSecureChannel 条目的值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
- 展开以下注册表子项,然后查看分配给 SignSecureChannel 条目的值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
- 展开以下注册表子项,然后查看分配给 RequireStrongKey 条目的值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
方法 3:验证用户权限
要在基于 Windows 2000 的计算机上验证所需的用户权限,请按照下列步骤操作:
- 单击“开始”,指向“程序”,指向“管理工具”,然后单击“本地安全策略”。
- 展开“本地策略”,然后单击“用户权限分配”。
- 在右边的窗格中,双击“从网络访问此计算机”。
- 单击以选中“分配给”列表中“Everyone”组旁边的“本地策略设置”复选框,然后单击“确定”。
- 双击“拒绝从网络访问这台计算机”。
- 确认“分配给”列表中没有任何主体组,然后单击“确定”。例如,确保未列出 Everyone、Authenticated Users 和其他组。
- 单击“确定”,然后退出“本地安全策略”。
要在基于 Windows Server 2003 的计算机上验证所需的用户权限,请按照下列步骤操作:
- 单击“开始”,指向“管理工具”,然后单击“域控制器安全策略”。
- 展开“本地策略”,然后单击“用户权限分配”。
- 在右边的窗格中,双击“从网络访问此计算机”。
- 确保 Everyone 组在“从网络访问此计算机”列表中。如果 Everyone 组未列出,请按照下列步骤操作:
- 单击“添加用户或组”。
- 在“用户和组名称”框中,键入 Everyone,然后单击“确定”。
- 双击“拒绝从网络访问这台计算机”。
- 确认“拒绝从网络访问这台计算机”列表中没有任何主体组,然后单击“确定”。例如,确保未列出 Everyone、Authenticated Users 和其他组。
- 单击“确定”,然后关闭“域控制器安全策略”。
要在基于 Windows NT Server 4.0 的计算机上验证所需的用户权限,请按照下列步骤操作:
- 单击“开始”,指向“程序”,指向“管理工具”,然后单击“域用户管理器”。
- 在“策略”菜单上,单击“用户权限”。
- 在“权限”列表中,单击“从网络访问此计算机”。
- 在“授予”框中,确定已添加了 Everyone 组。如果未添加 Everyone 组,请按照下列步骤操作:
- 单击“添加”。
- 在“名称”列表中,单击“Everyone”,单击“添加”,然后单击“确定”。
- 单击“确定”,然后退出“用户管理器”。
方法 4:验证组成员资格
如果在域之间建立了信任,但您由于对话框未找到其他域对象而无法将主要用户组从一个域添加到另一个域,则“Pre-Windows 2000 compatible access”组可能没有正确的成员资格。
在基于 Windows 2000 的域控制器和基于 Windows Server 2003 的域控制器上,确保配置了必需的组成员资格。
为此,请在基于 Windows 2000 的域控制器上按照下列步骤操作:
- 单击“开始”,指向“程序”,指向“管理工具”,然后单击“Active Directory 用户和计算机”。
- 单击“内置”,然后双击“Pre-Windows 2000 compatible access 组”。
- 单击“成员”选项卡,并确保 Everyone 组在“成员”列表中。
- 如果 Everyone 组不在“成员”列表中,请按照下列步骤操作:
- 依次单击“开始”和“运行”,键入 cmd,然后单击“确定”。
- 在命令提示符处,键入 net localgroup "Pre-Windows 2000 Compatible Access" everyone /add,然后按 Enter。
为了确保在基于 Windows Server 2003 的域控制器上配置了必需的组成员资格,您必须知道“网络访问:让‘每个人’权限应用于匿名用户”策略设置是否已禁用。如果不知道,请使用组策略对象编辑器来确定“网络访问:让‘每个人’权限应用于匿名用户”策略设置的状态。为此,请按照下列步骤操作:
- 依次单击“开始”和“运行”,键入 gpedit.msc,然后单击“确定”。
- 展开以下文件夹:
本地计算机策略
计算机配置
Windows 设置
安全设置
本地策略
- 单击“安全选项”,然后在右边的窗格中单击“网络访问:让‘每个人’权限应用于匿名用户”。
- 注意“安全设置”列中的值是“已禁用”还是“已启用”。
为了确保在基于 Windows Server 2003 的域控制器上配置必需的组成员资格,请按照下列步骤操作:
- 单击“开始”,指向“程序”,指向“管理工具”,然后单击“Active Directory 用户和计算机”。
- 单击“内置”,然后双击“Pre-Windows 2000 compatible access 组”。
- 单击“成员”选项卡。
- 如果“网络访问:让‘每个人’权限应用于匿名用户”策略设置处于禁用状态,请确保 Everyone、Anonymous Logon 组在“成员”列表中。如果“网络访问:让‘每个人’权限应用于匿名用户”策略设置处于启用状态,请确保 Everyone 组在“成员”列表中。
- 如果 Everyone 组不在“成员”列表中,请按照下列步骤操作:
- 依次单击“开始”和“运行”,键入 cmd,然后单击“确定”。
- 在命令提示符处,键入 net localgroup "Pre-Windows 2000 Compatible Access" everyone /add,然后按 Enter。
方法 5:通过网络设备(比如防火墙、交换机或路由器)验证连接
如果收到类似于如下错误消息,并且已验证了 LMHOST 文件正确无误,则问题可能是由防火墙、路由器或交换机导致的,这些设备阻止了域控制器之间的端口:
No domain controller could be contacted
要对网络设备进行故障诊断,请使用 PortQry Command Line Port Scanner 2.0 版来测试域控制器之间的端口。
有关 PortQry 2 版的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
832919?
(http://support.microsoft.com/kb/832919/
)
PortQry 2.0 版中的新增特性和功能
有关如何必须配置端口的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
179442?
(http://support.microsoft.com/kb/179442/
)
如何为域和信任关系配置防火墙
方法 6:收集有助于解决问题的附加信息
如果前面的方法无法帮助您解决问题,请收集以下附加信息来帮助您对问题的原因进行故障诊断:
- 在两台域控制器上都启用 Netlogon 日志记录。
有关如何完成 Netlogon 日志记录的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
109626?
(http://support.microsoft.com/kb/109626/
)
为 Net Logon 服务启用调试日志记录
- 在问题发生的同一时间,在两台域控制器上捕获跟踪记录。
有关如何捕获网络通信的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
812953?
(http://support.microsoft.com/kb/812953/
)
如何使用网络监视器捕获网络通信
下面的组策略对象 (GPO) 列表提供了对应注册表项的位置和适用操作系统中的组策略:
- RestrictAnonymous GPO:
- RestrictAnonymousSAM GPO:
- EveryoneIncludesAnonymous GPO:
- LM Compatibility GPO:
- EnableSecuritySignature (client) GPO:
- Windows 2000 和 Windows Server 2003 注册表位置:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters\EnableSecuritySignature
- Windows 2000 组策略:“计算机配置”\“Windows 设置”\“安全设置”\“安全选项:数字签名的客户端通信(如果可能)”
- Windows Server 2003 组策略:“计算机配置”\“Windows 设置”\“安全设置”\“安全选项”\“Microsoft 网络客户:数字签字的通信(若服务器同意)”
- RequireSecuritySignature (client) GPO:
- EnableSecuritySignature (server) GPO:
- RequireSecuritySignature (server) GPO:
- RequireSignOrSeal GPO:
- SealSecureChannel GPO:
- SignSecureChannel GPO:
- RequireStrongKey GPO:
有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
257942?
(http://support.microsoft.com/kb/257942/
)
错误消息:由于发生以下错误而无法浏览选定的域 ...
246261?
(http://support.microsoft.com/kb/246261/
)
如何在 Windows 2000 中使用 RestrictAnonymous 注册表值
258595?
(http://support.microsoft.com/kb/258595/
)
Gpresult 未枚举结果计算机安全策略
823659?
(http://support.microsoft.com/kb/823659/
)
修改安全设置和用户权限分配时可能出现的客户端、服务和程序不兼容问题
278259?
(http://support.microsoft.com/kb/278259/
)
Everyone 组不包括匿名安全标识符