Windows Active Directory 活动目录故障排除指南

前述

木子已经很长时间没有使用 Active Directory (AD) 了,然而由于最近公司的 AD 出现了一些问题,而同事们对于如何解决这些问题并无头绪,因此木子重拾了一些 AD 相关的知识,并记录下在排错过程中所使用到的命令和工具。这样做的目的有二:一方面可以帮助同事们在未来的维护工作中更加便捷;另一方面也希望能通过分享这些信息,帮助那些需要对 AD 进行排错的同学。

查看主域控所有节点

这里可以看到对应主域控制器 PDC 所有节点为:ad-003.rl.com

PS C:\Windows\system32> netdom query fsmo
架构主机               ad-003.rl.com
域命名主机        ad-003.rl.com
PDC                         ad-003.rl.com
RID 池管理器            ad-003.rl.com
结构主机       ad-003.rl.com
命令成功完成。

查看所有域控服务器信息

总共有 9 个域控制器,其中 PDC 为:ad-003.rl.com

PS C:\Users\muzi> nltest /dclist:rl.com
获得域“rl.com”中 DC 的列表(从“\\ad-005.rl.com”中)。
         ad-001.rl.com        [DS] 站点: Default-First-Site-Name
         ad-002.rl.com        [DS] 站点: Default-First-Site-Name
         ad-003.rl.com [PDC]  [DS] 站点: Default-First-Site-Name
         ad-004.rl.com        [DS] 站点: Default-First-Site-Name
         ad-005.rl.com        [DS] 站点: Default-First-Site-Name
         ad-006.rl.com        [DS] 站点: Default-First-Site-Name
         ad-007.rl.com        [DS] 站点: Default-First-Site-Name
         ad-008.rl.com        [DS] 站点: Default-First-Site-Name
         ad-009.rl.com        [DS] 站点: Default-First-Site-Name
此命令成功完成

查看客户端通过哪台域服务器进行验证登录

:此命令仅在 CMD 命令窗口执行有效,bash 命令窗口执行无效。

C:\Users\muzi> set logonserver
LOGONSERVER=\\AD-002

域服务器同步异常排查

域服务器异常,我们可以通过 dcdiagrepadmin 等命令进行排查,这里以 dcdiag 命令为例。

Windows bash
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。

PS C:\Windows\system32> dcdiag

目录服务器诊断

正在执行初始化设置:
   正在尝试查找主服务器...
   主服务器 = AD-003
   * 已识别的 AD 林。
   已完成收集初始化信息。

正在进行所需的初始化测试

   正在测试服务器: Default-First-Site-Name\AD-003
      开始测试: Connectivity
         ......................... AD-003 已通过测试 Connectivity

正在执行主要测试

   正在测试服务器: Default-First-Site-Name\AD-003
      开始测试: Advertising
         ......................... AD-003 已通过测试 Advertising
      开始测试: FrsEvent
         ......................... AD-003 已通过测试 FrsEvent
      开始测试: DFSREvent
         SYSVOL 共享后的最近 24 小时内出现了警告或错误事件。 失败的 SYSVOL 复制问题可能导致组策略问题。
         ......................... AD-003 没有通过测试 DFSREvent
      开始测试: SysVolCheck
         ......................... AD-003 已通过测试 SysVolCheck
      开始测试: KccEvent
         ......................... AD-003 已通过测试 KccEvent
      开始测试: KnowsOfRoleHolders
         ......................... AD-003 已通过测试 KnowsOfRoleHolders
      开始测试: MachineAccount
         ......................... AD-003 已通过测试 MachineAccount
      开始测试: NCSecDesc
         ......................... AD-003 已通过测试 NCSecDesc
      开始测试: NetLogons
         ......................... AD-003 已通过测试 NetLogons
      开始测试: ObjectsReplicated
         ......................... AD-003 已通过测试 ObjectsReplicated
      开始测试: Replications
         [Replications Check,AD-003] 最近的复制尝试失败:
            从 AD-004 到 AD-003
            命名上下文: DC=ForestDnsZones,DC=rl,DC=com
            复制生成一个错误(1256):
            远程系统不可用。有关网络疑难解答,请参阅 Windows 帮助。
            失败发生在 2024-05-07 09:59:46。
            上次成功发生在 2021-11-23 17:51:54。
            自从上次成功已发生 85778 次失败。
         [AD-004] DsBindWithSpnEx() 失败,错误为 1722,
         RPC 服务器不可用。.
         [Replications Check,AD-003] 最近的复制尝试失败:
            从 AD-004 到 AD-003
            命名上下文: DC=DomainDnsZones,DC=rl,DC=com
            复制生成一个错误(1256):
            远程系统不可用。有关网络疑难解答,请参阅 Windows 帮助。
            失败发生在 2024-05-07 09:59:46。
            上次成功发生在 2021-11-23 18:04:54。
            自从上次成功已发生 85778 次失败。
         [Replications Check,AD-003] 最近的复制尝试失败:
            从 AD-004 到 AD-003
            命名上下文: CN=Schema,CN=Configuration,DC=rl,DC=com
            复制生成一个错误(1722):
            RPC 服务器不可用。
            失败发生在 2024-05-07 10:01:10。
            上次成功发生在 2021-11-23 17:51:53。
            自从上次成功已发生 85777 次失败。
            源仍然关机。请检查该计算机。
         [Replications Check,AD-003] 最近的复制尝试失败:
            从 AD-004 到 AD-003
            命名上下文: CN=Configuration,DC=rl,DC=com
            复制生成一个错误(1722):
            RPC 服务器不可用。
            失败发生在 2024-05-07 10:00:28。
            上次成功发生在 2021-11-23 18:04:36。
            自从上次成功已发生 85777 次失败。
            源仍然关机。请检查该计算机。
         [Replications Check,AD-003] 最近的复制尝试失败:
            从 AD-004 到 AD-003
            命名上下文: DC=rl,DC=com
            复制生成一个错误(1722):
            RPC 服务器不可用。
            失败发生在 2024-05-07 09:59:46。
            上次成功发生在 2021-11-23 18:06:09。
            自从上次成功已发生 85776 次失败。
            源仍然关机。请检查该计算机。
         ......................... AD-003 没有通过测试 Replications
      开始测试: RidManager
         ......................... AD-003 已通过测试 RidManager
      开始测试: Services
            无效的服务启动类型: AD-003 上的 IsmServ,当前值为 DEMAND_START,要求的值为 AUTO_START
            [AD-003] 上的 IsmServ 服务已停止
         ......................... AD-003 没有通过测试 Services
      开始测试: SystemLog
         发生了一个错误事件。EventID: 0xC0001B78
            生成时间: 05/07/2024   10:09:00
            事件字符串: 在 xxx Service for Windows 服务意外终止后,“服务控制管理器”试着进行修正操作(重新启动服务),但这个操作失败,错误是:
         ......................... AD-003 没有通过测试 SystemLog
      开始测试: VerifyReferences
         ......................... AD-003 已通过测试 VerifyReferences
   正在 ForestDnsZones
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... ForestDnsZones 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... ForestDnsZones 已通过测试 CrossRefValidation

   正在 DomainDnsZones
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... DomainDnsZones 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... DomainDnsZones 已通过测试 CrossRefValidation

   正在 Schema
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... Schema 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... Schema 已通过测试 CrossRefValidation

   正在 Configuration
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... Configuration 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... Configuration 已通过测试 CrossRefValidation

   正在 rl
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... rl 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... rl 已通过测试 CrossRefValidation

   正在 rl.com
    上运行企业测试
      开始测试: LocatorCheck
         ......................... rl.com 已通过测试 LocatorCheck
      开始测试: Intersite
         ......................... rl.com 已通过测试 Intersite

错误一: RPC 服务不可用

      开始测试: Replications
         [Replications Check,AD-003] 最近的复制尝试失败:
            从 AD-004 到 AD-003
            命名上下文: DC=ForestDnsZones,DC=rl,DC=com
            复制生成一个错误(1256):
            远程系统不可用。有关网络疑难解答,请参阅 Windows 帮助。
            失败发生在 2024-05-07 09:59:46。
            上次成功发生在 2021-11-23 17:51:54。
            自从上次成功已发生 85778 次失败。
         [AD-004] DsBindWithSpnEx() 失败,错误为 1722,
         RPC 服务器不可用。.

从诊断结果来看,AD-003 与 AD-004 通讯时异常,AD-004 域服务器的 RPC 服务不可用。这种情况一般有以下几个原因:

1、RPC 服务真的不可用。
2、网络异常造成 RPC 服务不可用。

最终确认为这台域服务器被强制下线,造成 RPC 服务不可用。

解决方法:

1、重新将这台服务器上线,并与主域同步(但一般离线太久,正常情况下属于脱域状态,不可用)。
2、在主域上强制下线脱域的域控服务器。

这里采用第二种方案,详细操作如下:

1、删除脱域域控。
2、清理 DNS 服务器上的 DNS 解析信息。

命令行删除脱域域控(元数据清理)

参考链接Clean up AD DS server metadata | Microsoft Learn

PS C:\Windows\system32> ntdsutil
C:\Windows\system32\ntdsutil.exe: metadata cleanup
# 选择操作目标
metadata cleanup: select operation target
select operation target: connections

# 连接至主域控制器
server connections: connect to server AD-003
绑定到 AD-003 ...
用本登录的用户的凭证连接 AD-003。
server connections: quit

# 列出站点
select operation target: list sites
找到 1 站点
0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com

# 选择站点
select operation target: select site 0
站点 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
没有当前域
没有当前服务器
当前的命名上下文

# 列出选择的站点中的域
select operation target: list domains in site
找到 1 域
0 - DC=rl,DC=com

# 选择域
select operation target: select domain 0
站点 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
域 - DC=rl,DC=com
没有当前服务器
当前的命名上下文

# 列表域中的域服务器
select operation target: list servers for domain in site
找到 9 服务器
0 - CN=AD-003,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
1 - CN=AD-001,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
2 - CN=AD-008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
3 - CN=AD-004,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
4 - CN=AD-002,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
5 - CN=AD-007,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
6 - CN=AD-009,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
7 - CN=AD-005,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
8 - CN=AD-006,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com

# 选择域中的域服务器
select operation target: select server 3
站点 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
域 - DC=rl,DC=com
服务器 - CN=AD-004,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
        DSA 对象 - CN=NTDS Settings,CN=AD-004,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
        DNS 主机名称 - ad-004.rl.com
        计算机对象 - CN=AD-004,OU=Domain Controllers,DC=rl,DC=com
当前的命名上下文
select operation target: quit

# 删除对应选择的域服务器,在弹出的对话框中确认删除的域服务器信息,点击“是”,开始删除。
metadata cleanup: remove selected server
正在从所选服务器传送/获取 FSMO 角色。
正在删除所选服务器中的 FRS 元数据。
正在搜索“CN=AD-004,OU=Domain Controllers,DC=rl,DC=com”下的 FRS 成员。
正在删除“CN=AD-004,OU=Domain Controllers,DC=rl,DC=com”下的子树。
尝试删除 CN=AD-004,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com 上的 FRS 设置失败,
原因是 "找不到元素。";
继续清除元数据。
“CN=AD-004,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com”删除了,从服务器“AD-003”

# 删除成功,退出操作
metadata cleanup: quit
C:\Windows\system32\ntdsutil.exe: quit

# 验证对应域服务器是否删除成功
PS C:\Windows\system32> nltest /dclist:rl.com
获得域“rl.com”中 DC 的列表(从“\\ad-003.rl.com”中)。
         ad-003.rl.com [PDC]  [DS] 站点: Default-First-Site-Name
         ad-006.rl.com        [DS] 站点: Default-First-Site-Name
         ad-007.rl.com        [DS] 站点: Default-First-Site-Name
         ad-005.rl.com        [DS] 站点: Default-First-Site-Name
         ad-008.rl.com        [DS] 站点: Default-First-Site-Name
         ad-009.rl.com        [DS] 站点: Default-First-Site-Name
         ad-001.rl.com        [DS] 站点: Default-First-Site-Name
         ad-002.rl.com        [DS] 站点: Default-First-Site-Name
         AD-006.rl.com        [DS] 站点: Default-First-Site-Name
此命令成功完成

其它数据清理

1、默认站点服务器清理,打开【Active Directory 站点和服务】– Default-First-Site-Name — 删除 AD-004 服务器。
2、域控制器清理,打开【Active Directory 用户和计算机】,确保【Domain Controllers】中不存在此计算机。
3、DNS 记录清理,按快捷键 Win+R,打开【运行】对话框,输入 dnsmgmt.msc,打开【DNS 管理器】,点击【正向查找区域】– _msdcs.rl.com,删除与 AD-004 相关的 NS、CNAME、A 等记录。

去到其它域服务器查看对应【Domain Controllers】、【Default-First-Site-Name】及【DNS】解析信息,确保已经进行同步,说明域控制器删除成功。如果没有同步成功,可能有两个原因:

1、域控通知同步时间还未到,等待一会刷新再看看,是否已经删除。
2、域控之间的同步复制有问题,所以没有办法复制对应记录,需要进一步排查原因。

错误二:IsmServ 服务已停止

      开始测试: Services
            无效的服务启动类型: AD-003 上的 IsmServ,当前值为 DEMAND_START,要求的值为 AUTO_START
            [AD-003] 上的 IsmServ 服务已停止
         ......................... AD-003 没有通过测试 Services

IsmServ 服务说明

IsmServ 服务,全称 Intersite Messaging Service,是 Windows Active Directory 中的一个组件。该服务用于在 Active Directory 站点之间传输复制数据。

以下是 IsmServ 服务的主要功能:

  1. 在 Active Directory 站点之间传输更新。Active Directory 中的每个站点可能都有一份域的副本,Ismserv 服务负责保持这些副本同步。
  2. 在站点之间传输 DNS 更新。DNS 是 Active Directory 的重要组成部分,Ismserv 服务可以帮助同步 DNS 记录。
  3. 为 Active Directory 提供邮件传输服务。Ismserv 服务可以在站点之间传输邮件,例如,当其他复制方法无法使用时。

因此,如果您的网络中包含多个 Active Directory 站点,Ismserv 服务就非常重要。它可以帮助保持您的 Active Directory 环境的一致性和健康性。

IsmServ 服务被停止的影响:

如果在 Active Directory 环境中停止了 Intersite Messaging (IsmServ) 服务,可能会影响 AD 站点之间的复制和通信。

具体来说,以下可能是一些潜在的影响:

  1. 复制延迟:在 AD 站点之间的数据复制可能会被延迟或中断,这可能导致不同站点的 AD 数据不一致。
  2. DNS 更新问题:如果 IsmServ 服务被停止,可能会影响 DNS 记录的更新和同步,这可能导致网络解析问题。
  3. 站点连接问题:IsmServ 服务还负责处理站点之间的连接,如果服务被停止,可能会导致站点无法正确通信。
  4. 服务依赖问题:其他依赖于 IsmServ 服务的服务或应用可能会受到影响。

因此,除非有特殊原因,通常不建议在 AD 环境中停止 IsmServ 服务。如果需要停止该服务,应在维护窗口期间进行,并尽快重新启动服务,以减少对 AD 环境的影响。

参考链接域控制器启动时,ISMServ.exe 无法启动 – Windows Server | Microsoft Learn

正常IsmServ 服务启动类型为:AUTO_START ,并且服务状态现在应该是启动状态。现在服务状态为:已停止,启动类型为:手动。

# CMD 命令
# 启动服务
C:\Windows\system32> net start IsmServ
# 查看当前服务状态
C:\Windows\system32> sc query IsmServ
SERVICE_NAME: IsmServ
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

# 设置开机自动启动,start= 后面的空格是必须的。
C:\Windows\system32> sc config IsmServ start= auto  
# 获取当前服务启动类型
C:\Windows\system32> sc qc IsmServ
[SC] QueryServiceConfig 成功
SERVICE_NAME: IsmServ
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\Windows\System32\ismserv.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Intersite Messaging
        DEPENDENCIES       : SamSS
                           : NTDS
        SERVICE_START_NAME : LocalSystem

# bash 命令
# 启动服务
PS C:\Windows\system32> Start-Service -Name 'IsmServ'  
# 查看当前服务状态
PS C:\Windows\system32> Get-Service -Name 'IsmServ'
Status   Name               DisplayName
------   ----               -----------
Running  IsmServ            Intersite Messaging
# 设置开机自动启动
PS C:\Windows\system32> Set-Service -Name 'IsmServ' -StartupType Automatic  
# 获取当前服务启动类型
PS C:\Windows\system32> $serviceName = 'IsmServ'
PS C:\Windows\system32> $service = Get-WmiObject -Query "Select * From Win32_Service Where Name='$serviceName'"
PS C:\Windows\system32> $service.StartMode
Auto

图形界面启动服务:

按快捷键 Win+R,打开【运行】对话框,输入 services.msc,打开【服务】管理界面,双击 Intersite Messaging 服务,启动类型:自动,服务状态:正在运行。

错误三: xxx 服务意外地终止

      开始测试: SystemLog
         发生了一个错误事件。EventID: 0xC0001B78
            生成时间: 05/07/2024   10:09:00
            事件字符串: 在 xxx Service for Windows 服务意外终止后,“服务控制管理器”试着进行修正操作(重新启动服务),但这个操作失败,错误是:
         ......................... AD-003 没有通过测试 SystemLog

服务名称脱敏,如果是必须服务,根据实际情况启动,因为木子这里是不需要的服务,所以直接卸载了,然后清理事件日志中的系统日志,再运行 dcdiag 命令,正常 SystemLog 通过测试。

错误四:DFS 复制异常处理

开始测试: DFSREvent
   SYSVOL 共享后的最近 24 小时内出现了警告或错误事件。 失败的 SYSVOL 复制问题可能导致组策略问题

查看【事件查看器】–【Windows 日志】–【系统】日志,报错如下:

DFS 复制服务未能与复制组 Domain System Volume 的伙伴 AD-004 通讯。发生此错误可能是因为不可访问主机或者服务器上 ......
日志名称:DFS Replication
事件ID:5008

解决方法:

显示节点信息为与域控 AD-004 通讯异常,前面已经删除此节点,此错误可以忽略。

验证节点是否恢复正常

最后确保所有测试通过,域控恢复正常。

PS C:\Windows\system32> dcdiag

目录服务器诊断

正在执行初始化设置:
   正在尝试查找主服务器...
   主服务器 = AD-003
   * 已识别的 AD 林。
   已完成收集初始化信息。

正在进行所需的初始化测试

   正在测试服务器: Default-First-Site-Name\AD-003
      开始测试: Connectivity
         ......................... AD-003 已通过测试 Connectivity

正在执行主要测试

   正在测试服务器: Default-First-Site-Name\AD-003
      开始测试: Advertising
         ......................... AD-003 已通过测试 Advertising
      开始测试: FrsEvent
         ......................... AD-003 已通过测试 FrsEvent
      开始测试: DFSREvent
         ......................... AD-003 已通过测试 DFSREvent
      开始测试: SysVolCheck
         ......................... AD-003 已通过测试 SysVolCheck
      开始测试: KccEvent
         ......................... AD-003 已通过测试 KccEvent
      开始测试: KnowsOfRoleHolders
         ......................... AD-003 已通过测试 KnowsOfRoleHolders
      开始测试: MachineAccount
         ......................... AD-003 已通过测试 MachineAccount
      开始测试: NCSecDesc
         ......................... AD-003 已通过测试 NCSecDesc
      开始测试: NetLogons
         ......................... AD-003 已通过测试 NetLogons
      开始测试: ObjectsReplicated
         ......................... AD-003 已通过测试 ObjectsReplicated
      开始测试: Replications
         ......................... AD-003 已通过测试 Replications
      开始测试: RidManager
         ......................... AD-003 已通过测试 RidManager
      开始测试: Services
         ......................... AD-003 已通过测试 Services
      开始测试: SystemLog
         ......................... AD-003 已通过测试 SystemLog
      开始测试: VerifyReferences
         ......................... AD-003 已通过测试 VerifyReferences

   正在 ForestDnsZones
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... ForestDnsZones 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... ForestDnsZones 已通过测试 CrossRefValidation

   正在 DomainDnsZones
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... DomainDnsZones 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... DomainDnsZones 已通过测试 CrossRefValidation

   正在 Schema
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... Schema 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... Schema 已通过测试 CrossRefValidation

   正在 Configuration
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... Configuration 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... Configuration 已通过测试 CrossRefValidation

   正在 rl
    上运行分区测试
      开始测试: CheckSDRefDom
         ......................... rl 已通过测试 CheckSDRefDom
      开始测试: CrossRefValidation
         ......................... rl 已通过测试 CrossRefValidation

   正在 rl.com
    上运行企业测试
      开始测试: LocatorCheck
         ......................... rl.com 已通过测试 LocatorCheck
      开始测试: Intersite
         ......................... rl.com 已通过测试 Intersite
PS C:\Windows\system32>

当然我们还可以进行单项测试,比如验证 DNS 可用性。

PS C:\Windows\system32> dcdiag /test:dns

目录服务器诊断

正在执行初始化设置:
   正在尝试查找主服务器...
   主服务器 = AD-003
   * 已识别的 AD 林。
   已完成收集初始化信息。

正在进行所需的初始化测试

   正在测试服务器: Default-First-Site-Name\AD-003
      开始测试: Connectivity
         ......................... AD-003 已通过测试 Connectivity

正在执行主要测试

   正在测试服务器: Default-First-Site-Name\AD-003

      开始测试: DNS

         DNS 个测试正在运行,没有挂起。请稍候几分钟...
         ......................... AD-003 已通过测试 DNS

   正在 ForestDnsZones
    上运行分区测试

   正在 DomainDnsZones
    上运行分区测试

   正在 Schema
    上运行分区测试

   正在 Configuration
    上运行分区测试

   正在 rl
    上运行分区测试

   正在 rl.com
    上运行企业测试
      开始测试: DNS
         ......................... rl.com 已通过测试 DNS

域控降级(DC 降级)

基于目前的用户量,9 台域服务器过多,所以计划删除其中 6 台,保留 3 台,通过图形界面降级报错:此 Active Directory 域控制器可能是以下 Active Directory 集成区域的最后一个 DNS 服务器:xxx.xxx.com,主要原因在于 DNS 之间不同步,所以需要通过命令行降级,然后忽略本地 DNS 信息。

解决方法:

执行以下 bash 命令:

Import-Module ADDSDeployment 
Uninstall-ADDSDomainController -IgnoreLastDnsServerForZone -LocalAdministratorPassword (ConvertTo-SecureString -AsPlainText "password" -Force) -DemoteOperationMasterRole:$true -RemoveDnsDelegation:$true -Force:$true

参数说明:

  1. -IgnoreLastDnsServerForZone:忽略对最后一个 DNS 服务器的检查,这通常在你知道 DNS 配置不会受到卸载操作影响时使用。
  2. -LocalAdministratorPassword:设置卸载域控制器后,本地管理员账户的密码。ConvertTo-SecureString -AsPlainText "password" -Force 是将明文密码转换为安全字符串的命令。
  3. -DemoteOperationMasterRole:值为 $true 时,表示在卸载过程中,如果该域控制器是操作主机角色的所有者,则将这些角色移交给另一个域控制器。
  4. -RemoveDnsDelegation:值为 $true,则命令将尝试删除指向此域控制器的 DNS 委派。
  5. -Force:值为 $true 时,表示强制执行卸载操作,即使有警告或错误也会继续进行。

RepAdmin 命令

我们之前提到了 dcdiagrepadmin 等命令,这些命令不仅仅是故障排查的工具,在日常巡检过程中也能派上用场。下面我们来详细了解一下 repadmin
在具有多个域控制器的环境中,这些控制器会持续进行相互同步。然而,如何验证所有内容是否已经正确同步?或者确认同步过程是否在正常运行?这时,我们就可以借助 RepAdmin 工具。RepAdmin 是一款用于 Active Directory 复制诊断的工具,它默认安装在运行 Windows Server 2008 或更高版本的所有域控制器上。如果需要,您还可以通过安装远程服务器管理工具 (RSAT) 在其他计算机上使用 RepAdmin。
RepAdmin 工具的主要用途是在域控制器之间强制复制或诊断网络中的复制问题。此外,它也可以用于手动配置域的复制拓扑,但实际操作中并不推荐这样做。

常用命令:

命令 作用
repadmin /kcc 强制目标域控制器上的知识一致性检查器(KCC)立即重新计算入站复制拓扑。
repadmin /prp 指定只读域控制器(RODC)的密码复制策略(PRP)。
repadmin /queue 显示域控制器的复制队列。
repadmin /replicate 触发指定目录分区从源域控制器立即复制到目标域控制器。
repadmin /replsingleobj 在具有公共目录分区的任何两个域控制器之间复制单个对象。
repadmin /replsummary 显示有关域控制器复制状态的摘要信息。
repadmin /rodcpwdrepl 触发将指定用户的密码从源域控制器复制到一个或多个只读域控制器。(源域控制器通常是中心站点域控制器。)
repadmin /showrepl 显示域控制器之间的复制拓扑和状态。
repadmin /showattr 显示对象的属性。
repadmin /showobjmeta 显示存储在 AD DS 中的指定对象的复制元数据,例如属性 ID,版本号,始发和本地更新序号(USN),始发服务器的全局唯一标识符(GUID)以及日期和时间戳。(显示特定对象的元数据)
repadmin /istg 显示当前 ISTG(Inter-Site Topology Generator)。
repadmin /showutdvec 显示指定的域控制器上次尝试在 Active Directory 分区上执行入站复制时的复制状态。
repadmin /syncall 触发所有域控制器之间的立即同步。
/u 指定具有在 AD DS 中执行操作的权限的域和用户名。(域和用户名由反斜线分隔,例如: domain\user。)此参数不支持使用用户主体名称(UPN)登录到域。
/PW 指定使用 /u 参数输入的用户名的密码。
/retry 如果第一次尝试失败,出现对应错误信息(查阅微软官方相关链接),则会导致 Repadmin 重试尝试绑定到目标域控制器。
/CSV 以逗号分隔值(CSV)格式显示 /showrepl 参数的结果。

获取当前域控制器信息

PS C:\Users\administrator.RL> Get-ADDomainController
ComputerObjectDN           : CN=AD-001,OU=Domain Controllers,DC=RL,DC=com
DefaultPartition           : DC=RL,DC=com
Domain                     : RL.com
Enabled                    : True
Forest                     : RL.com
HostName                   : AD-001.RL.com
InvocationId               : f14b9873-1ee1-4b05-a525-efe9615c0417
IPv4Address                : 169.254.144.198
IPv6Address                :
IsGlobalCatalog            : True
IsReadOnly                 : False
LdapPort                   : 389
Name                       : AD-001
NTDSSettingsObjectDN       : CN=NTDS Settings,CN=AD-001,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=RL,DC=com
OperatingSystem            : Windows Server 2012 R2 Datacenter
OperatingSystemHotfix      :
OperatingSystemServicePack :
OperatingSystemVersion     : 6.3 (9600)
OperationMasterRoles       : {}
Partitions                 : {DC=ForestDnsZones,DC=RL,DC=com, DC=DomainDnsZones,DC=RL,DC=com, CN=Schema,CN=Configuration,DC=RL,DC=com, CN=Configuration,DC=RL,DC=com...}
ServerObjectDN             : CN=AD-001,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=RL,DC=com
ServerObjectGuid           : 746606cd-c50b-421d-9f92-2317e04c34ec
Site                       : Default-First-Site-Name
SslPort                    : 636

获取域的详细信息

PS C:\Users\administrator.RL> Get-ADDomain rl.com
AllowedDNSSuffixes                 : {}
ChildDomains                       : {}
ComputersContainer                 : CN=Computers,DC=RL,DC=com
DeletedObjectsContainer            : CN=Deleted Objects,DC=RL,DC=com
DistinguishedName                  : DC=RL,DC=com
DNSRoot                            : RL.com
DomainControllersContainer         : OU=Domain Controllers,DC=RL,DC=com
DomainMode                         : Windows2012R2Domain
DomainSID                          : S-1-5-21-2122963207-2895851703-290755918
ForeignSecurityPrincipalsContainer : CN=ForeignSecurityPrincipals,DC=RL,DC=com
Forest                             : RL.com
InfrastructureMaster               : ad-003.rl.com
LastLogonReplicationInterval       :
LinkedGroupPolicyObjects           : {cn={BA03DF56-97C4-47A4-A848-6EECEBE681FC},cn=policies,cn=system,DC=RL,DC=com,
                                     cn={256BAC66-E3D6-475F-9E78-3AA397790F0B},cn=policies,cn=system,DC=RL,DC=com, cn={31B2F340-016D-11D2-945F-00C04FB984F9},cn=policies,cn=system,DC=RL,DC=com}
LostAndFoundContainer              : CN=LostAndFound,DC=RL,DC=com
ManagedBy                          :
Name                               : RL
NetBIOSName                        : RL
ObjectClass                        : domainDNS
ObjectGUID                         : 5678c94f-bade-45fa-97d3-c1a3c20f191e
ParentDomain                       :
PDCEmulator                        : ad-003.rl.com
QuotasContainer                    : CN=NTDS Quotas,DC=RL,DC=com
ReadOnlyReplicaDirectoryServers    : {}
ReplicaDirectoryServers            : {ad-003.rl.com, ad-002.rl.com, ad-001.rl.com}
RIDMaster                          : ad-003.rl.com
SubordinateReferences              : {DC=DomainDnsZones,DC=RL,DC=com, DC=ForestDnsZones,DC=RL,DC=com, CN=Configuration,DC=RL,DC=com}
SystemsContainer                   : CN=System,DC=RL,DC=com
UsersContainer                     : CN=Users,DC=RL,DC=com

复制摘要

正常情况下,最大增量(largest delta) 时间应该小于 1 小时,并且失败为 0,错误为 0,说明域控之间的复制正常。

PS C:\Users\administrator.RL> repadmin /replsummary
复制摘要开始时间: 2024-05-13 13:54:17

正在开始用于复制摘要的数据收集,此操作可能需要一段时间:
  .......

源 DSA              最大增量         失败/总数 %%     错误
 AD-001                  04m:11s    0 /  10    0
 AD-002                  58m:22s    0 /  10    0
 AD-003                  58m:22s    0 /  10    0

目标 DSA            最大增量         失败/总数 %%     错误
 AD-001                  58m:22s    0 /  10    0
 AD-002                  01m:22s    0 /  10    0
 AD-003                  04m:11s    0 /  10    0

复制摘要详细说明:

  • 源DSA目标DSA分别代表源域控制器和目标域控制器,即数据复制的发送者(传出复制)和接收者(传入复制)。
  • 最大增量(largest delta) 是指两个域控之间最近的一次复制尝试和前一次成功的复制之间的时间差。这个时间值越小,表明数据复制的频率越高,系统的一致性越好。这里的最长时间不超过 60 分钟,为什么不超过 60 分钟,后面会进行解释。
  • 失败(fails)/总数(total) %% 是指复制失败的次数占总复制尝试次数的百分比。如果这个值大于0,说明有复制尝试失败,需要查看具体的错误代码,分析失败原因。
  • 错误(error) 列显示的是复制失败的错误代码,这些代码可以在 Microsoft 的官方文档中查找具体含义和解决方案。

为什么是 60 分钟了?

在 AD 站点内,正常来说这个时间周期最长不超过 60 分钟,我们域内的变更,一般变更节点会通知其它节点进行变更复制,正常会在几分钟内完成,比如:创建账号、密码重置等。但对于其它情况,比如:域架构变更等,它是不经常发生的,这种变更域控制器仅每小时检测一次,所以当您的域控制器节点之间没有变更操作,它的默认周期会是 60 分钟。
您可以将站点内轮询的时间限制更改为一小时两次或一小时四次。这将减少最大增量值,但不会真正对更改的 AD 数据的复制产生影响。只是触发更频繁地进行轮询。而且,几乎所有时候,轮询都不会触发任何数据复制,因为站点内的复制通知已经触发了复制操作。
如果您确实想要更改此值,可以在【Active Directory 站点和服务】–【NTDS Site Settings】–【更改计划】中进行设置,详细如下:

获取域控之间复制详细信息

Active Directory 站点内复制采用环形拓扑,也就意味着任何域控制器都有两个复制链接与其它域控制器进行数据同步复制(前提条件:域控制器至少有三台)。这种复制拓扑无需手动配置,Active Directory 将自动确定需要建立连接的域控制器。当域控制器数量增加时,复制时间可能也会增加。但为了避免延迟,Active Directory 将创建额外的连接,但这也是自动创建的,我们不需要担心这些复制连接。

repadmin /showrepl 查看域控制器之间的详细复制信息,包括:连接的复制状态、命名上下文等。这里可以看到与前面我们提到的 “任何域控制器都有两个复制链接” 相同,这里 AD-001AD-002AD-003 建立了复制连接。

对应入站状态及复制状态参数说明:

  • Source and Destination Domain Controllers(源和目标域控制器): 列出参与复制的域控制器,指示复制的源和目标。
  • Naming Contexts(命名上下文): 显示正在复制的命名上下文,如默认目录分区和应用程序目录分区。
  • Last Successful Replication Time(最后一次成功复制时间): 指示上一次成功复制发生的时间。
  • Failure Timestamps(失败时间戳): 如果有复制失败,显示上一次失败复制尝试的时间戳。
  • Status of Replication(复制状态): 显示复制是成功的、正在进行中还是遇到错误。
  • Consecutive Failures(连续失败): 指示连续复制失败的次数。
  • Propagation Synchronization Objects(传播同步对象): 显示特定对象的复制状态。
PS C:\Users\administrator.RL> repadmin /showrepl

Repadmin: 针对所有 DC localhost 运行命令 /showrepl
Default-First-Site-Name\AD-001 # 运行此命令的域控制器名称
DSA 选项: IS_GC # 全局编录
站点选项: (none)
DSA 对象 GUID: cf65ce7d-a3b6-4287-8f1d-194a0517f0c9
DSA 调用 ID: f14b9873-1ee1-4b05-a525-efe9615c0417

==== 入站邻居 ===========================================

DC=RL,DC=com # 复制上下文
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 13:54:35 的尝试成功。 # 上次复制尝试是否成功
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 13:55:20 的尝试成功。

CN=Configuration,DC=RL,DC=com
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 12:55:55 的尝试成功。
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 12:55:55 的尝试成功。

CN=Schema,CN=Configuration,DC=RL,DC=com
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 12:55:55 的尝试成功。
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 12:55:55 的尝试成功。

DC=DomainDnsZones,DC=RL,DC=com
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 13:45:03 的尝试成功。
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 13:45:03 的尝试成功。

DC=ForestDnsZones,DC=RL,DC=com
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 12:55:55 的尝试成功。
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 12:55:55 的尝试成功。

每个域控制器都会有 5个连接数,其中包括:DomainCconfigurationSchemaDomainDnsZonesForestDnsZones

使用参数 /all 可以输出出站连接和 KCC 连接对象信息。

PS C:\Users\administrator.RL> repadmin /showrepl /all

Repadmin: 针对所有 DC localhost 运行命令 /showrepl
Default-First-Site-Name\AD-001
DSA 选项: IS_GC
站点选项: (none)
DSA 对象 GUID: cf65ce7d-a3b6-4287-8f1d-194a0517f0c9
DSA 调用 ID: f14b9873-1ee1-4b05-a525-efe9615c0417

==== 入站邻居 ===========================================

DC=RL,DC=com
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 17:28:27 的尝试成功。
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 17:28:45 的尝试成功。

CN=Configuration,DC=RL,DC=com
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 16:55:55 的尝试成功。
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 16:55:55 的尝试成功。

CN=Schema,CN=Configuration,DC=RL,DC=com
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 16:55:56 的尝试成功。
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 16:55:56 的尝试成功。

DC=DomainDnsZones,DC=RL,DC=com
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 17:22:03 的尝试成功。
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 17:22:18 的尝试成功。

DC=ForestDnsZones,DC=RL,DC=com
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 16:55:56 的尝试成功。
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 16:55:56 的尝试成功。

==== 更改通知的出站邻居==================================

DC=RL,DC=com
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 16:31:01 的尝试成功。
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 17:24:42 的尝试成功。

CN=Configuration,DC=RL,DC=com
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 15:53:03 的尝试成功。
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 15:53:06 的尝试成功。

CN=Schema,CN=Configuration,DC=RL,DC=com
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-12 19:48:42 的尝试成功。
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 11:20:11 的尝试成功。

DC=DomainDnsZones,DC=RL,DC=com
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 16:39:41 的尝试成功。
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 16:39:44 的尝试成功。

DC=ForestDnsZones,DC=RL,DC=com
    Default-First-Site-Name\AD-003 通过 RPC
        DSA 对象 GUID: f32917d8-f83f-461a-8e76-a93fb5f28638
        上次在 2024-05-13 15:56:10 的尝试成功。
    Default-First-Site-Name\AD-002 通过 RPC
        DSA 对象 GUID: a4f7486e-37a6-437b-b09e-837f86601475
        上次在 2024-05-13 15:56:13 的尝试成功。

==== KCC 连接对象 ============================================
连接 --
    连接名称: 5ab2d435-133e-41e8-8808-22ea90e40386
    服务器 DNS 名称: AD-001.RL.com
    服务器 DN 名称: CN=NTDS Settings,CN=AD-001,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
        源: Default-First-Site-Name\AD-003
                无失败。
        TransportType: 站点间 RPC
        选项:  isGenerated
        ReplicatesNC: DC=DomainDnsZones,DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
        ReplicatesNC: DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
        ReplicatesNC: CN=Configuration,DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
        ReplicatesNC: DC=ForestDnsZones,DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
        ReplicatesNC: CN=Schema,CN=Configuration,DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
连接 --
    连接名称: 5017f281-731e-4ee2-bfb9-f5d0a482a9bd
    服务器 DNS 名称: AD-001.RL.com
    服务器 DN 名称: CN=NTDS Settings,CN=AD-001,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rl,DC=com
        源: Default-First-Site-Name\AD-002
                无失败。
        TransportType: 站点间 RPC
        选项:  isGenerated
        ReplicatesNC: DC=DomainDnsZones,DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
        ReplicatesNC: DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
        ReplicatesNC: CN=Configuration,DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
        ReplicatesNC: DC=ForestDnsZones,DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
        ReplicatesNC: CN=Schema,CN=Configuration,DC=RL,DC=com
        原因:  RingTopology
                已添加副本链接。
找到 2 个连接。

如果我们的域控制器很多,输出所有信息也会很多,再查看对应错误信息会比较乱,可以使用 /errorsonly 参数,只显示错误信息。

PS C:\Users\administrator.RL> repadmin /showrepl /errorsonly

Repadmin: 针对所有 DC localhost 运行命令 /showrepl
Default-First-Site-Name\AD-001
DSA 选项: IS_GC
站点选项: (none)
DSA 对象 GUID: cf65ce7d-a3b6-4287-8f1d-194a0517f0c9
DSA 调用 ID: f14b9873-1ee1-4b05-a525-efe9615c0417

==== 入站邻居 ===========================================

显示复制队列

在大型域控环境下,存在小的复制队列是正常现象,但如果本身域控制节点比较少,正常来说复制队列应该始终保持在 0 个项目,如果出现非 0 值,可能节点之间存在复制问题。

PS C:\Users\administrator.RL> repadmin /queue

Repadmin: 针对所有 DC localhost 运行命令 /queue
队列包含 0 个项目。

Active Directory中的repadmin /queue命令用于查看域控制器上的复制队列。管理在域控制器之间等待处理的复制请求的关键组件。运行repadmin /queue可以对挂起的复制操作提供有价值的见解。

repadmin /queue命令的结果包括以下信息:

  • Naming Contexts(命名上下文): 列出复制请求等待在域控制器之间进行处理的命名上下文。
  • Source and Destination Domain Controllers(源和目标域控制器): 显示参与复制的域控制器,指示待处理的复制请求的来源和目标。
  • Pending Operations(待处理的操作): 详细列出等待处理的复制操作的类型和数量。

通过检查repadmin /queue的结果,管理员可以识别潜在的瓶颈,排除复制延迟并采取纠正措施,以确保域控制器之间的及时和高效同步。监视复制队列对于维护Active Directory复制过程的健康和性能至关重要。

强制同步变更信息

当在主域控上新增了用户等,正常会通知其它节点进行复制变更操作,但在大型域控环境下,复制会有一个时间周期,这时候如果我们希望立即生效,可以在主域控(变更操作的域控制器)上运行以下命令,将在主域控上的变更推送至其它域控制器。

PS C:\Users\administrator.RL> repadmin /syncall /AdeP

/AdeP 参数说明:

  • A:”All naming contexts”,即所有命名上下文,同步所有命名上下文,包括:架构、配置和域等。
  • d:“distinguished names”,即专有名称,将显示详细的对象名称,而不仅仅是GUID。
  • e:“Enterprise, cross sites”,即跨站点同步,此选项指示命令同步所有域控制器,包括不在同一站点的域控制器。
  • P:“Push changes out”,即推送,将更改从该域控制器向外推送(单向同步至其它域控),并显示对应进度。

参考链接: [Repadmin /syncall]( https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc835086 (v=ws.11))

:如果需要从其它域控制器同步数据,可以移除参数 /P 进行拉取。

PS C:\Users\administrator.RL> repadmin /sycall /Ade

强制复制指定域控制器的特定上下文

强制复制指定域控制器的特定上下文,主要用于进行节点排错及单节点异常数据修复,其中包括:

  • 强制紧急复制:在需要及时传播信息的情况下,/replicate 命令允许管理员强制紧急复制,确保更新始终在网络中传播。
  • 解决残留对象问题:该命令在解决残留对象问题时特别有用,在大型和复杂的 AD 环境中,这是一个常见问题。通过精确启动复制,管理员通过初始化复制来解决差异并保持数据一致性。
  • 隔离和测试复制路径:管理员使用/replicate 命令有选择地测试复制路径,为故障排除提供了细颗粒度的方法。这种有针对性的测试确保管理员准确地识别和解决复制问题。

比如:我们可以从当前节点 AD-003 强制复制节点 AD-002 的数据。

PS C:\Users\administrator.RL> repadmin /syncall AD-002

也可以只复制指定上下文,比如:我们在当前节点 AD-003 复制 AD-001AD-002Configuration 信息。

PS C:\Users\administrator.RL> repadmin /replicate AD-001 AD-002 CN=Configuration,DC=RL,DC=com

:强制复制可能造成更多问题,所以在不了解整个域的情况下,不建议此操作。

RepAdmin 总结

Repadmin 工具为管理员提供了一种细粒度的控制机制,帮助精确地编排和验证 Active Directory(AD)环境中的复制过程。这对于维持 AD 环境的健康和高效运行至关重要,能够帮助管理员检查和管理 AD 复制。通过定期执行 Repadmin 命令,管理员可以实时了解域控制器的复制状态,并及时发现和纠正问题。例如,它可以帮助检测复制失败,排除故障,以及优化资源利用。

客户端登录域账号慢原因分析

如果您的 Windows 客户端登录域账号时,一直在转圈圈,可以参考以下过程进行问题排查。以下过程为 Windows 客户端登录域账号详细步骤:

  1. DNS 查询:客户端首先通过 UDP 53 端口向 DNS 服务器查询 Active Directory (AD) 的 SRV 服务记录(通常是 _ldap._tcp.<域名>)。DNS 服务器将返回一个域控制器 (DC) 的列表,包含了这些 DC 的 IP 地址、服务、以及权重。
  2. 选择 DC:客户端会根据 DNS 服务器返回的信息,通过匹配本地 IP 与 DC 的站点 IP,以及考虑 DC 列表中的权重和站点信息,选择一台 DC 进行连接。这个连接过程通常是通过 TCP 389 端口进行的。
  3. 连接 DC:如果与选定的 DC 的连接失败,客户端会继续从列表中选择下一个可用的 DC。
  4. 执行全局编录查询:一旦与 DC 的连接建立,客户端将通过 TCP 3268/3269 端口执行全局编录 (GC) 查询。在这个过程中,客户端会使用 Kerberos 协议进行身份验证,并从密钥发行中心 (KDC) 获取票据授权票证 (TGT)。
  5. 读取组策略:最后,客户端会使用 RPC 协议(通过 TCP 135 端口和一个随机的高位端口)从 DC 的 Sysvol 共享目录读取组策略。

获取登录用户信息

正常用户登录以后,会产生一个 Winlogon 的登录事件,事件 ID:7001,对应详细信息中可以看到对应 UserSid 号,根据对应 UserSid 号,可以查看是哪个用户进行了登录。如果您的账号登录慢,且未产生登录日志,可能是计算机名或用户名在域控上不小心被删除造成。

# 替换对应 UserSid 号
PS C:\Windows\system32> $sid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-21-2122963207-2895851703-290755918-24654")
PS C:\Windows\system32> $user = $sid.Translate([System.Security.Principal.NTAccount])
# 显示用户名
PS C:\Windows\system32> $user.Value
rl\muzi

# 反过来,可以基于用户名查找 UserSid
PS C:\Windows\system32> $user = Get-ADUser -Identity 'muzi'
PS C:\Windows\system32> $user.SID.Value
S-1-5-21-2122963207-2895851703-290755918-24654

这个命令首先将 SID 字符串转换为 SecurityIdentifier 对象,然后使用 Translate 方法将其转换为 NTAccount 对象。最后,Value 属性将返回用户名。

删除(降级)域控制器报错

删除(降级)域控制器时,报错如下:

PS C:\Users\administrator.RL> Uninstall-ADDSDomainController -IgnoreLastDnsServerForZone -LocalAdministratorPassword(ConvertTo-SecureString -AsPlainText "password" -Force) -DemoteOperationMasterRole:$true -RemoveDnsDelegation:$true -Force:$true

Uninstall-ADDSDomainController : 操作失败,错误如下:
无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。
所在位置 行:1 字符: 1
+ Uninstall-ADDSDomainController -IgnoreLastDnsServerForZone -LocalAdministratorPa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Uninstall-ADDSDomainController], DCPromoExecutionException
    + FullyQualifiedErrorId : DCPromo.General.54,Microsoft.DirectoryServices.Deployment.PowerShell.Commands.UninstallA
   DDSDomainCommand

Message                       Context                                      RebootRequired                        Status
-------                       -------                                      --------------                        ------
操作失败,错误如下:...        DCPromo.General.54                                    False                         Error

原因:是因为 DsRoleSvc 服务被禁用,此服务承载用于 DC 升级、降级和克隆的 DS 角色服务器。如果禁用了此服务,这些操作将失败。

写在最后

在维护 Active Directory(AD)的过程中,除了可以使用 dcdiagrepadmin 命令,还有许多其他的命令可以使用,包括:

  1. netdomnetdom 是一个用于管理域和信任关系的命令行工具。
  2. ntdsutilntdsutil 是一个命令行工具,用于访问和管理 AD 数据库。
  3. dsquerydsquery 命令用于从命令行查询 AD 域或林。
  4. dsadddsadd 命令用于从命令行向 AD 域或林中添加对象。
  5. dsmoddsmod 命令用于修改 AD 域或林中的现有对象。
  6. dsrmdsrm 命令用于删除 AD 域或林中的对象。
  7. dsgetdsget 命令用于显示 AD 域或林中对象的属性。
  8. csvdecsvde 命令用于导入和导出 AD 数据。
  9. ldifdeldifde 命令用于导入和导出 AD 数据,它使用的是 LDAP Data Interchange Format (LDIF)。

需要注意的是,在执行这些命令之前,最好在测试环境进行验证,必免对生产环境造成不可逆的影响。另外微软官方的文档是非常全面的,对于工具软件的使用及排错过程中遇到的问题,基本上都可以在微软官方文档中找到答案,强烈建议查阅微软官方知识库。

参考文献

[1] Repadmin | Microsoft Learn
[2] Repadmin: How to Check Active Directory Replication – Active Directory Pro

变更记录

  • 2024-05-19
    • 新增错误五、六、七处理方案。
  • 2024-10-09
    • 新增【删除(降级)域控制器报错】解决方法。
Avatar photo

关于 木子

Founder of the Rocky Linux Chinese community, MVP、VMware vExpert、TVP, advocate for cloud native technologies, with over ten years of experience in site reliability engineering (SRE) and the DevOps field. Passionate about Cloud Computing、Microservices、CI&CD、DevOps、Kubernetes, currently dedicated to promoting and implementing Rocky Linux in Chinese-speaking regions.
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇