在企业IT环境中,Active Directory(AD)域服务是身份认证和资源管理的核心。主域控制器(PDC)和辅助域控制器(BDC)的协同工作,确保了整个系统的高可用性和数据一致性。简单来说,主域控就像公司的总部,而辅助域控则是分布在各地的分支机构,它们需要实时同步最新的组织架构和用户信息。
我见过不少企业因为忽视同步机制导致的问题。比如某次,一家公司的财务部门在辅助域控上更新了用户权限,但由于同步失败,总部始终看不到变更,结果耽误了重要报表的生成。这就是为什么我们需要深入理解同步机制。
核心同步原理:
先在辅助域控上打开"Active Directory用户和计算机"(运行dsa.msc),右键点击目标OU选择"新建→用户"。我建议命名时加入日期或版本标记,比如testuser_202308,这样后期排查时一目了然。
创建过程中有几个关键点容易出错:
powershell复制# 也可以通过PowerShell快速创建用户
New-ADUser -Name "TestUser" -GivenName "Test" -Surname "User" `
-SamAccountName "testuser" -UserPrincipalName "testuser@domain.com" `
-AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force) `
-Enabled $True -Path "OU=IT,DC=domain,DC=com"
创建完成后,立即在主域控上执行以下命令检查同步状态:
bash复制repadmin /showrepl *
这个命令会显示所有复制伙伴的状态。重点关注两个字段:
如果看到错误代码,常见的比如8456表示DNS问题,8453通常是身份验证失败。
组的同步有个坑我踩过多次:嵌套组的处理。当组A包含组B,而组B又包含用户C时,同步可能需要更长时间。建议:
bash复制repadmin /syncall /APed
好的OU结构应该像公司的组织架构图一样清晰。根据我的经验,这些设计原则最实用:
示例结构:
code复制公司 (根域)
├── 北京总部
│ ├── 财务部
│ ├── 人力资源
│ └── IT中心
│ ├── 系统组
│ └── 网络组
└── 上海分公司
├── 研发部
└── 市场部
创建OU时有个重要选项经常被忽略:"防止容器被意外删除"。这个选项应该在创建所有生产环境OU时勾选,否则后期可能被误删。
通过命令行创建带保护的OU:
powershell复制New-ADOrganizationalUnit -Name "IT中心" -Path "DC=domain,DC=com" `
-ProtectedFromAccidentalDeletion $True
当需要跨域同步OU结构时,可以使用ADMT(Active Directory迁移工具)的OU映射功能,但要注意:
默认域策略的密码要求往往过于严格。我建议为不同部门创建细粒度的密码策略:
gpmc.msc)应用策略时需要特别注意执行顺序:
bash复制gpupdate /force # 立即生效
repadmin /syncall /APed # 同步到所有域控
密码不同步是最常见的问题之一。通过事件查看器(eventvwr.msc)检查以下日志:
常见解决方法:
bash复制dcdiag /test:netlogons /v
nltest /dsgetdc:domain.com
根据我处理过的案例,这些问题出现频率最高:
** lingering对象问题**:某个域控上有残留对象
bash复制repadmin /removelingeringobjects <问题DC> <源DC> <分区DN> /advisory_mode
USN回滚:虚拟机快照恢复导致
bash复制dcdiag /test:frssysvol
复制链路中断:
bash复制repadmin /replsummary
repadmin /bridgeheads
这个工具是域控同步的瑞士军刀,这些命令我每天都会用:
强制立即同步:
bash复制repadmin /syncall /APed
查看特定对象的复制状态:
bash复制repadmin /showobjmeta "DC=domain,DC=com" "CN=TestUser,OU=IT,DC=domain,DC=com"
重建复制拓扑:
bash复制repadmin /kcc
跨站点同步:
bash复制repadmin /options <DC名称> +DISABLE_INBOUND_REPL
repadmin /options <DC名称> -DISABLE_INBOUND_REPL
经过多个企业级项目验证,这些经验值得分享:
同步频率控制:
powershell复制Set-ADReplicationConnection -Identity "<连接名称>" `
-ReplicationSchedule "0 0 0/1 0 * *" # 每小时同步
监控方案:
备份策略:
bash复制wbadmin start systemstatebackup -backuptarget:E:
虚拟机特别注意事项:
bash复制Get-ADObject -Identity (Get-ADDomainController -Identity <DC名称>).NTDSSettingsObjectDN `
-Properties msDS-GenerationId
在实际运维中,我发现很多问题都源于基础配置不当。比如有次整个域的同步停滞,最后发现是因为有人修改了域控的DNS设置,导致它们无法解析彼此的主机名。因此,我强烈建议建立变更检查清单,任何对域控的修改都要验证: