Ad域控及策略问题排查新手工具包

背景

在企业生产中,微软的活动目录Ad(Active Directory)非常普遍,往往是IT应用的基石。

如果AD规模较大,结构复杂,如包含站点、权限、父子域、信任域等设计时,很可能会出现在PoC环境或简单生产环境中不容易碰到的问题现象。这时,难免需要一些常用的工具/方法来诊断问题。

原来隐约记得一些,最近和AD维保合作伙伴看问题时,又接触了些新的,一起记录下来备忘,以后大概率还能派上用场。

1 域控制器安装/删除

1.1 AD域的大小

将一台server提升为域控是常规操作,有个小Tip是可以观察到域的全部信息的文件大小。

如果域的环境较大,这个文件大小可以帮助判断复制全部域信息需要的时间。

位置在C:\windows\NTDS文件夹下。

注意,新的域控升级完成后,文件的大小和做之前从其它域控上看的可能是有差异的。我的实际经验是新域控上看到的会小一些。

1.2 域控制器强制删除

正常情况下AD域控是可以降级的。按正常过程如果降级失败,域中会产生残留信息,也就是所谓的脏数据。

此时,可以使用Ntdsutil工具进行服务器元数据的清理,需要在林中正常存活的控制器上操作,如下。

\1. 以管理员身份打开命令提示符:在 “开始” 菜单上,右键单击 “命令提示符”,然后单击 “以 管理员身份运行”。 如果出现 “用户帐户控制” 对话框,请提供 Enterprise 管理员的凭据(如果需要),然后单击 “继续”。

\2. 在命令提示符下,键入以下命令,然后按 Enter:

ntdsutil

\3. 在 ntdsutil: 提示符下,键入以下命令,然后按 Enter:

ntdsutil: metadata cleanup

\4. 在 metadata cleanup: 提示符下,键入以下命令,然后按 Enter:

metadata cleanup: remove selected server <ServerName>

\5. 在 ” 服务器删除配置” 对话框 中,查看信息和警告,然后单击 “是” 以删除服务器对象和元数据。

此时,Ntdsutil 确认已成功删除域控制器。 如果收到一条错误消息,指出找不到该对象,则可能已在之前删除域控制器。

\6. 在 metadata cleanup: 并 ntdsutil: 提示时,键入 quit ,然后按 enter,确认删除域控制器。

metadata cleanup: quit

ntdsutil: quit

\7. 打开“Active Directory 用户和计算机”。 在已删除的域控制器的域中,单击 ” 域控制器”。 在详细信息窗格中,不应出现您删除的域控制器的对象。

\8. 打开“Active Directory 站点和服务”。 导航到 “服务器” 容器,并确认删除的域控制器的服务器对象不包含 NTDS 设置对象。 如果服务器对象下未显示子对象,则可以删除该服务器对象。 如果出现子对象,请不要删除服务器对象,因为另一个应用程序正在使用该对象。

\9. 清除元数据之后,通过命令检查域环境信息。

具体命令如下:

c:>ntdsutil

ntdsutil: metadata cleanup

metadata cleanup: select operation target

select operation target: connections

server connections: connect to server it.org

server connections: quit

select operation target: list site
select operation target: select site 0

select operation target: list domain in site

select operation target: select domain 0

select operation target: list servers for domain in site

select operation target: quit

metadata cleanup: remove selected server

出现对话框,按“确定”删除DC控制服务器。

metadata cleanup: quit

ntdsutil: quit

清除之后,可能还需要清理DNS信息。

1.3 迁移五大主机角色

通过Netdom query fsmo可查看当前五大主机角色

image-20211013150031930

因为目前BJ-Server-AD1是辅助域控,进入命令提示,连接到辅助域控,然后退出;

image-20211013150109987
  • 迁移RID角色:Transfer RID master
  • 迁移PDC主机角色:Transfer PDC
  • 迁移移结构主机角色:Transfer infrastructure master
  • 迁移移域命名主机角色:Transfer naming master
  • 迁移架构主机角色:Transfer schema master

2 域复制状态

在多个地理位置建设有域控制器时,互相之间网络链路的通断情况会影响到信息同步,排障时需要检查。

2.1 复制关系表格一览

image-20211012165322116

使用Powershell命令

repadmin /showrepl * /csv | ConvertFrom-Csv | Out-GridView

这样一个表还是非常友好的。规模较大的话,数据加载需要等一段时间。

可以通过筛选器精准定位,从而清楚地看到所关注站点之间的出入复制任务是否成功。

2.2 其它常用命令

以下命令在林中的任意DC上执行时,理论上应该都没有明显报错。

Repadmin /replsummary

Repadmin /bridgeheads

Repadmin /showrepl

Repadmin /syncall /force

需要注意,在复杂环境中,不同物理位置的DC之间可能本身一直都没打通权限,且这种不通对业务未必有影响。例如,子域通常只需要和父域控制器网络通,而不是需要和其它所有子域的控制器都通。

总之,有些报错的显现,不能当作“XX故障现象是因为整个域网络有问题/状态不正常引起”的依据。需要加以辨别。

3 组策略执行状态

AD中的计算机/用户组策略下发未生效时,需要排查组策略的执行情况。

通常来说,在目标计算机上用运行命令或打开工具的方法,便可以获得进一步分析所需的参考信息。

3.1 组策略在本机的详细运行结果

gpresult /H gp.html

这个命令可以生成比较友好的阅读界面。

注意,要获得计算机策略的执行情况的前提是,用户要加入本地管理员组。如果只是user权限,就只能获得用户策略结果。

在哪个用户下运行,就会在该用户的目录下生成html文件。加参数也可以指定输出位置。

image-20211012171331682

适合用来直观核对特定的GPO配置。

Tip:从内容的长短可以初步判断策略执行成功与否,通常来说,我们在VDI项目中会通过组策略优化很多项内容。这会使得输出结果很长。

3.2 组策略在本机的简易运行结果

  • 可在cmd中输入gpresult /z,会在cmd窗口中输出文字形式的结果,只带有最简单的排版。
  • 可在cmd中输入rsop,可获得如下窗口化的结果。
image-20211012172052859

如果知道策略配置的路径,用这个方法查看比较快速(就我而言,最熟悉的就是登录用户配置中的登录脚本在哪里点出来了)。

4 其它

4.1 通过注册表查看配置。

在VDI环境中,策略不一定都是通过组策略下实现的,VDI软件厂商也会有自己的方案来控制计算机的设置,有时想要分辨是何种方案在起作用。

有一个方法,是在注册表(regedit)中搜索特定的字段,看看结果显示在哪里。比如,我是通过vmware的dem组件来把用户的目录做重定向的。那搜索重写向的目标Url,往往可从结果中获得一些提示。

4.2 事件查看器

最基本需要掌握的排错工具,显示在这里面信息指向性还是比较明确的。

以策略不生效为例。本次就观察了到这样的报错。

image-20211013163353679

后续排查方面,可能是网络,也可能是Windows自身的安全认证策略等。

4.3 查看系统状态

cmd下使用systeminfo命令

重点可以看看系统版本、安装补丁情况、登录服务器。

OS版本、补丁可能会和Bug、微软KB等有关联。登录服务器为什么重要呢?在某些容灾设计中,我们希望特定特性的计算机是找特定域控做登录认证。

此条目发表在IT技术分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注