如何在Windows中定位域控制器

来源:互联网 发布:矩阵潜袭新手 编辑:程序博客网 时间:2024/05/16 07:11

本文描述了 Windows 用来在基于 Windows 的域中定位域控制器的机制。并详细介绍了按照域的 DNS-style 名称和 Flat-style (NetBIOS) 名称定位该域的过程。Flat-style 名称用于实现向后兼容。在所有其他情况下,DNS-style 名称应因为策略原因而使用。本文还介绍了解决域控制器定位过程的问题。

该序列描述定位器查找域控制器的方法: 在客户端(定位域控制器的计算机)上,定位器作为远程过程调用 (RPC) 启动到本地 Netlogon 服务。定位器 DsGetDcName 应用程序编程接口 (API) 调用是通过 Netlogon 服务实现的。客户端收集选择域控制器所需的信息,并使用 DsGetDcName 调用将此信息传递给 Netlogon 服务。客户端上的 Netlogon 服务使用收集的信息,通过下列两种方法之一查找指定域的域控制器: 对于 DNS 名称,Netlogon 使用 IP/DNS 兼容定位器查询 DNS,即,在将域名添加到指定 SRV 记录的相应字符串后,DsGetDcName 将调用 DnsQuery 调用来从 DNS 读取 Service Resource (SRV) 记录和“A”记录。登录到基于 Windows 的域的工作站查询 DNS 中通用形式的 SRV 记录:
_service._protocol.DnsDomainName
Active Directory 服务器通过 TCP 协议提供轻型目录访问协议 (LDAP) 服务。因此,客户端通过查询 DNS 中以下形式的记录来查找 LDAP 服务器:
_ldap._tcp.DnsDomainName
对于 NetBIOS 名称,Netlogon 使用 Microsoft Windows NT 4.0 版兼容定位器来执行域控制器发现(即使用传输特定的机制,如 WINS)。

在 Windows NT 4.0 及更早版本中,“发现”是在主域或受信任域中定位一个用于身份验证的域控制器的过程。
Netlogon 服务将一个数据报发送到注册该名称的计算机。对于 NetBIOS 域名,数据报是作为邮件槽消息实现的。对于 DNS 域名,数据报是作为 LDAP 用户数据报协议 (UDP) 搜索实现的。(UDP 是无连接数据报传输协议,它是 TCP/IP 协议套件的一部分。TCP 是一个面向连接的传输协议。)每个可用的域控制器都响应此数据报以表明它当前处于运行状态,并将该信息返回到 DsGetDcName。

请注意,UDP 允许一台计算机上的程序将数据报发送给另一台计算机上的程序。UDP 包括一个协议端口号,这使得发送方能够区分远程计算机上的多个目标(程序)。
每个可用的域控制器都响应此数据报以表明它当前处于运行状态,并将该信息返回到 DsGetDcName。Netlogon 服务缓存域控制器信息,以便后续请求不必重复此发现过程。缓存此信息有利于保证对同一域控制器使用的一致性和 Active Directory 视图的一致性。当一个客户端登录或加入网络时,它必须能够找到一个域控制器。该客户端向 DNS 发送一个“DNS 查找”查询以查找域控制器,并优先在该客户端自己的子网中查询。因此,客户端通过在 DNS 中查询以下形式的记录来查找域控制器:
_LDAP._TCP.dc._msdcs.domainname
客户端找到域控制器后,它将使用 LDAP 建立通信,以获得对 Active Directory 的访问权。作为此协商的一部分,域控制器根据客户端的 IP 子网来确定此客户端所在的站点。如果此客户端正在与一个不在最近(最佳)站点的域控制器通信,此域控制器将返回此客户端的站点名称。如果此客户端已经尝试在此站点中查找域控制器(例如,当客户端向 DNS 发送“DNS 查找”查询以在此客户端的子网内查找域控制器时),则此客户端将使用这个并非最佳的域控制器。否则,此客户端将使用此新的最佳站点名称重新执行特定于站点的 DNS 查找。域控制器使用一些目录服务信息来标识站点和子网。

在客户端找到一个域控制器后,此域控制器的条目将被缓存。如果此域控制器不在最佳站点中,此客户端将在 15 分钟后刷新缓存并丢弃缓存条目。然后它将尝试在它自己所在的站点内查找最佳的域控制器。

在客户端建立到域控制器的通信路径后,它就可以建立登录和身份验证凭证,而且,对于基于 Windows 的计算机,在必要时还可以建立一个安全通道。然后此客户端就可以在目录中执行常规查询和搜索信息了。

客户端建立一个到域控制器的 LDAP 连接以便登录。此登录过程使用“安全帐户管理器”。因为通信路径使用了 LDAP 接口,且此客户端是由一个域控制器进行身份验证的,所以此客户端帐户在得到验证后通过“安全帐户管理器”传递到目录服务代理,然后传递到数据库层,最后传递到“可扩展存储引擎”(ESE) 中的数据库。

解决域定位器进程问题

要解决域定位器进程问题,请按照下列步骤操作: 1.检查客户端和服务器上的事件查看器。事件日志可能包含表明出现问题的错误信息。要查看事件查看器,请单击开始,指向程序,指向管理工具,然后单击事件查看器。检查客户端和服务器上的系统日志。还请检查服务器上的目录服务日志和 DNS 服务器上的 DNS 日志。2.通过在命令提示符处使用“ipconfig /all”命令检查 IP 配置。3.使用 Ping 实用工具验证网络连接和名称解析。对 IP 地址和服务器名称执行 Ping 操作。您还可能要对域名执行 Ping 操作。4.使用 Netdiag 工具确定网络组件是否正常工作。要将详细输出发送到文本文件,请使用下面的命令:
netdiag /v >test.txt
检查日志文件,查找问题并查看任何隐含的组件。该文件还包含其他网络配置的详细情况。5.要修复较小的问题,请通过以下语法使用 Netdiag 工具:“netdiag /fix”。6.使用“nltest /dsgetdc:domainname”命令验证域控制器是否可以定位指定域。7.使用 NSLookup 工具验证 DNS 条目是否在 DNS 中正确注册。验证是否可以解析服务器主机记录和 GUID SRV 记录。

例如,要验证记录是否注册,请使用以下命令:
nslookup servername.childofrootdomain.rootdomain.com

nslookup guid._msdcs.rootdomain.com
8.如果这些命令均失败,则使用以下方法之一向 DNS 注册记录: 要强制主机记录注册,请键入 ipconfig /registerdns要强制域控制器服务注册,请停止然后启动 Netlogon 服务。9.要检测域控制器问题,请从命令提示符处运行 DCdiag 实用工具。该工具运行大量测试以验证域控制器运行是否正常。使用该命令将结果发送到文本文件:
dcdiag /v >dcdiag.txt
10.使用 Ldp.exe 工具连接并绑定到域控制器以验证相应 LDAP 的连接性。11.如果您怀疑某个特定的域控制器有问题,则打开 Netlogon 调试日志可能会很有用。通过键入以下命令使用 NLTest 实用工具:“nltest /dbflag:0x2000ffff”。这样信息将记录到 Debug 文件夹中的 Netlogon.log 文件。12.如果您仍然没有找出问题,请使用网络监视器监控客户端和域控制器之间的网络流量。有关如何安装网络监视器的信息,请参见下面的 Microsoft 知识库文章:
243270 (http://support.microsoft.com/kb/243270/) 如何在 Windows 2000 中安装网络监视器

原创粉丝点击