故障现象:

场景中若干台域控服务器的组策略文件复制出现问题。由于是真实环境截图,水印较多见谅。

使用dcdiag的时候会有提示NTFRS复制问题,要求管理员查看Q312862

事件Event ID 13562,此nTFRSMember对象 cn=域控计算机名,cn=domain system volume (sysvol share),cn=file replication service,cn=system,dc=contoso,dc=com的属性ServerReference有一个无效的值。

2012 R2 Active Directory NTFRS复制问题排错一例_第1张图片 

使用ntfrsutl ds进行ntfrs诊断会有如下现象:

warn: 某某DC lacks a settings reference

2012 R2 Active Directory NTFRS复制问题排错一例_第2张图片


问题分析:

目前的环境是从Windows 2003升级起来的,所以组策略文件的复制方式仍然沿用NTFRS,而非新版的DFSR(Distributed File System (DFS) Replication)。如果是基于原生的Windows Server 2008 及Windows Server 2008以上的Active Directory服务的话,会直接采用新版的DFSR复制机制。

目前的问题就出在这个基于NTFRS机制的活动目录,在排除掉域内所有的Windows Server 2003,并且将林功能和域功能级别都提升到Windows Server 2012 R2之后,NTFRS服务并没有完全替换至DFSR服务,相当一部分NTFRS服务的配置信息丢失,导致文件复制不正常,组策略数量在各个DC上均不统一,最多的一台有140多条,最少的一台只有8条…(惊了,这么久才发现)


问题解决:

首先确保NTFRS服务在这些域控上正常运行,net share命令可以查看到sysvol共享。

其次确保AD站点(NTDSSettings)里的DFS复制链接正确建立。

然后根据KB312862去检查ADSI里以下几个地方的属性,(KB链接:https://support.microsoft.com/zh-cn/kb/312862)

我就不截图了,直接写路径了。比方我现在是一台DC01.contoso.com出问题,其他域控以此类推照着改。


默认命名上下文,CN=NTFRS Subscriptions,cn=DC01,ou=domain controllers,dc=contoso,dc=com (每一台DC下都有这个NTFRS Subscriptions)有一项CN=Domain System Volume (SYSVOL Share) 对象。

如果没有该对象则手动建立,对象类型为nTFRSSubscriber。

如果有该对象,检查其属性fRSMemberReference,其值应为:CN=DC01,CN=Domain System Volume (SYSVOL Share),CN=File Replication Service,CN=System,DC=contoso,DC=com 。


默认命名上下文,CN=Domain System Volume (SYSVOL Share),CN=File Replication Service,CN=System,DC=contoso,DC=com 下面

应该有所有的DC对象,作为复制成员。

如果缺少有DC对象,则进行手动建立,对象类型为nTFRSMember

检查两项属性,还是以DC01为例子,右键单击CN=DC01对象(站点为默认的default first site,按照实际情况修改),属性:


frsComputerReference:CN=DC01,OU=Domain Controllers,DC=contoso,DC=com

serverReference:CN=NTDS Settings,CN=DC01,CN=Servers,CN=default-first-site-name,CN=Sites,CN=Configuration,DC=contoso,DC=com


如果在检查过程中发现父类对象丢失,比如CN=Domain System Volume (SYSVOL Share),CN=NTFRS Subscriptions FRS订户、这样的大类对象丢失,KB里都有重建方法,包括属性值配置。参照建立即可。

检查完上述东西之后,重启所有域控上的NTFRS服务

net stop ntfrs && net start ntfrs

然后再执行dcdiagntfrsutl ds进行检查。确认无报错之后可以先告一段落,等待域控之间相互开始进行NTFRS复制。


如果等不及复制,可以采用D4和D2大法强制复制。

以下是强制复制里比较粗暴的做法,参考winOS论坛adrien0901帖子的思路http://bbs.winos.cn/thread-36722-1-1.html,如果有把握可以效仿其中一二:

1、将所有的域控上的NTFRS服务停掉

2、做好备份,对比所有域控上SYSVOL文件夹内容,找到组策略最多的一台,或者全部覆盖复制到一台上面,保证这一台域控的组策略文件最全,在Sysvol文件夹的安全选项卡里启用

p_w_picpath

3、修改这台最全的域控的注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters\Backup/Restore\Process at Startup

BurFlags=D4

修改其他的域控的注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters\Backup/Restore\Process at Startup

BurFlags=D2

4、重启所有服务器上的ntfrs服务

然后打开几台域控的sysvol文件夹,对比数量,就会看到开始欢快的复制了。