说明:前段时间公司两台域控出现了一些问题导致数据无法相互进行同步,DC之间也无法进行共享访问,网络用户无法通过计算机名映射的共享访问资源。几经折腾最后排除并解决了部分可能性的故障,但两台域控制器之间的用户与数据同步自己始终没能搞定。最终只有等到最初搭建域环境的同事回来,向他描述故障情况后,经过一番折腾最后我们才解决该故障。由此可见自己在这方面还有很多不足,以后还应该多多学习。另外,感觉在处理问题时,知识、工作经验的积累与胆大心细也非常重要..

正常情况下:
共两台域控(相互同步,当在一台域控出现故障的情况下,另一台域控仍然可以正常工作,域用户依然可以进行登陆验证。)

此处两台域控分别描述为DC01(windows 2003 Server)和DC02(Windows Server 2008 R2);

故障描述:
出现的问题是DC01(主域控)和DC02之间不能互相同步数据,甚至连两台DC之间也无法使用计算机名进行互访,但使用IP可以互相访问。最初排除的是DNS故障。由于未能同步,结果导致于部分域用户无法进行登陆验证。(提示:此工作站和主域间的信任关系失败。)甚至某些电脑无法加入域。需要在域服务器中将该计算机删除或将客户机改名才行。另外,直接关掉一台故障的域控制器用户也可以顺利加域,因此判断可能是DC之间互相不能同步,也不互相信任导致的。

注:下文主要记录解决同步问题的步骤,其它故障请自行排除。

原因分析:
可能的原因很多,如DNS服务未运行或解析存在问题问题,NetLogon服务未启动,Kerberos Key Distribution Center服务停止或文件复制服务未启动等等。可以先尝试手动进行同步操作试试,看会有什么错误提示。另外,建议使用Windows自带的事件查看器来查看具体的问题原因,并记录好事件代码。

手动同步操作如图:

AD域服务器|两台DC无法进行复制同步_第1张图片

注意查看事件管理器查看故障详细描述或记录事件ID。

AD域服务器|两台DC无法进行复制同步_第2张图片

在排除以上问题的情况下,在服务器上手动同步仍然不成功可以参考以下内容:

首先用命令行输入:dcdiag 检查一下有哪些测试未通过。

正常情况如图:

AD域服务器|两台DC无法进行复制同步_第3张图片

使用强制同步命令:repadmin /syncall /force

正常情况如下图:

AD域服务器|两台DC无法进行复制同步_第4张图片

发现我们的故障原因是同步时访问被拒绝,无法进行同步,最后成功同步时间为2014/01/22 08:00:00
原因是两台域之间有超过60天未进行同步,数据库中存在延迟对象,无法进行同步。解决办法就是删除延迟对象或进行松散同步。

(官方说明:Active Directory 复制发现下列分区中存在的对象已经从 本地域控制器(DC) Active Directory 数据库中删除。 在逻辑删除生存时间过期之前,部分直接或可传递的复制 伙伴没有复制该删除。已经从 Active Directory 分区 删除并垃圾收集的对象,如果仍然存在于同一域中其他 DC 的可写入分区中或林中其他域中的全局编录服务器的 只读分区中,被称作“延迟对象”。
此事件被记录到日志,因为源 DC 包含的延迟对象不存在于 本地 Active Directory 数据库上。此复制被阻止。
解决此问题的最佳方案是标记并删除林中的所有延迟对象。)

解决问题:

方案A:

首先使用命令检查哪些条目不能测试通过并排除故障:
dcdiag
在DC1上启用严格复制:
Repadmin /regkey +strict
详细信息请查看下面这篇文档:
http://technet.microsoft.com/zh-cn/library/cc835086
然后使用下面的命令来进行强制复制
repadmin /kcc
repadmin /syncall /force
查看事件日志是否相关的错误复制信息,如果有我们可以根据相关错误信息来删除这些过期信息。
在两台DC上分别执行如下命令:
repadmin /removelingeringobjects ServerName ServerGUID DirectoryPartition
详细信息请查看下面这篇文档:
Use Repadmin to remove lingering objects
http://technet.microsoft.com/en-us/library/cc785298(WS.10).aspx

方案B:(我们使用这种方案成功解决问题)

首先使用命令检查哪些条目不能测试通过并排除故障:
dcdiag
尝试使用下面的命令来进行强制复制:
repadmin /syncall /force
查看事件日志是否相关的错误复制信息,如果有我们可以根据相关错误信息来删除这些过期信息。
删除延迟对象,在两台DC上分别执行如下命令:
repadmin /removelingeringobjects ServerName ServerGUID DirectoryPartition
命令示例:
repadmin /removelingeringobjects DC1 aaaaaaaa-0000-0000-0000-aaaaaaaaaaaa
dc=dg,dc=feikk,dc=com /advisory_mode

repadmin /removelingeringobjects DC2 bbbbbbbb-1111-1111-1111-bbbbbbbbbbbb
dc=dg,dc=feikk,dc=com /advisory_mode

更改注册表为松散复制示例:
Value Path: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters
Value Name: Allow Replication With Divergent and Corrupt Partner(如没有此键值可以直接增加)
Value Type: REG_DWORD
Value Data: 1

Value Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
Value Name: Strict Replication Consistency
Value Type: REG_DWORD
Value Data: 0

点击“立即复制副本”后会迅速提示复制完成。复制成功后,请在注册表中做如下调整:
删除:
Value Path: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters

Value Name: Allow Replication With Divergent and Corrupt Partner
Value Type: REG_DWORD
Value Data: 1

将以下注册表设定值恢复成1:
Value Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
Value Name: Strict Replication Consistency
Value Type: REG_DWORD
Value Data: 1

现在再检查一下两台DC之间是否可以自动同步了。

如果依然存在问题,请参考以下文章可能会更加全面:
http://blog.sina.com.cn/s/blog_491d1f3701010j2j.html
http://adirectory.blog.com/2012/07/active-directory-replication-troubleshooting/