首页 > 代码库 > Windows活动目录系列---配置和监视AD域复制(1)

Windows活动目录系列---配置和监视AD域复制(1)

AD域的站点链接是什么?

两个站点之间要交换复制数据,必须通过站点链接把他们连接起来。站点链接是一个逻辑的路径,它被KCC或ISTG用来建立站点间的复制。当你创建了另一个站点,你必须至少选择一个站点链接,将新的站点和现有的一个站点相连。如果没有站点链接,KCC是无法让不同站点中的计算机互相连通的,站点之间也无法进行复制。

站点链接有一个很重要的概念,它代表用于复制的一条可用路径。一个单独的站点链接是无法控制被使用的网络路由的,当你创建了一个站点链接并且将一个站点加入其中,就等于你告诉AD域可以在站点链接关联的站点之间进行复制。ISTG会创建连接对象,然后这些对象会确定实际的复制路径,虽然ISTG建立的复制拓扑能够进行高效的AD域复制,但是对于你的网络拓扑来说这样的复制拓扑不一定是最佳的。

为了更好的理解站点链接,可以参考这个案例,当你创建了一个林,会自动生成一个默认站点链接对象DEFAULTIPSITELINK,每个新增加的站点都会默认被加入到DEFAULTIPSITELINK这个站点链接。这个默认的站点链接和任何新建的站点链接默认开销值是100,复制频率是180分钟,现在公司在总部有一个数据中心HQ,并且有三个分支机构A、B、C,三个分支机构与总部通过专线连接,现在每个分支机构都建立一个站点,每个分支站点和总部都关联到DEFAULTIPSITELINK站点链接对象。由于四个站点都在同一个站点链接中,AD域可以在这四个站点中相互复制,比如A可以从B复制变更数据,B可以从C复制变更数据,然后C又可以从HQ复制变更数据,接下来HQ又从A复制变更数据。在这些复制路径中,在网络流量中的复制流量,从一个分支机构穿过总部然后到另一个分支机构,单一的站点链接是无法创建中心发散形状的复制拓扑的,即使你的网络拓扑是中心发散形状。

想要将你的网络拓扑和AD复制结合起来,你必须创建特定的站点链接,这样就可以通过手动建立站点链接来对应你需要的复制拓扑。针对之前的案例,你需要建立三个站点链接:1.HQ-A 2.HQ-B 3.HQ-C.

创建完站点链接之后,ISTG将会使用这个拓扑去建立一个站点之间的复制拓扑,这个复制拓扑会连接到所有站点,然后自动创建连接对象去配置复制路径,最佳实践推荐建立正确的站点拓扑,尽量避免手动的去创建连接对象。


什么是站点链接的桥接?

在你创建了站点链接并且ISTG生成了链接对象之后,差不多就完成了所需的工作,在大多数环境中,特别是网络拓扑比较简单的时候,站点链接就足够管理站点间的复制,但是在复杂的网络中,你可以配置一些额外的组件和复制属性。

自动站点链接桥接

所有的站点链接默认是被桥接在一起的,比如A和HQ站点是链接在一起的,然后HQ和B站点是链接在一起的,那么A和B也是链接在一起的,但是A和B之间是A到HQ再到B加起来的链路开销。从理论上来说,如果HQ的DC不可用了,ISTG可以在A和B的DC之间建立一个直连的连接对象,这需要在中心散发的网络拓扑中才可以实现。

你可以在"Intersite Transports"容器中打开IP传输的属性,清除掉"为所有站点链接搭桥"的勾选,这样就可以禁用掉站点链接的自动桥接。


站点链接桥:

一个站点链接桥可以连接到两个或两个以上的站点链接,从某种意义上说就是创建了一条传递链路。站点链接桥只有在你清除了传输协议中的"为所有站点链接搭桥"的时候才会使用到。因为站点链接自动搭桥是默认启用的,所以实际上站点链接桥是不需要使用到的,但是你可以针对主要的一些站点使用自动站点链接搭桥,也可以对一些开销不大的站点手动配置站点链接桥。例如,假设你有多个站点,A和B与总部HQ直接相连,默认开销值时100,HQ有一个备份的数据中心HQ-HA,它与HQ,A,B这三个站点都使用开销100的站点链接,如果HQ-HA站点的所有DC都不可用了,但你希望A站点仍然可以到达B站点,你可以将A和B的站点链接桥接起来以便A和B之间能够保持畅通,因此你需要在A和B之间配置一个站点链接桥,这条链接大于A和B到HQ-HA的站点链接的值为100的传递开销,但是小于不建立站点链接桥而直接从A到HQ-HA再到B的传递开销,如果不建立站点链接桥,从A到B的链接开销是A到HQ-HA的100开销加上HQ-HA到B的100开销,总共的开销为200,但是在A到HQ-HA和HQ-HA到B的两个站点链接之间建立了站点链接桥的话,从A到B的开销就会是一个中间值150。站点链接桥的目的,是为了让两个或多个无法直接连接的站点通过站点链接桥进行连接,KCC会参照站点链接桥创建对应的连接对象,调整AD域的复制拓扑。


通用组成员身份缓存:

在你配置AD域复制的时候可能需要考虑一个问题,是否需要把所有的DC都设置为GC。因为在用户登录域的时候需要用到GC服务器,在每个站点中都部署一台GC能够改善你的用户体验。但是如果你在一个站点部署了GC,那么可能会产生额外的复制流量,在站点之间使用有限的网络带宽的情况下,从林内的其他域中复制大量的对象时会出现一些网络上的问题,为了避免这种问题,可以在每个站点部署一台2008级别以上的DC,并将这个站点的"通用组成员身份缓存"启用。

通用组成员身份缓存的工作原理:

站点中的一台DC启用了通用组成员身份缓存,当一个用户第一次尝试登陆后,DC会将通用组的信息存储在本地,这台DC会从另一个站点中的GC服务器上获取该用户的通用组成员身份信息,然后将这些信息缓存并周期性的刷新这些信息,当该用户下次再尝试登陆的时候,DC会从本地缓存中获取该用户的通用组成员身份信息,而不需要链接到另一个站点中的GC获取信息。缓存在DC中的通用组成员身份信息默认8小时刷新一次,在刷新的缓存信息的时候,DC会向指定的GC发送一个通用组成员身份确认的请求。你可以在NTDS Site Setting属性中的站点设置里面启用"通用组成员身份缓存"。


通用组成员身份缓存能够在登录AD域的时候不需要连接到一台GC去做验证,所以它令用户在一个没有GC的远程站点登录域的验证时间大大减少。不过我们也需要考虑启用通用组成员身份缓存所带来的安全性风险,因为当管理员将某个用户从通用组中移除了之后,但是通用组成员身份缓存的刷新间隔是8个小时(甚至如果WAN网无法通信了,DC无法从GC获得最新的信息去刷新缓存),它也不会根据复制操作来刷新缓存信息,如果用户在这8个小时之内进行访问,那么就会给资源带来风险。此外这种缓存方法有些不可预期的问题,当用户第一次在远程站点登录时,恰好此时GC也处于不可用的状态,这时候的用户的验证过程与之前的登录验证过程又是不同的,它无法从GC中获取用户的验证信息。由于这些问题的存在,通用组成员身份缓存是不推荐使用的,微软推荐将所有的DC都配置成GC。


站点间复制的配置选项

当你创建了一个站点链接时,你可以配置几个选项去帮助管理站点之间的复制,这些选项包括:

  1. 站点链接开销。当站点的复制流量有多条路由的时候,站点链接开销用于管理复制流量的流向,开销越低的站点链接优先权越高。你可以在特定的站点链接上配置开销值来满足某些要求或条件,比如使用某个站点链接会更快更可靠,那么我们就可以将这个链接的开销值设低一些,让这条链路优先使用。我们通常将慢速链接的开销值设的较高,将快速链接的开销值设的较低,站点链接的默认开销是100.

  2. 复制频率。站点之间的复制只能通过轮询的方式,复制伙伴默认会每3小时去轮询它的上游复制伙伴,去确认是否有变更数据。对一些企业来说,这个时间间隔可能太长了,他们希望目录的变更数据能够更快速的复制,我们可以在站点链接对象的属性中修改复制频率来满足这个要求,轮询的最小时间间隔是15分钟。

  3. 复制计划。复制计划默认是全天24小时执行的,但是你可以将复制限制在某特定时间执行,这个需要修改站点链接属性中的复制计划。


RODC只有针对缓存的用户和计算机凭证的复制要求,它们使用密码复制策略去确定哪个用户或者计算机凭证可能被缓存在服务器上,如果有一条密码策略允许一个RODC缓存用户或者计算机的凭证,这个RODC就可以进行验证和服务票据操作。对于这个问题,你可以建立一个允许列表,列表中包含用户和计算机凭证,如果某个凭证未缓存在RODC上,那么RODC会引用一个可写DC去执行验证和服务票据操作,如果此站点的计算机账号未验证,并且WAN链路也无法连通,那么没有用户可以进行验证,因为用户仅能在客户端计算机被验证后,才能在域中进行验证。

想要访问密码复制策略,在AD用户和计算机控制台的Domain Controllers容器中打开RODC的属性,然后点击"密码复制策略"标签,RODC的密码复制策略是由RODC计算机账号的两个多值属性决定的,这两个属性被称为"允许列表"和"拒绝列表"。如果用户,计算机或服务账号在允许列表中,在用户登录之后凭证会缓存在RODC上,你可以在允许列表中添加群组,群组中的用户或计算机成员的凭证都可以缓存在RODC上。当有账号在允许列表和拒绝列表同时出现时,拒绝列表拥有优先权,该账号的凭证不会在RODC上缓存。

为了帮助管理密码复制策略,AD域的Users容器中会建立两个域本地安全性群组,一个是Allowed RODC Password Replication Group,这个组的成员可以将密码复制到域中所有的RODC,这个组默认是没有组成员的,因此一个新的RODC是不会缓存任何凭证的,如果你想将某些账号的凭证缓存到域中所有的RODC,那么只需要将这些账号加入到这个群组即可。另一个群组是Denied RODC Password Replication Group,此群组中的成员不允许将密码复制到域中所有的RODC,这个组默认会将一些安全敏感账号加入其中,包括Domain Admins,Enterprise Admins,Schema Admins等。


监视和管理复制时可使用的工具:

在你部署好复制配置后,你需要监视,优化和故障诊断复制的运行状况,有两个非常有用的工具可以帮助报告和分析复制的运行状况,一个是复制诊断工具Repadmin.exe,另一个是目录服务器诊断工具Dcdiag.exe。

复制诊断工具Repadmin.exe:

Repadmin.exe是一个命令行工具,可用来报告每个DC的复制状态,Repadmin.exe生成的信息能够帮助发现林中潜在的复制问题,你可以查看详细到特定对象和属性的复制元数据级别的信息,帮助你发现在什么时间修改了AD域的什么位置导致了复制问题,你甚至可以使用Repadmin.exe建立一个复制拓扑,然后强制在DC之间进行复制。

Repadmin.exe有很多中命令去执行特定的任务,具体的命令参数我们可以通过"repadmin /?:参数"来查看某个参数所能实现的功能。我们可以通过Repadmin.exe执行下面的一些复制监视任务:

  1. 显示指定DC的复制伙伴。我们可以通过命令repadmin /showrepl DCName .默认情况Repadmin只会显示入站的连接,如果加了参数/repsto则可以同时显示出站的连接,例如repadmin /showrepl dc01 /repsto。

  2. 显示指定DC的链接对象。repadmin /showconn DCName 此命令用于显示指定DC的链接对象,例如repadmin /showconn dc01。

  3. 显示关于对象的元数据,包括对象的属性和复制。你可以通过在不同的DC上检查同一个对象,根据它们在各自DC上已有的和没有的属性,来进一步了解复制的情况。repadmin /showobjmeta DCName ObjectDN  例如repadmin /showobjmeta DC01 "cn=james,cn=users,dc=contoso,dc=com",你可以在另外一台DC02上也运行这个命令,然后将两边显示的信息进行对比查看复制的数据有哪些相同和不同的地方。这个命令的DC名可以用*代替,这表示从所有的DC上抓取此对象的数据。

Repadmin.exe也可以用来修改你的复制基础架构,主要有下面几种命令:

  1. 发起KCC计算。使用repadmin /kcc去强制KCC对服务器的入站复制拓扑重新计算。

  2. 在两个复制伙伴之间进行强制复制。你可以通过repadmin.exe在源DC和目标DC之间强制某个分区的复制,命令格式 repadmin /replicate 目标DC名 源DC名 分区名称, 例如repadmin /replicate DC01 DC02 "cn=configuration,dc=adatum,dc=com",这条命令会将DC02上的配置分区复制到DC01上。

  3. 将某个DC与所有的复制伙伴同步。使用命令repadmin /syncall DC /A /e将DC与所有复制伙伴同步,包括非本站点的DC。比如repadmin /syncall DC01 /A /e,表示将DC01上的所有目录分区与所有复制伙伴同步,包括跨站点的DC,其中/A表示所有目录分区,如果不用这个参数就只会同步配置分区,/e表示跨站点同步,没有这个参数就只会同步本站点的复制伙伴。


目录服务诊断工具:

Dcdiag.exe是一个目录服务诊断工具,它被用来对AD复制和安全性的整体健康状态进行测试和报告。如果命令不带参数只运行dcdiag.exe,那么会执行一个摘要性的测试并报告测试结果,而相反如果带了参数/c,执行命令dcdiag /c则会执行几乎所有的目录诊断测试,这些测试的报告可以导出到文件中查看,文件可以有多种类型,比如txt,xml等。

你也可以指定测试的类型,这需要使用命令dcdiag /test:测试名,与复制直接相关的一些参数如下:

  1. FrsEvent.报告所有FRS复制的操作错误。

  2. DFSREvent.报告所有DFS复制系统的操作错误。

  3. Intersite.检查阻止或延时站点复制的错误信息。

  4. KccEvent.标识出KCC的错误信息。

  5. Replication.检查DC直接的实时复制。

  6. Topology.检查复制拓扑是否完全与所有DC连接。

  7. VerifyReplicas。验证所有拥有副本的DC上所有应用程序目录分区是否已完全实例化


AD复制的几条Powershell命令:

Get-ADReplicationConnection 此命令可以根据筛选条件获取指定AD复制的链接或一组AD复制连接对象

Get-ADReplicationFailure 此命令显示AD复制错误的描述

Get-ADReplicationPartnerMetadata 此命令用于显示目标DC复制伙伴的复制元数据

Get-ADReplicationSite 根据筛选条件获取指定的AD复制站点或一组复制站点对象

Get-ADReplicationSiteLink 根据筛选条件获取指定的AD站点链接或一组站点链接

Get-ADReplicationSiteLinkBridge根据筛选条件获取指定的AD站点链接桥或一组站点链接桥

Get-ADReplicationSubet根据筛选条件获取指定的AD子网或一组AD子网

本文出自 “乾涸的海綿” 博客,请务必保留此出处http://thefallenheaven.blog.51cto.com/450907/1588735

Windows活动目录系列---配置和监视AD域复制(1)