域控制器在 Windows 中的定位方式

本文介绍 Windows 用于在基于 Windows 的域中查找域控制器的机制。

注意

本文适用于 Windows 2000。 对 Windows 2000 的支持将于 2010 年 7 月 13 日结束。 Windows 2000 支持终止解决方案中心是从 Windows 2000 规划迁移策略的起点。 有关详细信息,请参阅 Microsoft 支持部门 生命周期策略

适用于:Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
原始 KB 编号: 247811

摘要

本文详细介绍了按其 DNS 样式名称及其平面样式 (NetBIOS) 名称查找域的过程。 平面样式名称用于向后兼容。 在所有其他情况下,DNS 样式的名称应用作策略问题。 本文还介绍了域控制器位置过程的故障排除。

定位符如何查找域控制器

此序列描述定位符如何查找域控制器:

  • 在客户端 (定位域控制器) 的计算机上,定位器作为远程过程调用启动, (RPC) 本地 Netlogon 服务。 定位符 DsGetDcName 应用程序编程接口 (API) 调用由 Netlogon 服务实现。

  • 客户端收集选择域控制器所需的信息。 然后,它使用 DsGetDcName 调用将信息传递给 Netlogon 服务。

  • 客户端上的 Netlogon 服务使用收集的信息通过以下两种方式之一查找指定域的域控制器:

    • 对于 DNS 名称,Netlogon 使用 IP/DNS 兼容的定位符查询 DNS。 也就是说,DsGetDcName 调用 DnsQuery 调用,在将域名追加到指定 SRV 记录的相应字符串后,从 DNS 读取服务资源 (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 域名,数据报实现为 mailslot 消息。 对于 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 实用工具验证网络连接和名称解析。 Ping IP 地址和服务器名称。 你可能还需要 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。 然后,该信息将记录在 Netlogon.log 文件的“调试”文件夹中。

  12. 如果仍未确定问题,请使用网络监视器监视客户端和域控制器之间的网络流量。

References

有关详细信息,请参阅 Windows 资源工具包第 10 章“Active Directory 诊断、故障排除和恢复”。