ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Windows Server搭建AD域控与DNS服务器完整实践:从规划到客户端加域

Windows Server搭建AD域控与DNS服务器完整实践:从规划到客户端加域 我见过太多这样的场景一台全新的Windows Server刚装好有人就急急忙忙打开服务器管理器花半小时装完Active Directory域服务角色然后点“将此服务器提升为域控制器”输个域名重启完就宣称“域建好了”。结果第二天客户端加域找不到域控、DNS解析报错、组策略不生效全办公室乱成一锅粥。这事不怪AD复杂怪在一开始没把Windows AD/DNS服务器搭建当成一个耦合系统来看——域控和DNS是绑在一根绳上的先规划后动手后面能省下十个加班夜。这篇文章写给两种人一是小企业或分支机构的IT需要给环境做第一台域控和DNS服务器二是刚学Windows Server的运维新手想在自己电脑或虚拟机上搭一套能练手的AD环境。我会把从开机到客户端加域的全过程拆开讲连最容易出错的环节、报错后怎么反查都一并说清楚尽量让你少踩我踩过的坑。1. 动手前先把环境理清版本、主机名、IP网段这三样定了就别回头1.1 Windows Server版本怎么挑没必要追新但要留意生命周期域控制系统对Windows Server的版本要求没那么玄乎。你现在能拿到的常见版本是2016、2019、2022最新的2025也已经铺开了。我的建议是如果是从零开始优先考虑2022或2019因为官方支持周期长后续打补丁也方便如果是旧环境迁移域功能级别允许的话2016也能继续用。一个更重要的抉择是Server Core还是带桌面体验的Desktop Experience。很多第一次搭域控的人看到Server Core只有一个命令行窗口就发怵果断选了带桌面的。但实际上域控日常管理根本不需要本地桌面——装完之后你用服务器管理器或RSAT从自己的电脑远程管理就好。Core少了Explorer、IE/Edge、桌面组件攻击面小打补丁重启快跑起来也更稳。在小公司没有专职运维人员的前提下你倒是可以先用Desktop版本练手理解全了再考虑Core。我自己做生产域控一律选Core。1.2 主机名和NetBIOS名先想好别让默认名字坑你主机名是重装系统时就该规划好的。Windows默认那种“WIN-5F3A2K9Q”的随机主机名进域之后虽然能改但改起来牵涉DNS记录、计算机账户、Kerberos SPN不是不能改是没必要给自己找事。主机名规则我有三个习惯长度不超过15个字符。NetBIOS名天生只有15字节超过会被截断日志里看起来像是两台机器同名。用有意义的命名规范比如DC01、DC02、FS01。别中文、别带空格也别用特殊符号。提前想好机器角色。DC01当主域控后面要加第二台就叫DC02这比以后改个AD-1再改成AD-2要清爽得多。在提升为域控制器之前建议先把主机名改成最终想要的。在Server Core上可以这样改Rename-Computer -NewName DC01 -Restart1.3 固定IP和DNS指向这一步错了后面全是玄学AD域控要求静态IP这不是建议是硬性要求。如果你用DHCP分配的地址来做域控某天IP一变客户端就满世界找不到域了。以常见的VMware vSphere或Hyper-V虚拟化环境为例。我给域控规划一个固定IP比如10.10.10.10/24网关指向10.10.10.1。DNS这栏很多人会纠结到底填什么。关键点来了即将成为第一台域控的机器在提升之前网卡DNS先填自身IP或者填127.0.0.1也可以。有的教程会让你先填外部DNS比如114或8.8.8.8等装完AD再改回来这样也行但多一次改动就多一次出错的可能。我推荐的做法是直接固定好IPv4地址10.10.10.10子网掩码255.255.255.0网关10.10.10.1首选DNS10.10.10.10就是它自己备用DNS留空或者在有多台DNS环境里填另一台有同学担心“DNS指向自己那它自己查外部域名怎么办”不用担心域控上有转发器功能我们在后面第4部分会专门设置。这一步你只要保证IP和DNS都固定好并且确认这台机器能ping通网关就够了。2. 安装AD DS和DNS角色一条命令比在向导里来回点省心2.1 管理员账号和强密码是必修课无论你打算在图形界面里点还是像我一样全程PowerShell第一步都得确认你当前的账号有本地管理员权限。如果是刚装完系统默认的Administrator直接用也行但我强烈建议你先创建一个专用管理账号比如itadmin加入本地Administrators组后续操作都用它。域控的DSRM密码我们后面会提到这里先说本地管理员账号的密码策略。AD域环境默认对密码复杂度有要求但你新建本地账号时不强制。我建议直接按域策略的标准来至少8位包含大小写字母、数字、特殊字符中的三类。这个习惯在域环境里特别重要因为域控是整个网络的身份中心密码弱等于把门钥匙挂门口。2.2 用PowerShell装角色两条命令解决战斗在Windows Server上安装AD DS角色有图形和命令行两种途径。图形界面虽然直观但要点好几层向导而且装完角色后还得再做一步“提升为域控制器”中间容易漏。命令行两条命令就完成了。在Server Core环境里打开PowerShell执行Install-WindowsFeature AD-Domain-Services, DNS -IncludeManagementTools这条命令会同时安装Active Directory域服务角色和DNS服务器角色。-IncludeManagementTools在Server Core上会自动安装RSAT管理工具模块方便后续通过远程服务器管理工具来管理。装完会返回一个结果如果重启要求是Yes一般说明需要重启。你可以手动重启也可以顺手执行Restart-Computer重启后再确认一下角色装好了Get-WindowsFeature AD-Domain-Services, DNS | Select DisplayName, InstallState2.3 为什么DNS总是被“顺手”装上这里多解释一句你会发现装AD DS角色时只要选择的是新林域控DNS就是默认必装角色。因为AD对DNS不是“建议”而是“依赖”——域控制器需要通过DNS中的SRV记录对外宣告自己存在。客户端加域、域控之间复制、Kerberos认证第一步全是问DNS“域控在哪”。你当然可以不用微软DNS而是用第三方DNS或现有的Unix BIND只要它能支持SRV记录和动态更新。但在中小企业场景里我找不到理由不用集成的Windows DNS——它随AD安装、目录分区自动复制、权限自动设置省掉一大半手配工作。3. 提升为域控制器域名、功能级别、DSRM密码一个都不能省3.1 新林还是现有林没域就新林别硬接角色装完服务器管理器图标上会亮起一个黄色感叹号点开就是“将此服务器提升为域控制器”。如果你是用PowerShell装的角色也可以直接执行提升命令。这时候会问你是“添加新林”还是“将域控制器添加到现有域”。场景很明确整个公司还没有AD域那就选新林你已经有了一台域控想加一台做冗余那才是“添加到现有域”。新手最容易误操作的就是这个选项一旦选了“添加到现有域”就得填现有域的域名和管理员凭据填错了会报“找不到域”。3.2 域名设计强烈不建议用单标签名域名设计的核心决策一个是根域名一个是NetBIOS名。根域名我的经验是不要用.local也不要用你将来会从公网购买的裸域名。.local是mDNS保留后缀部分Linux环境和打印服务会跟它冲突。裸域名比如example.com用在内部AD上如果公司真持有这个公网域名内外解析会打架麻烦一堆。合适的选择是“子域名”形式假设公司有公网域名example.org内部AD根域就设ad.example.org或者corp.example.org这样内外网可以清晰区分。如果没有公网域名就随便用一个你不会再用到的内部域名比如corp.internal或者测试环境常用lab.local虽然我不推荐但小实验环境影响不大。实用占位例子咱们这篇用corp.example.org。3.3 功能级别能选多高选多高但要看其他域控的版本“林功能级别/域功能级别”决定整个域内还能不能运行老版本Windows Server的域控以及某些高级功能是否开启。新环境里如果你确定所有域控都是Windows Server 2016以上那就直接选“Windows Server 2016”功能级别如果有2019或2022的选项也直接选最高可用级别。这里有个容易踩的坑万一以后你从旧环境迁移域里还有Windows Server 2012 R2的域控功能级别就不能高于2012 R2。新搭建的环境没有历史包袱记住“选最高”就对了。3.4 DSRM密码、NetBIOS名、数据库路径的那些细节提升向导里还有几个容易被忽略的选项DSRM密码是目录服务还原模式的密码不是域管理员密码。它相当于域控的“安全模式”密码磁盘损坏、AD数据库修复时要用。这个密码必须记住而且建议放在密码保险柜里。很多人建完域就把DSRM密码忘了真到要用的时候只能靠ntdsutil重置麻烦且危险。NetBIOS域名的默认值一般会和根域第一个标签一样比如corp.example.org的NetBIOS名默认就是CORP。保持默认就行除非有冲突。DNS选项那个“创建DNS委派”的勾选框可以保持勾选。数据库文件夹、日志文件夹和SYSVOL文件夹的路径我强烈建议不要放在C盘尤其当C盘只有60G这种小容量时。路径放到D盘独立分区会安全很多比如D:\Windows\NTDS和D:\Windows\SYSVOL。理由很简单AD数据库和SYSVOL是大量读写的地方独立盘位可以减少和系统盘IO竞争也降低系统盘塞满导致数据库损坏的概率。至于用PowerShell提升整条命令如下你可以自己改成对应值Install-ADDSForest -DomainName corp.example.org -DomainNetbiosName CORP -ForestMode WinThreshold -DomainMode WinThreshold -InstallDns:$true -SafeModeAdministratorPassword (ConvertTo-SecureString -AsPlainText YourDSRMPassword! -Force) -DatabasePath D:\Windows\NTDS -LogPath D:\Windows\NTDS -SysvolPath D:\Windows\SYSVOL -Restart执行完服务器会自动重启重启完成后用域管理员账号登录第一台域控就算上线了。4. 装完先做一轮“体检”DNS记录、复制状态、时间同步全查一遍4.1 自动生成的DNS区域到底长什么样提升完成后DNS管理器中会以你的域名出现正向查找区域。以corp.example.org为例你会看到corp.example.org主区域里面有SOA记录、NS记录、域控的A记录、_tcp、_udp等子域_msdcs.corp.example.org主区域里面是AD的定位记录包括_ldap._tcp.dc._msdcs、_kerberos._tcp.dc._msdcs这些SRV记录这些SRV记录就是AD的“地图”。客户端登录、加域、找域控都是先来DNS查这张地图。所以判断AD有没有正常工作别看UI上显示绿色要看这些记录有没有注册到位。你可以用下面命令快速查看DC的SRV记录Resolve-DnsName -Type SRV _ldap._tcp.dc._msdcs.corp.example.org如果返回一条指向 DC01.corp.example.org 的SRV记录说明AD的基本定位机制是通的。4.2 用命令验证DNS与AD状态dcdiag和repadmin是标配我见过太多人建完域什么都不查直接开始加客户端结果加不进去了才回头找原因。所以装完域控先跑一遍系统状态检查再继续这比事后排查高效一百倍。在域控上以管理员身份打开PowerShell执行dcdiag /vdcdiag会逐项测试AD的DNS注册、复制、服务状态、权限等。输出内容很长你重点看结尾的总结部分有没有passed或failed。如果出现失败项大多数情况都是DNS问题。再检查一下域控之间复制状态repadmin /replsum因为是单台域控环境这里会显示空的复制摘要属于正常。如果有两台以上域控这个命令会列出复制延迟和错误数量凡是错误值不是0都要重视。最后用nslookup做一次端到端解析验证nslookup -typeSRV _ldap._tcp.dc._msdcs.corp.example.org正确的结果是能返回DC01.corp.example.org的地址。如果提示cant find基本说明SRV记录没有注册成功常见原因是DNS动态更新被Windows防火墙挡住或者netlogon服务没有注册记录。4.3 配置DNS转发器让域控正常解析外部域名域控的网卡DNS指向自己之后它默认是能用“根提示”去互联网解析外部域名的。但生产环境里我习惯显式配置一台上游DNS作为转发器比如运营商DNS或公司的公网DNS。这样内部域名走AD的本地区域外部域名统一走转发器解析速度和可排查性都比裸根提示好。打开DNS管理器右键服务器选择“转发器”添加一个上游DNS地址比如223.5.5.5或119.29.29.29。没有特殊要求就用公共DNS也行但更推荐运营商给的地址延迟更小。配置完可以验证一下Resolve-DnsName www.bing.com能正常返回IP就说明转发链路通畅。顺便说一句DNS服务器上还会自动创建IPv4反向查找区域吗不一定。AD自动创建正向区域反向区域在有些版本里需要手动加。反向查找区域不是AD的必需项但某些旧工具、邮件服务器、证书服务会用到建议顺手加上。在DNS管理器中“反向查找区域”那边新建一个主要区域网络ID填10.10.10.0/24对应的前三位10.10.10然后允许动态更新即可。4.4 时间同步域控自己得先准域环境的时间同步是安全认证的基础Kerberos协议要求客户端和服务器时间差不超过5分钟超过就拒绝认证。第一台域控默认使用林根域的PDC模拟器角色它的时间来源一般指向外部NTP服务器或硬件时钟。在虚拟化环境里我强烈建议关闭虚拟化平台自带的“主机时间同步”选项否则每次VM迁移或快照恢复域控时间都可能被跳变。手动配置PDC的外部时间源可以这样w32tm /config /manualpeerlist:pool.ntp.org,0x8 /syncfromflags:MANUAL /reliable:YES /update Restart-Service w32time w32tm /resync然后检查同步状态w32tm /query /status输出的Source如果是pool.ntp.org说明外部时间源生效。5. 客户端加域八成失败是DNS指向没配对5.1 客户端的DNS就该指向域控IP没有第二种选择客户端加域这个环节我排查过无数个“找不到域”的求助案例最后90%都指向同一个问题客户端网卡的DNS服务器没指向域控。这里的原因还是回到SRV记录。客户端加域时系统会向它配置的DNS服务器发一个_ldap._tcp.dc._msdcs.域名查询。如果客户端拿着8.8.8.8或者路由器的DNS去问这些DNS压根不知道你内部AD的SRV记录在哪里自然返回“找不到域”。所以客户端入域前务必把它网卡的DNS改成域控IP。DHCP环境里可以直接在DHCP作用域选项里下放DNS如果客户端是手工IP就把首选DNS直接填10.10.10.10。加域之前先用这个命令测一下nslookup corp.example.org 10.10.10.10能返回域控的IP再点加域成功率会高很多。5.2 加域操作和常见报错一条命令能解决的问题别去翻UI图形界面加域没什么好说的系统属性里填域名、输管理员账号密码就行。用命令更稳在管理员PowerShell里执行Add-Computer -DomainName corp.example.org -Credential CORP\Administrator -Restart它会提示输入域管理员密码执行成功会自动重启并加入域。加域过程中最常见的报错和应对方法报错/现象根因解决思路找不到网络路径客户端和域控网络不通或防火墙拦了SMB先ping 10.10.10.10通再查防火墙找不到域/域不存在客户端DNS没指向域控改DNS后ipconfig /flushdns重试拒绝访问凭据不对或账号没有加域权限用域管理员或提前委派权限指定的服务器运行的服务与其需求不符客户端和域控版本/功能级别不兼容老系统需要开SMB1或升级系统加完域重启后用whoami或systeminfo看计算机域是否显示为corp.example.org确认加域成功。6. 我替你们踩过的坑时间同步、快照、旧DNS缓存6.1 时钟偏差超过5分钟整个域突然“瘫痪”有一年我给一个客户做域控巡检突然接到电话说所有客户端都登不上域了密码明明没改域控也ping得通。我上去一看域控的系统时间快了6分钟。原因也很乌龙——运维同事之前手改了域控时间没等外部NTP同步回来。这事的教训就是域环境任何认证失败第一个先看时间。Kerberos使用时间戳防重放时间差超过默认5分钟就直接拒绝。恢复正常后除了手动同步外记得把外部NTP的配置重新设置好不然下次还会漂。6.2 虚拟化环境里的快照和域控能不用尽量不用现在几乎所有域控都跑在VMware或Hyper-V上快照确实好用。但域控这种有状态的身份服务做快照容易引发“USN回滚”问题——虚拟机恢复到某个历史快照时AD数据库回退到旧状态而其他域控或客户端记住了新状态两个版本的数据不一致复制就会卡死。如果只是单域控实验环境快照救了急问题不大。但生产环境我的建议只有一句不要对运行中的域控打快照。备份用Windows Server Backup或第三方支持AD的备份方案恢复粒度也更好。6.3 客户端DNS缓存和DHCP旧租约改完DNS还报错的元凶我处理过一个挺迷惑的问题客户端的DNS已经改成域控地址了加域还是报错。后来在客户端上执行ipconfig /all发现DNS确实已改但ipconfig /displaydns里还缓存着旧的DNS解析结果。遇到这类情况一条命令解决ipconfig /flushdns ipconfig /registerdns如果客户端是从DHCP拿地址的还要检查DHCP服务器上是否还有旧的分发记录或者客户端网卡是否还残留旧的静态DNS配置。改完之后重启网卡或重启系统效果更干净。6.4 忘了DSRM密码怎么办在可控范围内重置DSRM密码忘了虽然不是天天发生但真发生了就会让人发慌。好在只要域还有一台可用的域控就能通过ntdsutil工具重置这个密码。在域控上管理员命令行执行ntdsutil set dsrm password Reset DSRM administrator password输入两遍新密码退出即可。需要注意这个操作其实是在重置“本地SAM数据库里的DSRM管理员密码”如果是多域控环境最好在每台域控上都分别执行一次确保每台机器自己的DSRM密码都知道。我还想提醒一句建域之初一定要把DSRM密码存进密码管理工具别随手贴在桌面TXT里。这属于域控的“最后一道门”丢了、忘了都很麻烦。6.5 从单域控到第二台域控至少把这步规划好最后补充一个扩展点。单域控环境域控挂了整个域就瘫了。理论上应该至少配两台域控做冗余。加第二台域控不用重走一遍新林直接把第二台Windows Server加入现有域然后同样安装AD DS角色并执行“将此服务器提升为域控制器”选择“将域控制器添加到现有域”。DNS设置让AD自己复制域控间复制由系统自动完成。在只有一台域控的初期阶段好好做备份才是真正要紧的事。我用Windows Server Backup对整个系统盘做定期备份已经够用恢复时也走的是“授权还原”流程。把上面这些点都走一遍一套能落地、能扛事、后续也好扩展的Windows AD/DNS服务器才算真正搭完。我在实际项目中最大的体会是AD不是装出来的是验出来的。每动一步都跑一下DNS查询和dcdiag看着那些SRV记录一行行就位心里才踏实。你按这个过程做下来大概率也能少走夜路直接进到平稳运维的状态。
返回列表