接上一篇,ESXi 上跑起来之后,第二件事就是把 AD 域控搭起来。AD 是企业 IT 的"地基":账号、权限、组策略、文件服务器权限,全都挂在它上面。以前在公司我只负责往域里加机器和用户,没自己建过林。这次从头做一遍,把流程和踩到的坑记下来。
一、实验环境
- 宿主机:ESXi 8.0(192.168.1.10)
- DC01:Windows Server 2022 Standard(桌面体验),4 vCPU / 8GB / 80GB
- 域名:
jikegang.lab - IP:192.168.1.20/24,网关 192.168.1.1
关于域名:我用的是 .lab 后缀。练手千万别用能公网解析的真实域名,也不要用 .local(会和 mDNS / Bonjour 冲突,Mac 和 Linux 客户端解析 DNS 时会出问题)。用公司真实域名的子域(如 lab.corp.com)是最规范的做法。
二、装系统之后必须先做的三件事
- 改计算机名:右键此电脑 → 属性 → 重命名,或者 PowerShell:
Rename-Computer -NewName "DC01" -Restart
一定要在提升为域控之前改好,提升之后改名会带来一堆麻烦(SPN、netbios 名不同步)。 - 设静态 IP:域控同时也是 DNS 服务器,IP 必须固定。
- DNS 指向自己:这是新手最常犯的错。网卡 DNS 要填
127.0.0.1(或者自己的静态 IP192.168.1.20),不要填路由器地址。因为提升为域控时,安装程序要向自己的 DNS 注册 SRV 记录,填了外部 DNS 会导致 SRV 注册失败,后面加域时客户端找不到域。
三、安装 AD DS 角色
图形界面:服务器管理器 → 添加角色和功能 → 勾选 Active Directory 域服务,会连带弹出 .NET Framework 4.8,一起装上。
PowerShell 更快:
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools-IncludeManagementTools 千万别漏,漏了就没有 AD 管理工具(ADUC、GPMC、DNS 管理器)。
四、提升为域控制器
角色装完,服务器管理器右上角会有个黄色感叹号,点"将此服务器提升为域控制器"。
因为是第一台,选"添加新林",根域名填 jikegang.lab。后面几步:
- 林功能级别 / 域功能级别:保持默认 Windows Server 2016 即可(Server 2022 最高就是这个级别,没有 2022 的选项,别找了);
- 勾选 域名系统 (DNS) 服务器 和 全局编录 (GC);
- 设置目录服务还原模式 (DSRM) 密码 —— 务必记牢,这是做权威还原时的救命密码;
- NetBIOS 名会自动填
JIKEGANG; - 数据库/日志/SYSVOL 路径保持默认(生产环境建议日志和数据库分盘放)。
先决条件检查会报几个警告(比如"DNS 委派无法创建"),这是正常的,因为这是第一台 DNS,没有上级可以委派,忽略即可。点安装,装完自动重启。
等价的 PowerShell(下次我打算直接用命令行装,快很多):
Install-ADDSForest `
-DomainName "jikegang.lab" `
-DomainNetbiosName "JIKEGANG" `
-InstallDns:$true `
-ForestMode "WinThreshold" `
-DomainMode "WinThreshold" `
-SafeModeAdministratorPassword (ConvertTo-SecureString "P@ssw0rd!23" -AsPlainText -Force) `
-Force五、装完怎么验证(面试常被问)
重启后用域管理员登录,跑这几条:
# 域信息
Get-ADDomain
Get-ADForest
# 五大 FSMO 角色在哪台机器上
netdom query fsmo
# 域控健康体检(重点看有没有 failed)
dcdiag /v
# AD 复制状态(单台域控基本不用管,多台必查)
repadmin /replsummary
# 关键 SRV 记录是否存在
nslookup -type=SRV _ldap._tcp.dc._msdcs.jikegang.labdcdiag 是我觉得最实用的一条,建完域跑一遍,有问题会明确告诉你哪一项 failed。我第一次跑的时候 DNS 那项报了错,原因是网卡 DNS 还指向路由器,改回 127.0.0.1 之后重启 Netlogon 服务就好了:
Restart-Service Netlogon
ipconfig /registerdns六、客户端加域
拿一台 Win10 测试机,两个前提:
- DNS 必须指向域控(192.168.1.20)。这一条没做到,100% 报"找不到域";
- 能 ping 通域控。
然后:sysdm.cpl → 更改 → 隶属于"域" → 输入 jikegang.lab → 弹出凭据框输入域管理员账号 → 欢迎加入 → 重启。
PowerShell 方式:
Add-Computer -DomainName "jikegang.lab" -Credential JIKEGANG\Administrator -Restart -Force我遇到的报错
第一次加域失败,提示"无法与域的 AD DC 联系"。排查顺序:
nslookup jikegang.lab—— 解析不到,说明 DNS 问题;- 客户端 DNS 填的是
192.168.1.1(路由器),改成192.168.1.20后立即可用; - 另一个隐藏坑:时间偏差。Kerberos 要求客户端和域控时间差在 5 分钟以内,超了会报"时钟偏差过大"。域控默认就是整个域的时间源,客户端加域后会自动同步;加域前如果时间差太多,先手动对时。
七、建组织结构和批量建用户
我不建议把所有用户丢在默认的 Users 容器里(Users 是容器不是 OU,不能链接 GPO)。先按部门建 OU:
New-ADOrganizationalUnit -Name "技术部" -Path "DC=jikegang,DC=lab"
New-ADOrganizationalUnit -Name "财务部" -Path "DC=jikegang,DC=lab"
New-ADOrganizationalUnit -Name "IT" -Path "OU=技术部,DC=jikegang,DC=lab"再按部门建全局组,后面做权限分配用(这就是常说的 AGDLP 思路:账号进全局组,全局组进本地域组,权限给本地域组)。
New-ADGroup -Name "GG_IT" -GroupScope Global -Path "OU=IT,OU=技术部,DC=jikegang,DC=lab"批量建用户我用 CSV + PowerShell。先准备 users.csv:
Name,SamAccountName,OU,Password
张三,zhangsan,OU=IT,OU=技术部,DC=jikegang,DC=lab,P@ssw0rd!23
李四,lisi,OU=财务部,DC=jikegang,DC=lab,P@ssw0rd!23Import-Csv C:\users.csv | ForEach-Object {
New-ADUser -Name $_.Name `
-SamAccountName $_.SamAccountName `
-UserPrincipalName "$($_.SamAccountName)@jikegang.lab" `
-Path $_.OU `
-AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) `
-Enabled $true -ChangePasswordAtLogon $true
}注意 -Enabled $true:不加这个参数,新建的账号默认是禁用状态,登录会提示"账户已禁用"。我第一次批量建完发现全都登不上,就是这个原因。
八、小结
到这一步,林、域、DNS、OU、用户都有了。整个流程走下来最深的体会是:AD 90% 的"故障"其实是 DNS 问题。DNS 指向不对、SRV 记录没注册、客户端用了公网 DNS,这三样占了加域失败原因的绝大多数。下一篇写 GPO,把策略真正下发出去。