Active Directory 故障排除经验谈


 
 
 
 
首选要安装windows server 2003安装光盘里面的SUPPORT\TOOLS文件夹里面的SUPTOOLS.MSI     安装完成之后  通过开始--程序--Windows Support Tools--按Command Prompt     用netdiag工具进行网络诊断 在使用这个工具的时候通常加一个v参数 开启详细输出的模式 如果你觉得这个模式输出的信息还不够详细的话 我建议你加debug参数    我在Command Prompt里面输入netdiag /debug >netdiag080408.txt按回车键   080408是表示诊断的时间   在Command Prompt里面输入notepad netdiag080408.txt 按回车键  表示用记事本来打开刚才生成的文件    通常通过netdiag分析之后 会发现5%的故障是由于用户的输入错误地配置网络所造成的
通过使用netdom命令进行网络测试   netdom命令主要的作用是对客户端加入域以及信任关系的管理  在Command Prompt里面输入netdom query按回车键   可以看到域里面的工作站  服务器 域控制器  OU(组织单元)  主域控制器角色  操作主机  还有信任关系的查询 这是最快捷的方法   比如我希望知道在这个域里面有那几台计算机是域控制器  就输入netdom query dc 按回车键后  就可以看到当前London和Florence这两二台计算机是域控制器
在Command Prompt里面输入netdom query fsmo按回车键来查看操作主机角色   可以看到5种操作主机角色全部位于London这台计算机上   同时看到域名叫做yejunsheng.com     使用dcdiag这个命令能够非常全面地测试  如果你不加任何参数 它测试的是当前你所在的这台计算机   如果当前这台计算机已经是域控制器  我建议你加/v参数作一个详略地测试  大概1/3的测试默认是不开起的 你可以通过加/c参数开起所有的测试  如果你关注的不只是这一台域控制器   还想测试所有站点或者整个企业里面所有的域控制器的话 你还可以加/a参数  或者加/e参数 这个是测试整个企业范围内  也就是测试整个活动目录森林内 所有域控制器的诊断分析   我在Command Prompt里面输入dcdiag /v /c >dcdiag080408.txt按回车键  把它转存  然后输入notepad dcdiag080408.txt按回车键 用记事本来打开刚才生成的文件
通过开始--程序--管理工具--按DNS    展开正向查找区域可以看到_msdcs.yejunsheng.com这个区域被作为一个单独的区域创建  也许你在安装域控制器之前 DNS服务已经做过配置了 或者某种原因不期望由活动目录的安装向导来帮你安装DNS服务器 你要做的一件事情就是事先一定要正确地创建相关的DNS记录
我现在来模拟一下故障  我把那些区域的记录都删除掉  或者说你安装完成域控制器后根本都没有这些记录 这都是可能的   造成DNS没有正常注册的原因是因为你没有正确地配置 这个配置指的是两面方面  第一个是在域控制器上  在它的TCP/IP地址的DNS服务器地址里面没有正确地填写  第二个指的是你的DNS服务器本身有一些小问题 比如现在我们已经把一些必需存在的区域删除掉了 那么这是一个没有正确配置的DNS服务器     为了诊断这个问题就用nslookup这个工具    在命令提示符下输入nslookup按回车键   如果你看到它的Default Server(默认服务器)不是活动目录的DNS服务器 (现在我的活动目录的DNS服务器的名称是London.yejunsheng.com) 而是指向某某电信或者是互联网的DNS服务器  那么这个域控制器一定会有问题   因为很明显无论在域内其他服务器的定位  比如要寻找复制伙伴或者说是进行某些记录的交流一定要找DNS 实际上如果你的管理员有报告说计算机启动的时候特别慢 无论是域控制器 工作站 成员服务器 长时间会卡正在准备网络连接这个阶段 90%都是DNS出了问题  我在命令提示符下输入_ldap.tcp.msdcs.yejunsheng.com按回车键   你可以看到我进行这样的查询 是为了找到yejunsheng.com这个域下面的相应的ldap服务器 也就是域控制器  它告诉我这个域控制器的记录没有找到  这种情况下客户端通过DNS肯定是找不到域控制器了
在命令提示符里面输入net stop netlogon & net start netlogon按回车键来重新启动netlogon服务  在重新启动netlogon服务的过程中用户是没有办法正常地去登录请求的  除非你有多台域控制器  然后在DNS里面按刷新按钮来刷新一下区域  或者按F5键来刷新区域   你可以看到我刚才删除的那些记录又被修复回来了   这是一种方法 当记录丢失的时候可以通过重新启动netlogon服务 但是netlogon服务实际上在域控制器每次关机再重启的过程中也会被重启  如果你已经经过数次关机重启记录还是缺失 那问题不是那么简单就可以解决了  你要检查一下是不是你的区域创建有问题  比如说根本没有任何区域
当你的区域删除掉后  你重新启动netlogon服务是不会帮你创建区域的  对着正向查找区域右键--选择新建区域  接着下一步 可以看到里面有三个选项   由于它现在已经是一台域控制器了 那么你可以设置为主要区域  并且作活动目录集成也就是保存在活动目录当中 我建议你  如果你的DNS服务器跟域控制器在同一台计算机上  那么就把在Active Directory中存储区(只有DNS服务器是域控制器时才可用)沟上    活动目录集成的区域是比较好的选择  因为它更加安全  而且在复制管理上是自动进行的    接着下一步
按照默认的选项吧(至Active Directory 域 yejunsheng.com 中的所有域控制器    接着下一步  注意:在区域名称里面一定要输入和你的活动目录的域名完全一致才行   接着下一步 
注意:这一项一定要选择允许动态更新  如果你选择活动目录集成的 你就可以选择安全的动态更新  如果你选择的是非活动目录集成的 你必需选择允许非安全和安全动态更新  这一些安全性会差一些   接着下一步   按完成就ok了 
可以对msdcs区域作为独立区域创建  我现在对着msdcs右键--选择删除   你会看到无法删除DNS域  这是由于可能我刚才在删除区域记录的时候两台域控制器之间复制还没有同步所造成的  你等一段时间后就可以删除掉了  原因就在有多台域控制器而且多台域控制器上的数据不一致所所造成的 删除掉msdcs这一项很重要 特别是有多域环境的时候  一个活动目录的森林里面有一个以上的域 那么你一定要做的一件事情就是把msdcs这个区域作为一个独立的区域来创建 
首选对着正向查找区域右键--选择新建区域--接着下一步--选择主要区域--接着下一步 选择复制的时候你要选择至 Active Directory 林 yejunsheng.com 中的所有DNS服务器   由于活动目录的森林是用根域的域名来命名的 所以说我们现在可以看到这个活动目录森林yejunsheng.com它并不是指yejunsheng.com这个域 而是指的整个森林中所有的DNS服务器  当然这个DNS服务器本身必需是安装在域控制器上才行   接着下一步    区域名称叫输入_msdcsyejunsheng.com吧   接着下一步   注意:必需要允许动态更新 接着下一步  按完成就ok了  为什么要把它分开创建呢?因为在msdcs里面除了找到域控制器外  还可以找到全局编录服务器 如果说你没有把它作为独立的区域创建并且复制到森林其他的域里面 那么其他域里面的DNS记录可能是不包含这些记录的  换句话说可能能够找到本域的域控制器 但是没有办法找到森林的全局编录服务器  所以说这个很重要
当把msdcs作为独立区域创建之后  还需要做的一件事就是新建委派    对着域名(yejunsheng.com)右键--选择新建委派  接着下一步 委派的域名就输入_msdcs 实际上你是希望告诉其他的查询者 _msdcs是由谁来负责的  接着下一步  按添加  因为我这台域控制器的FQDN名称是london.yejunsheng.com 所以我就在服务器完全合格的域名里面输入london.yejunsheng.com  因为这台域控制器的IP地址为192.168.1.2   所以我在IP地址里面输入192.168.1.2按添加   按确定  接着下一步  按完成就ok了   
我现在把_msdcs.yejunsheng.com这个区域里面的那些项全都删除掉  然后在命令提示符里面输入nltest.exe /dsregdns按回车键 你再到DNS服务器里面按一下F5键就可以看到刚才在_msdcs.yejunsheng.com这个区域里面的那些项了  这个命令要比netlogon服务来得快而且最主要的是它不会对用户造成影响
通过开始--程序--管理工具--按Active Directory 站点和服务   在站点内系统会自动生成域控制器之间的复制拓朴结构 通常情况下会形成一个环形的结构 也就是说在域控制器之间会有一个复制通道生成 你可以按NTDS Settings  然后在里面对着计算机右键--选择立即复制副本   比如我现在对着FLORENCE这台计算机右键--选择立即复制副本   看到了吗?Active Directory 已复制了连接 这就是一个强制地复制了
通过开始--运行--输入replmon按确定来打开Active Directory Replication Monitor   对着Monitored Servers右键--按Add Monitored Server
这一步就选择第二项(Search the directory for the server to add)   接着按Next
由于我有三台域控制器   我现把三台都添加在里面     每添加一台按Finish就可以了
通过查看图标LONDON那台域控制器有一个蓝色小的地球在右上角 表明它是一台全局编录服务器   首选要对每台域控制器右键--选择Check Replication Topology  表示检查拓朴结构和生成的过程   在做这个操作之前是因为域控制器之间有一些复制通道没有建立起来 做这个操作就是强制地建立并且完成复制通道
这个时候就对着LONDON这台全局编录服务器右键--选择Show Replication Topologies(显示复制拓朴结构)
这个时候按View--再按Connections Objects Only后就可以看到那三台域控制器了
如果你想看站点内的连接是怎么样的  就对着每一台域控制器右键--选择Show Intra-Site Connections就ok了  现在可以看到几条连接线了  表明通过这几条连接线这三台域控制器之间会有一个复制的连接 当你有多台域控制器的时候 这个拓朴结构图非常重要 你可以根据这个拓朴结构图发现一些问题   比如现在有三台域控制器   为什么第一台到第三台就很慢  但是从第一台到第二台就很快  如果你有多个站点的话 它也可以显示出来在站点和站点之间到底是那些域控制器在做这样操作
对着域控制器右键--选择Properties可以看到域控制器的属性 来查看一些内容  比如可以看到连接这三台域控制器的复制连接
如果说在站点和服务当中立即复制失败 你可以把复制的内容缩小到某一部份数据分区的数据上来 展开LONDON--DC=yejunsheng.dc=com  对着shanghai \FLORENCE右键--选择第一项(Synchronize with this Replication Partner)就ok了 完成之后你可以把它生成报告或者显示其他信息  
在命令提示符里面输入dsastat -s;London;Florence按回车键来比对这两台域控制器的活动目录数据库的状态是不是一样的
通过开始--运行输入%systemroot%\system32\config按确定  找到netlogon.dns这个文件然后用记事本来打开它  你可以看到里面的内容  这些就是它应该写到DNS里面的记录 如果你刷新了  重启netlogon服务 还没有完整的话  你可以把这些记录复制到相应的DNS区域文件里面
我现在把netlogon.dns这个文件里面的内容全部选定然后右键--选择复制
对着域名(yejunsheng.com)右键--选择属性--按更改--把在Active Directory 中存储区域的沟去掉 变成主要区域 不能放在活动目录里面 因为放在活动目录里面我们就没有办法去粘贴进去了   按确定就可以了
通过开始--运行--输入%systemroot%\system32按确定   找到yejunsheng.com.dns这个文件然后用记事本打开它   对着里面右键--选择粘贴   把刚才复制的内容全部粘贴到里面就ok了   在做这个操作的时候我建议你最好要先把DNS服务器停止掉然后再来做粘贴  完成之后再重启DNS服务  这样的话域控制器的记录肯定就已经完整添加在里面了 
当你安装gpmc.msi这个软件后   你可以通过开始--运行--输入gpmc.msc按确定   对着组策略结果右键--选择组策略结果向导 我就选择这台计算机吧  接着下一步
这一步就选择当前用户(YEJUNSHENG\Administrator)吧  接着下一步   按完成就ok了
通过组策略结果可以知道所有的内容 它会把所有影响这台计算机以及影响这个用户的策略对象做一个结合  最后给出的是一个比较完整的结果  通过这个报告你可以看到有多少个策略影响到用户影响到计算机以及最终作用的结果是什么  特别是有些策略是相互冲突的时候 你可以查到里面相互冲突的内容
通过开始--运行--输入regedit按确定来打开注册表编辑器     在左下角的那个路径下找到ProductOptions这个文件  双击打开ProductType这个子键 当前这个数值是LanmanNT表明它是一台域控制器 如果你想把域控制器的功能停止掉的话    就把数值数据改成ServerNT 按确定就ok了  注意:S要大写  NT也要大写   如果不正确输入的话  这个修改是不生效的
打开服务然后双击Intersite Messaging(站点间消息) 这个服务只是在域控制器上是有效的  如果你通过修改注册表的方法来删除域功能的话 这个服务不会自动停止掉的   你只要把启动类型改成禁用就ok了   按确定
我现在来到全局编录服务器这边把FLORENCE这台计算机删除掉   对着FLORENCE右键--选择删除--选择最下面那一项  按删除就ok了
通过开始--运行--输入cmd按确定来打开命令提示符  在命令提示符里面输入cd \按回车键--输入ntdsutil按回车键--输入Metadata Cleanup按回车键--输入Conn按回车键--输入Conn to ser London.yejunsheng.com按回车键(连接到要保留的那台域控制器)--输入sel ope tar按回车键--输入list site按回车键--输入sel site 0按回车键--输入list do in site按回车键--输入sel do 0按回车键--输入list ser in site按回车键--输入sele ser 1按回车键--输入quit按回车键--输入remove sel server按回车键  此时它会弹出服务器删除确认对话框  你按是就ok了  按是之后完全计算机名称叫做Florence.yejunsheng.com这台域控制器就被完全删除了