用rendom改变域名后,过早的使用rendom /clean,导致部分客户从域中脱离,改名失败。
在网上的确很少关于rendom原理的文章,通过这个文章:http://technet.microsoft.com/en-us/library/cc738208.aspx
发现域改名主要通过两个属性实现: msDS-UpdateScript和msDS-DnsRootAlias。
前者存放一个属性用于域控的改名,在Rendom /clean后清除
后者将创建一个DNS别名(目标的名称),从而使netlogon服务可以在DNS创建目标域的SRV记录。
在upload步骤时,当前域名(原来的名称)称为realname,目标的域名称为alias。
当execute步骤时,当前域名和目标域名进行交换,原来的域名变成了alias。
直到clean步骤后,alias(交换过来的原来的域名)被清除,也即msDS-DnsRootAlias属性被清除。
这样客户机就无法通过dns找到DC,变成缓存登录,也无法完成域名更改了。
为了论证上述推断,搭建了一个测试环境,一个DC,两个Client,一个Server作为工作台。
1. 首先将两个Client关闭,按步执行到rendom /execute,打开client1,重启两次后成功改变客户机域名。
2. 然后执行rendom /clean,再打开client2,重启多次也无法改变客户机域名。问题重现!!
3. 通过rendom /clean前后比较,发现DNS上原来域名区域下的Srv记录全部被清除。
4. 利用adsiedit修改Domain Name FSMO(在cn=partitions,cn=configuration,dc=ForestRootDomain)下的msDS-DnsRootAlias属性,将原来的域名添加进去,
5. 重启netlogon服务,检查DNS上原来域名区域下的Srv记录,重新出现。
6. 再次重启client2,成功改名!
综上所述,得出如下的修复方案:
1. 重新创建原来的域名的DNS Zone(AD集成,仅安全更新)
2. 在Domain Name FSMO上添加msDS-DnsRootAlias属性
3. 同步DC
4. 重启netlogon,检查DNS Zone的SRV记录
5. 重启客户机