`
lovnet
  • 浏览: 6879472 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

如何使用DNSLint对Active Directory复制问题进行故障排除

阅读更多



Active Directory 是一个分布式数据库。它用于存储关于网络上的对象的信息,并允许用户访问这些信息。Active Directory 复制用于同步一个 Active Directory 林中不同域控制器上的分区副本。此复制过程允许用户从网络上的任何位置访问信息。如果此复制过程没有按设计的方式工作,以下依赖于来自 Active Directory 的信息的服务可能会发生中断:域登录和对网络资源(如文件和打印机)的访问。

Active Directory 复制依赖于域名系统 (DNS) 根据需要将名称解析为 IP 地址。Active Directory 域控制器通常会在它的 netlogon 服务启动时将各种 DNS 记录注册到它的已配置的 DNS 服务器。DNSLint 是一个运行在 Windows 2000 及更高版本的操作系统上的 Microsoft Windows 实用工具。它的用途之一是可以帮助您对 Active Directory 复制问题进行故障排除。具体来说,它可以帮助您判断两个问题:

所有对 Active Directory 目录林的根应该具有管理权的 DNS 服务器实际上是否都具有必要的 DNS 记录来成功地同步 Active Directory 林中的不同域控制器上的分区副本。DNSLint 会判断每一个管理 DNS 服务器中缺少哪些 DNS 记录。
特定的 Active Directory 域控制器是否能够解析所有必要的 DNS 记录来成功地同步 Active Directory 林中的不同域控制器上的分区副本。DNSLint 会判断哪些 DNS 记录不能被正在测试的域控制器解析。

如果一个 Active Directory 域控制器要用另一个域控制器进行复制,它会使用 DNS 去查找其他域控制器。具体过程如下:
1. 启动复制过程的域控制器 (DC1) 查询 Active Directory 来搜索它的已配置的复制伙伴。这些复制伙伴通常由知识一致性检查器 (KCC) 定义,但是也可以手动定义。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
244368 (http://support.microsoft.com/kb/244368/) 如何优化大型网络中的 Active Directory 复制
DC1 只知道它要用其进行复制的域控制器 (DC2) 的名称。它在 Active Directory 中发现了一个与目标域控制器的名称 (DC2) 相匹配的 GUID。请注意,林中的每一个域控制器都应该拥有自己唯一的 GUID。
2. DC1 知道 DC2 的 GUID 后,它必须找到 DC2 的 IP 地址,才能通过网络连接到它。为此,DC1 需要使用 DNS。DC1 向其本地配置的 DNS 服务器发送一个递归 DNS 查询,查询是否有 CNAME 记录。此记录的格式与以下格式始终匹配
guid._msdcs.root of Active Directory forest
其中 guid 是 DC1 在 Active Directory 中找到的 GUID,root of Active Directory forest 是 Active Directory 林的根。例如
91f9b084-4876-4b59-be17-59e74c340221._msdcs.reskit.com
其中 91f9b084-4876-4b59-be17-59e74c340221 是一个 GUID,reskit.com 是此 Active Directory 林的根。

DC1 的本地配置的 DNS 服务器应使用一个别名对查询 CNAME 的操作给出响应。此别名是 GUID 的另一个名称。例如,GUID 91f9b084-4876-4b59-be17-59e74c340221 被解析为 dc-02.reskit.com。
3. DC1 知道此 GUID 的别名后,它必须将此别名解析为一个 IP 地址,以便它能够通过网络连接到 DC2。DC1 向其本地配置的 DNS 服务器发送一个递归 DNS 查询,查询是否有与此别名相匹配的主机 (A) 记录。DNS 服务器应当用已经映射到此别名的 IP 地址(例如,169.254.66.7)作出响应。
4. DC1 知道 DC2 的 IP 地址后,它就能够通过网络连接到 DC2 并复制 Active Directory 数据。
如果此过程不成功,则不同域控制器之间的 Active Directory 复制也不会成功,因而不同的域控制器上的数据就可能会变得不一致。DNSLint 可以帮助确定此过程中使用的 DNS 记录是否就绪,以及是否能够被解析。
1. 要确定 Active Directory 林中的不同域控制器之间的 Active Directory 复制问题是不是 DNS 引起的,请运行以下命令:
dnslint /ad 169.254.32.1 /s 169.254.10.22
其中 /ad 参数用于指定一个 Active Directory 域控制器,此域控制器可用于查找 Active Directory 林中的所有域控制器的 GUID。默认情况下,一个林中的所有域控制器都应拥有此信息。当您使用 /ad 功能时,需要使用 /s 选项。/s 选项用于将对 _msdcs.forest root 区域具有管理权的 DNS 服务器的 IP 地址通知 DNSLint。

当您运行此命令时,DNSLint 首先联系在 /ad 开关 (169.254.32.1) 后指定的 Active Directory 域控制器。此命令导致 DNSLint 向此域控制器上的 Active Directory 查询 Active Directory 林中的所有 GUID。具体来说,它查询 Active Directory 中的以下位置
CN=NTDS Settings, CN=Sites,CN=Configuration,DC=reskit,DC=com
其中 DC=reskit,DC=com 是 Active Directory 林的根。

这种类型的轻型目录访问协议 (LDAP) 查询要求对 Active Directory 进行身份验证。一般来说,DNSLint 在运行此命令的用户的安全上下文中运行。在 LDAP 绑定操作期间,将使用此用户的凭据对 Active Directory 进行身份验证。如果凭据有效,并且用户可访问在 Active Directory 中的这些信息,则绑定成功,同时将在 Active Directory 中搜索 GUID。如果绑定不成功,则不执行此搜索,因而整个操作是不成功的。在这种情况下,DNSLint 将向用户返回一个错误。

如果从指定的域控制器返回了一个 GUID 列表,DNSLint 将向使用 /s 选项指定的 DNS 服务器发送一个 DNS 查询。在此步骤早先提供的示例中,DNS 查询被发送到了 169.254.10.22。如果此 DNS 服务器对 _msdcs.root of Active Directory forest 不具有管理权,则此操作最终可能找不到早先发现的 GUID 的任何 DNS 记录。/s 选项必须指定一个对 _msdcs.root of Active Directory forest 子域具有管理权的 DNS 服务器的 IP 地址。

在某些环境中(例如,在那些不接受动态更新的 DNS 服务器承载着根域的环境中),_msdcs 区域已经被委派到一个对 Active Directory 林的根不具有管理权的 DNS 服务器。DNSLint 首先检查是否有此委派,然后再进行下一个 DNS 查询。此步骤操作有助于避免向不应测试的 DNS 服务器发送 DNS 查询。

在处理 DNS 查询时,DNSLint 尝试去发现其他对 Active Directory 林的根具有管理权的 DNS 服务器。在发现对 Active Directory 林的根具有管理权的 DNS 服务器后,DNSLint 将向发现的一个或多个 DNS 服务器查询自己在 Active Directory 中发现的 CNAME 记录。当 DNSLint 将每一个 CNAME 记录解析为一个别名时,它也会尝试解析每个别名的粘连 (A) 记录。如本文前面所述,Active Directory 复制需要这些 DNS 记录。

然后 DNSLint 创建一个 HTML 格式的报告(也可以选择创建一个文本格式的报告)。此报告中包括在 Active Directory 中发现的所有 GUID、所发现的对 Active Directory 林的根具有管理权的 DNS 服务器以及向这些服务器发出的所有 CNAME 记录和粘连 (A) 记录查询的结果。它会报告出在每一个 DNS 服务器上缺少哪些 CNAME 记录和粘连 (A) 记录。此报告可用于解决可能导致 Active Directory 复制问题的任何 DNS 问题,如缺少 DNS 记录或 DNS 记录不正确。
2. 要确定一个特定的 Active Directory 域控制器是否能够解析在一个 Active Directory 林下的不同域控制器之间成功同步分区副本时所需的所有 DNS 记录,请在所测试的域控制器上运行以下命令:
dnslint /ad /s localhost
因为 /ad 选项后没有指定任何 IP 地址,所以将使用 127.0.0.1。这意味着域控制器将在自身中查询 GUID 记录的列表。如果您愿意,您也可以指定一个可选的域控制器 LDAP 服务器。如果您在 /s 选项后指定 localhost,这会通知 DNSLint 使用正在测试的域控制器上配置的一个或多个 DNS 服务器来解析用于 Active Directory 复制的 CNAME 记录和粘连 (A) 记录。这一指定将向域控制器的本地配置的一个或多个 DNS 服务器发送递归 DNS 查询,以确定此域控制器是否能够解析所需的记录。这并不意味着需要检查本地域控制器的所有 DNS 服务器上是否有这些记录。此域控制器的 DNS 服务器列表是根据它的默认行为来管理的。这意味着只有在列表中的第一个 DNS 服务器没有响应时,才会使用第二个 DNS 服务器。此测试只确定一个域控制器是否能够解析用于 Active Directory 复制的 DNS 记录。不测试任何特定的 DNS 服务器。

DNSLint 所生成的报告可用于解决可能导致 Active Directory 复制问题的任何 DNS 问题,如缺少 DNS 记录或 DNS 记录不正确。

Microsoft 下载中心下载:
下载立即下载 dnslint.v204.exe 软件包。 (http://download.microsoft.com/download/2/7/2/27252452-e530-4455-846a-dd68fc020e16/dnslint.v204.exe)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics