简介:域控制器(DC)是企业内网身份认证的核心基础设施,Windows Server环境中的Active Directory域服务依赖DNS、Kerberos协议和复制机制协同工作。在主备域控部署中,主机名规划、静态IP配置、DNS指向是成败的关键前提。理解全局编录、DSRM密码与FSMO角色分配,能有效避免认证故障与同步异常。本文以Windows Server 2022为例,梳理从主域控搭建到备域控加入,再到复制验证的完整链路,并针对加域失败、DNS委派警告、用户登录异常等高频问题给出排查思路,帮助IT运维人员落地高可用域控架构。
1. 先认清这事儿的本质:AD域控部署拼的不是点击次数,而是网络身份一致性
兄弟们在 Windows Server 2022 上搭 AD 域控,最容易掉进去的坑就是把注意力全放在“下一步”按钮上,结果装完域控之后客户端加域加不进去,备域控同步不过去,又得从头排查。实际上这套部署链路真正拼的是三件事:主机名、静态 IP、DNS 指向。不管你是准备做主域控还是备域控,这三样东西一旦有一处乱了,后面 AD 域服务、Kerberos 认证、DNS SRV 记录注册全都会跟着翻车。这篇笔记就是照着我在实验环境里反复拆装的路径写的,适合刚接手企业内网、准备上高可用域控的 IT 人员照着实操一遍,也把容易让你事后返工的几个边界问题提前说透。
2. 部署前准备:主机名、静态 IP、补丁,这三个前置条件决定后面成败
2.1 主机名:用 sysdm.cpl 改名,别越过 NetBIOS 的 15 字符限制
先把最不起眼但最要命的一步说清楚。拿到一台新装的 Windows Server 2022,第一件事不是急着装角色,而是把主机名改掉。项目正文里给的路径是 win+r 打开运行框,输入 sysdm.cpl 打开系统属性,点“更改”按钮重命名计算机。
# 在 PowerShell 里同样可以完成改名,且可写进自动化脚本 Rename-Computer -NewName "DC01" -Restart注意这里我把主机名写成了 DC01,这不是随便起的。域控的主机名在整个 AD 生命周期里基本是不可变的,因为计算机的 SPN(服务主体名称)和 DNS 记录都绑在这个名字上。虽然域控也能改名,但需要先降低域控身份再改,逻辑上多绕一大圈,属于自找麻烦。我一般会在规划阶段就把主域控叫 DC01、备域控叫 DC02,简单直白,排障时一眼能认出谁是谁。
改完名必须重启,不要攒着和后面的角色安装一起做。原因很简单:AD 域服务在安装时读取的是计算机名称和对应的 NetBIOS 名,如果名字没生效就装角色,后期提升域控时可能会看到用户名和 NetBIOS 名对不上的诡异报错。
还有一个容易忽略的参数细节:Windows 的 NetBIOS 名称上限是 15 个字符,超了会被截断或者干脆报错。常见做法是主机名控制在 14 个字符以内,留一位给域环境中的其他标识符。比如哪怕你公司全称缩写有 17 个字符,域控主机名也别硬塞进去。
2.2 静态 IP 与 DNS 自指:先把“为什么”整明白再动手
改完主机名,接着配静态 IP。同样的入口,win+r 输入 ncpa.cpl 打开网络连接,找到 Hyper-V 虚拟网卡对应的以太网适配器。因为域控本身就是 DNS 服务器,这台机器的 DNS 必须指向自己,而不是指向路由器的 192.168.10.1 或者运营商 DNS。
项目正文里提到了两种写法:一种是把 DNS 填成 127.0.0.1,另一种是填成自己的局域网 IP 比如 192.168.10.230。这两种都可以,但你可能不知道的是,等 AD 域服务装完并提升为域控之后,系统会把 DNS 客户端设置强制改成 127.0.0.1,这是域控安装过程自动做的。
# 用 PowerShell 配静态 IP(注意替换成你的实际网卡名) Get-NetAdapter # 先列出网卡,确认 InterfaceAlias 的名字 # 设置 IP、掩码和网关 New-NetIPAddress ` -InterfaceAlias "Ethernet" ` -IPAddress "192.168.10.230" ` -PrefixLength 24 ` -DefaultGateway "192.168.10.1" # 设置 DNS 指向本机,网卡上不要填路由器地址 Set-DnsClientServerAddress ` -InterfaceAlias "Ethernet" ` -ServerAddresses "127.0.0.1"第一行代码先列出网卡是因为 Hyper-V 环境里默认网卡名可能是“以太网”也可能是“Ethernet”,如果没有确认名字就直接跑后面的命令,报错率很高。New-NetIPAddress 里的 PrefixLength 24 对应的是 255.255.255.0 子网掩码,如果你的网段规划不是 /24,这个参数要跟着变。Set-DnsClientServerAddress 里的 127.0.0.1 是回环地址,让本机的 DNS 解析请求先走自己。
有个细节值得多说一句:在纯内网实验环境里,网关可以不配,但如果你要打补丁、访问外部源,网关就得是通的。DNS 指向自己之后外网域名大概率解析不了,因为域控上还没有配置转发器,这个在正文中也提到了网页打不开的现象。先记着:这时打不开网页是正常的,后面装完 DNS 角色、配好转发器才会恢复。
2.3 补丁更新:装 AD 角色之前把系统补丁打完,原因不为性能而是为兼容
正文里专门有一句话:“由于服务器的安全,我们还需要更新服务器的补丁。”这一步很多人会跳过,觉得补丁不影响域控安装。但根据我之前在实验环境里踩过的坑,Windows Server 2022 刚装完就装 AD DS 角色,某些累积更新没打上时,后续提升域控可能出现 DSRM 密码设置成功但 AD 数据库初始化失败的情况,日志里只给你一个笼统的“Active Directory 域服务无法启动”提示,排查起来非常难受。
补丁安装顺序建议是:装完系统 -> 改主机名 -> 配静态 IP -> 更新补丁 -> 重启 -> 再装 AD 角色。这个顺序的好处是,改名和 IP 配置这些前置操作做完之后,补丁下载和安装过程不会因为主机名变更导致系统服务异常。补丁打到当前最新状态再重启一次,然后进入下一步角色安装。
3. 主域控搭建:从添加 AD DS 角色到提升为新林域控的六个关键点
3.1 添加角色与功能:为什么 DNS 角色“不选也会被装”
打开服务器管理器,点“添加角色和功能”,默认下一步走到“服务器选择”,确认主机名和 IP 地址都没问题之后,勾选 Active Directory 域服务。这一步正文里强调过:电脑加域主要用的就是这个角色。
# 命令行安装 AD DS 角色和远程管理工具 Install-WindowsFeature ` -Name "AD-Domain-Services" ` -IncludeManagementTools这里我不建议纯命令行一把梭,因为图形界面会弹出“添加 AD DS 所需功能”的对话框,里面包含 AD DS 和 AD LDS 工具、Active Directory 模块、组策略管理这些,图形界面勾选更直观。命令行安装的 IncludeManagementTools 参数会把管理工具一并装好,适合后面需要做无人值守部署的场景。装完角色之后,不管你当初有没有勾选 DNS 服务器,提升域控时系统都会默认把 DNS 角色带上来,这就是为什么很多人疑惑“我没选 DNS 怎么装完了多了一个 DNS 角色”。
原因正文里讲得很透:域控制器靠 DNS 解析主机名和域名,加域时其他计算机要动态注册 SRV 记录到 DNS 服务器,这些记录被 Kerberos 身份验证依赖,没有 DNS 整个域认证就是黑匣子。AD DS 要求网络上必须有 DNS 服务器存在,所以安装程序会在你没选择的情况下强制补上这个角色。
角色装完之后,正文特意提到建议手动重启一下服务器再配置域控。这一步不要偷懒,因为 AD DS 角色安装后的第一轮服务初始化需要干净的启动环境,不重启直接提升域控,偶尔会遇到“无法从此服务器检索有效域”这种玄学报错。
3.2 提升为域控制器:新林、功能级别、DNS 委派错误的处理
角色装完,打开服务器管理器右上角的小旗子图标,点击“将此服务器提升为域控制器”。注意这一刻才是真正的分水岭:装了角色但不提升,这台服务器就还不是域控。
选择部署操作时,因为是公司第一台域控制器,选第三个“添加新林”。根域名这里我用 demo.local 做演示,实际生产环境建议用你拥有所有权的一级域名的子域,比如 corp.example.com,因为 .local 域名和公网 DNS 不互通,后面如果要做 Exchange 或 Office 365 混合部署会非常别扭。
# 命令行提升为域控(新林部署),密码参数要先转成安全字符串 $dsrmPwd = ConvertTo-SecureString "YourDSRM@2024" -AsPlainText -Force Install-ADDSForest ` -DomainName "demo.local" ` -DomainNetbiosName "DEMO" ` -SafeModeAdministratorPassword $dsrmPwd ` -InstallDns $true ` -Force:$true这段命令会在当前机器上创建一个全新的林,根域是 demo.local,NetBIOS 名是 DEMO。InstallDns 参数强制安装 DNS。Force 参数跳过交互确认。命令行方式的好处是执行过程中你能在终端里直接看到每个阶段的输出,不像图形界面卡半天也不知道在干嘛。
走到 DNS 选项时,界面大概率会弹出一个黄色警告:无法创建该 DNS 服务器的委派。第一次见这个提示的人容易慌,实际上它几乎可以无脑跳过,因为这是在上级 DNS 区域里创建委派记录的操作,大部分内网环境根本没有上级 DNS 区域,跳过不影响本域 DNS 的正常工作。如果后续需要让公网或其他 DNS 服务器解析这个域,再去上级 DNS 手工补一条委派记录就行。
3.3 全局编录、DSRM 密码与 NetBIOS 名称:三个概念搞懂才算入门
提升向导里默认勾选了全局编录。全局编录说白了就是域目录数据库的完整副本,里面存着整个域所有对象的信息。它的核心价值是让域控在用户登录时不用跨站点查询其他域控,直接本地确认账号是否存在,用户就能完成认证。只有一台域控时,全局编录是默认且必需的;多台域控时,一定要确保至少有一台挂着 GC 角色,否则用户数量一多,认证压力全压在一台机器上,响应会明显变慢。
DSRM 密码要单独记好。目录服务还原模式是域控出问题时的“后悔药”入口,比如 AD 数据库损坏、系统状态需要还原、管理员密码被遗忘,都要用 DSRM 密码进入还原模式处理。DSRM 密码不要求跟域管理员密码一致,但强烈建议两者分开,且不要贴到桌面上。这台服务器如果将来要重装,DSRM 密码找不回来,备份还原基本等于作废。
NetBIOS 名称向导会自动生成,默认取域名的第一个标签,也就是 demo 变成 DEMO。这个名称用于早期 Windows 协议和部分陈旧应用兼容。加域的电脑可以直接输入 NetBIOS 名称加域,同时 NetBIOS 名称的冲突检查能保证局域网内域名的唯一性。除非 NetBIOS 名称和已有网络环境冲突,否则保留默认值就行。
4. 备域控部署与同步机制:为什么宕掉一台,域还能活着
4.1 备域控前置:主机名、IP、加入现有域
备域控的安装路径前面一大半和主域控一样:装好系统、改主机名、配静态 IP、打补丁。区别在两点:主机名建议用 DC02 而不是 DC02 之外随意起名,IP 地址要新规划一个且保持和主域控同一子网或可路由网段,DNS 指向主域控 IP 而不是自己。
# 备域控先把 DNS 指向主域控,这样才能发现域环境 Set-DnsClientServerAddress ` -InterfaceAlias "Ethernet" ` -ServerAddresses "192.168.10.230"严格来说,备域控加域后还需要把 DNS 改成指向自己,因为备域控本身也会装 DNS。但第一步必须先指向主域控,否则加域时找不到域控制器,报错就是“找不到网络路径”。这个先后顺序默认很多人容易搞反。
然后把这台机器加入到 demo.local 域:
# 用域管理员凭据把 DC02 加进域并重启 Add-Computer ` -DomainName "demo.local" ` -Credential (Get-Credential "DEMO\administrator") ` -RestartGet-Credential 会弹窗让输入域管理员账号和密码,不建议直接写在命令行里,因为会留在历史记录里。加域过程中系统会自动创建计算机账号并配置 Kerberos 信任关系。重启后这台机器已经从工作组变成了域成员。
4.2 备域控提升为额外域控制器:选对部署路径,别又建一个新林
备域控重启登录之后,同样到服务器管理器里添加 AD DS 角色,然后点小旗子进入提升向导。这里最容易翻车的点是选错部署操作:不是“添加新林”,而是选第二项“将域控制器添加到现有域”,然后输入域名 demo.local 和具有委派权限的企业管理员凭据。
# 备域控提升命令,需要凭据里有在域中创建域控的权限 $cred = Get-Credential "DEMO\administrator" $dsrm = ConvertTo-SecureString "SameDSRM@2024" -AsPlainText -Force Install-ADDSDomainController ` -DomainName "demo.local" ` -Credential $cred ` -SafeModeAdministratorPassword $dsrm ` -InstallDns $true ` -Force:$true这里有个坑:DSRM 密码建议和主域控保持一致,不强制但能避免后续灾难恢复时记混。Install-ADDSDomainController 和 Install-ADDSForest 的命令差异就在那一个动词上,写错会导致这台服务器尝试新建一个完全独立的域树,复制拓扑直接乱掉。
如果主域控和备域控之间网络是通的、DNS 解析正常,备域控安装程序会自动从主域控复制一份 AD 数据库和 SYSVOL 共享。这个过程不需要手工做任何数据拷贝,系统自动完成初始化同步。复制数据量取决于域里有多少用户、组、GPO,我在实验环境里几十个对象时大概一两分钟就完成了。
4.3 同步机制底层:增量复制、RID 池与站点拓扑,哪些会自动干
主备域控之间自动同步,这个“自动”背后是 AD 复制协议在工作。域控之间通过 RPC over IP 相互通信,初始同步是全量,之后只做增量更新。你在主域控上新建一个用户,这条对象的变更不会广播给所有域控,而是由主域控的更改通知机制触发复制到直接复制伙伴。
复制时的数据分两种:目录数据库和 SYSVOL。目录数据库存用户、组、计算机账号这些,SYSVOL 存组策略脚本和登录脚本。这两者复制路径不同,所以偶尔会出现账号同步过去了但组策略没同步过去的现象,后面避坑章节我会专门展开。
还有一个细节:多台域控时,域里所有 RID 池的管理和分配是 FSMO 单主机角色的职责,默认安装的第一台域控承担 RID 主机、PDC 仿真器和基础结构主机。备域控不会抢占这些角色,除非手动转移或主域控彻底宕机后执行夺权操作。这个角色分配决定了为什么备域控能继续认证用户,但不能随意添加需要新 RID 的安全主体,除非主域控一直在职。
GC 全局编录在备域控提升向导里默认也是勾选的。我一般建议两台域控都保留 GC,原因很简单:如果某天主域控宕机,备域控没有 GC 的话,用户在登录的瞬间可能因为找不到 GC 而无法完成认证,这台备域控就白建了。双 GC 在单站点的小规模环境里几乎没有性能负作用。
5. 部署与排障中的常见问题避坑:五条现场级踩坑记录
5.1 现象:客户端加域报“找不到域控制器”或“找不到网络路径”
这个报错是最常见的第一道坎,而且多半不是发生在开篇操作时,而是发生在客户端加域时。原因基本就一个:客户端的 DNS 没有指向域控。很多人客户端拿着 DHCP 分发的路由器地址,自然解析不了 demo.local 的 SRV 记录。解决方法是把客户端网卡的 DNS 手动改成域控 IP,或者改 DHCP 作用域的 DNS 选项,然后再尝试加域。验证是否解析到域控的方法:
nslookup -type=SRV _ldap._tcp.dc._msdcs.demo.local如果返回了 DC01 和 DC02 的地址,说明 DNS 链路没问题,问题在认证凭据或网络端口;如果返回空,说明 SRV 记录缺失,优先检查域控的 DNS 服务是否正常启动。
5.2 现象:提升向导提示“无法创建 DNS 委派”,不敢继续点下一步
第一次看到这个黄条警告,绝大多数人都会停下来截图问人。事实上这条警告在主域控是常态,新林部署时还没有上级 DNS 区域可委派,系统只是按流程检查了一下,发现没有父区域就直接提醒你它无法完成这个动作,但对本域 DNS 没有任何实质影响。比较谨慎的做法是把警告信息截图存档,然后继续下一步。这里真正要留意的反而是安装完成之后,确认 DNS 服务是否已启动、正向查找区域里是否自动建立了 demo.local 区域,以及区域里是否自动注册了 DC01 的 A 记录和 SRV 记录。
5.3 现象:加域成功,但域用户登录时提示“没有登录这台计算机的权限”或者认证失败
这个问题往往不是权限配置,而是时间偏差。Kerberos 认证对时间偏差有默认 5 分钟的上限,客户端和域控时间差超过这个值,认证直接失败,而且错误日志里不会写“时间不对”,只会给一个拒访问的结论。解决方法是把两台域控和客户端的 Windows Time 服务都指向同一个可靠时间源,域控之间的时间同步优先于客户端。我一般会在域控上执行 w32tm /resync 强制重新同步,并检查客户端时间是否与域控差在 5 分钟以内。
5.4 现象:备域控提了很久,但主域控创建的用户在备域控上看不到
先确认复制拓扑是否建立,用 repadmin 查复制伙伴状态:
repadmin /replsummary如果显示最后的成功时间是很久之前或者干脆失败,最常见的元凶是防火墙拦截了 RPC 动态端口。AD 复制使用 RPC 协议,在 Windows 防火墙里要放行“Active Directory 域服务”相关规则,或者干脆在域控之间开放 49152-65535 动态 RPC 端口范围。另外,如果你的环境有多块网卡,域控之间通信绑定的 IP 不对也会导致复制不走预期链路,有条件的话域控只用一张网卡。
5.5 现象:备域控坏掉重装,但 AD 里还留着老计算机账号导致重复加入报错
备域控重装之后重新加域时,偶尔会遇到“指定的计算机名已存在”或复制冲突。原因是被降级或系统损坏的域控,其计算机账号没有从 AD 里正常删除。解决是在主域控上用“Active Directory 用户和计算机”控制台找到 Computers 容器里那个残留账号,确认已经离线之后删掉,再重新加域。更规范的操作是重装前先运行降级命令,比如 PowerShell 的 Uninstall-ADDSDomainController,让系统自动清理元数据,但很多人在机器已经起不来的情况下根本执行不了,只能事后手工清理。
# 手工清理残留域控元数据(在一台正常域控上执行) ntdsutil metadata cleanup select operation target list domains select domain 0 list sites select site 0 list servers in site select server "DC02" quit remove selected server quit quit这串命令是逐行执行的交互式操作,选错了服务器会把活域控的元数据误删,执行前要反复核对选中的是故障机器。
6. 部署完成后的验证链条:从 repadmin 到 dcdiag 走一遍才算收工
主备域控都装完,不等于这事结束了。我自己的习惯是关闭主域控虚拟机,模拟硬件故障,然后看客户端还能不能认证、备域控能不能接管登录。但在此之前,有一个更快的验证链条可以先跑,不用关机那么暴力。
第一层是检查复制概要:
repadmin /replsummary输出里要重点看 FAIL 列有没有数字,以及每个复制伙伴的最近成功时间。理想状态下所有复制伙伴的 last success 应该在几分钟内。
第二层是运行域诊断:
dcdiag /test:replications /test:dns /test:systemlogdcdiag 会依次检查复制、DNS 和系统日志。如果 DNS 测试里报了“无法解析域控的 SRV 记录”,基本就是 DNS 区域的动态更新权限没配置好,去 DNS 管理台检查区域属性里的“动态更新”是否设置成“安全”。
第三层才是实际数据同步测试。在主域控上创建一个测试用户,比如名为 SyncTest 的域账号,等两三分钟,再到备域控上打开 Active Directory 用户和计算机,看这个账号是否已经出现。如果没出现,用这条命令强制触发一次增量复制:
repadmin /syncall /AdeP/AdeP 参数的意思是全部伙伴同步、包含关键对象、跳过离线伙伴。执行之后再刷新备域控,通常几十秒内就能看到账号。如果强制同步都拉不过来,问题基本锁定在 RPC 端口或复制凭据上。
还有一个实用技巧是给客户端加域时抓 DNS 注册过程。备域控的状态最终会被客户端加域操作验证,但更直观的方式是用 dcdiag /test:registerindns 重新注册所有域控的 A 记录和 SRV 记录,然后看返回结果是否有“已注册”标志。
从那以后,我每次部署完主备域控,都会强制走一遍这个验证链条:repadmin 看复制状态、dcdiag 检查 DNS、实际建测试用户看同步延迟,最后再拔掉主域控电源做一个 15 分钟的模拟故障演练。这套流程看着多,但比真出故障时再从头翻日志心里踏实太多。希望帮到你。
本文还有配套的精品资源,点击获取