Windows活动目录应用的多主机复制模式的缺点之一就是变更复制很快,小错误可能在短时间内就变成大错误。域名系统(DNS)的区和记录可能损坏,包含错误的信息甚至消失不见了。
找到删除的DNS记录
DNS记录可以人工删除,某些操作可以导致这个结果,比如DC降级或其它对象清除,当然,DNS记录也可以程式地删除。记住,该记录和所有AD对象一样,可以在任意DC/DNS服务器上删除,并且这会复制到所有DC。追踪的方式之一是找到被删除的对象,然后查看元数据。所有DC上的内置LDP.exe工具对该操作都很有帮助。
另外,找出AD上的DNS记录要根据复制范围。这些位置如下。表1显示陈列DNS记录的LDP工具。记住,DNS记录只会显示这三个位置中的一个。
表1:AD中的复制范围位置
复制范围
AD位置
所有DC
Cn=MicrosoftDNS,cn=system,dc=wtec,dc=adapps,dc=hp,dc=com
域中的DNS服务器
Dc=DomainDNSZones,dc=wtec,dc=adapps,dc=hp,dc=com
林中的DNS服务器
Dc=ForestDNSZones,dc=wtec,dc=adapps,dc=hp,dc=com
当对象被删除时,它们被放在“删除对象”文件夹,如图1所示。但是删除的DNS对象存储在其它DNS记录存储的库中。例如,在图2中,我们看见存储在DC=DomainDNSZones库中的DNS记录,但是其中它也有“删除对象”库。
图1:删除对象
图2:DNS记录列表
记住:想要显示删除对象文件夹(默认情况下隐藏在LDP.exe中),做法如下:
在LDP.exe工具中,连接到一个DC并绑定管理员证书
进入选项-控制,在“预定义负载”区域选择 “还原删除对象”。
通过选择“树-(域名)-完成”刷新
展开DC=deletedObjects、dc=domainDNSzones…库,删除的DNS对象就显示了(图3)。在这种情况下,我们感兴趣的记录是“DC=_dcdiag_test_record…”。在这个例子中重建了很多次。注意,在图3中,在LDP(右边板)中显示的属性没有什么帮助。
该命令用以下格式:
- Reapadmin /showobjmeta DCName ObjectDN
所以在这个例子中,我们从LDP工具中得到了ObjectDN并这样插入它:
- C:\Users\olseng>repadmin /showobjmeta wtec-dc4 "dc=_dcdiag_test_record\0ADEL:ba38f888-9314-4ddf-852d-736db6ae181e,cn=deleted objects,dc=domaindnszones,dc=wtec,dc=adapps,dc=hp,dc=com" >dnsdelete.txt
图3:删除的DNS对象
我想要它直达一个文件来让它使用起来更简单。输出如图4所示。注意,红线圈起来的部分是属性。该属性在对象删除时建立。同时显示的还有初始DC的GUID和时间标记。GUID可以通过在DNS管理单元上的CNAME记录里查看或运行解析成DC名称。DC名称通常显示的不会是GUID。现在删除记录的时间、它何时在哪个DC上执行都很明显了。这对于解开记录消失之谜有所帮助。
图4:被删除DNS记录的输出