我自己搭过几回AD域也给客户排过不少域环境里的奇奇怪怪问题发现一个规律网上讲AD域搭建的教程不少但要么是照着官方文档念一遍要么直接跳过前置规划直接进安装向导新手跟着做完前面看着都正常后面一加域就各种报错。这篇文章我不打算复读安装向导我会把AD域搭建和加入客户端这一条线从头拆到尾包括环境规划、域控部署、Windows加域、Linux加域、临时配置文件故障排查、第二台域控同步这些实操中高频踩坑的点每一步都讲清楚为什么要这么做。想在公司内网搞集中账号管理的IT运维、刚接触微软服务器体系的新手还有打算把Linux服务器也纳入域统一认证的团队这篇文章应该能帮你少走不少弯路。1. 开始搭域之前先把三件事想明白1.1 域、域控、AD到底怎么区分很多人一开始就被这三个词绕晕了。Active DirectoryAD是微软目录服务的名字它负责存储整个网络里的对象信息——用户、计算机、组、策略等等。域Domain是AD里的一个管理边界比如你公司内部域名用corp.example.com那整个corp.example.com就是你们公司域。域控制器Domain ControllerDC则是具体运行AD服务的Windows Server机器用户登录时就是找它来验证账号密码。用生活里的话打比方AD就像公司通讯录加上门禁系统合体域是公司名称域控是前台小姐姐——你进门要出示工牌账号密码验证她要查通讯录确认你是哪个部门的人组成员关系然后给你相应的门禁权限访问共享资源、登录哪些机器。搞清楚这层关系后后面每一步操作就有了方向搭建AD域 装一台Windows Server让它变成域控再让其他电脑认这个域。1.2 先做需求判断别一上来就装我见过不少小公司五六台电脑也要搞域控最后IT离职没人维护账号全锁在里面积灰。要不要上AD域核心看几个条件有没有集中管理账号的需求比如员工入职需要统一开通多个系统账号、离职要一键禁用有没有服务器和文件共享需要做统一权限分配而不是靠每台电脑本地账号各自为政有没有Windows组策略的需求比如统一桌面壁纸、禁用USB、统一安装软件公司规模和管理复杂度是否值得增加一台服务器和日常维护成本如果只是三五个人、几台电脑互传文件用工作组加共享文件夹更省事但如果你管理超过15到20台电脑和服务器或者公司有基本的信息化合规要求AD域基本是绕不开的基础设施。这篇教程面向的正是后一种情况。1.3 本次实操的环境规划我这次用的方案是一台Windows Server 2022当主域控另一台Windows Server 2019当额外域控做冗余客户端部分准备了一台Windows 11和一台Ubuntu 22.04做加域测试。实际生产环境版本不必追新但Server版本尽量不要低于2016因为MD5、RC4这类旧加密和旧协议在2012 R2及以下默认开得太松安全上已经是减分项。规划信息如下角色主机名IP地址DNS指向说明主域控DC01192.168.10.10127.0.0.1装AD DS、DNS承担GC额外域控DC02192.168.10.11192.168.10.10初期后期改回自身与DC01组成多域控环境Windows客户端PC01DHCP或静态192.168.10.10加入域Linux客户端Ubuntu01DHCP或静态192.168.10.10通过realmd加入域这里有个很多人踩的坑客户端和域控的DNS必须指向能解析AD域名的DNS服务器。AD域特别依赖DNS来定位域控所以DNS配置错了加域时常常报找不到域或者RPC服务器不可用。后面加域环节我会反复强调这一点。2. 从一台裸机到一个可用DC全程步骤拆解2.1 装系统时的几个关键选择安装Windows Server本身不难但有几个选项会影响后面域控的稳定性建议选桌面体验版本纯Server Core虽然省资源但新手在命令行里管理AD着实有点痛苦尤其是看图形化事件日志和组策略时很不直观计算机名安装前就定好比如DC01。装完再改虽然也能改但AD装好后改机器名非常麻烦会影响DNS记录和Kerberos认证系统分区建议至少60GB以上因为日后AD数据库NTDS.dit、SYSVOL共享和日志都会落在系统盘强烈建议物理机或虚拟机都用固定IP域控的IP变了会导致客户端找不到域控整个域形同瘫痪2.2 固定IP和DNS顺序错了后面全乱套装完系统第一件事不要急着去装AD角色先把TCP/IP属性配好。在网络和共享中心 → 更改适配器设置 → IPv4属性里设置IP地址192.168.10.10子网掩码255.255.255.0默认网关192.168.10.1按你实际网络填首选DNS127.0.0.1或192.168.10.10因为你装AD的同时会装DNS域控的DNS需要指到本地DC自己的IP这里有个细节有人会问AD没装之前DNS还没起来我把DNS填成自己的IP会不会有问题。不会AD角色安装完成后部署向导会自动配置DNS服务客户端查询时域控自己就能应答。就算一时半会DNS服务还没起来也只是暂时没法解析不会把系统搞坏。再给一个容易被人忽略的点域控DNS设置里千万不要把外部DNS比如8.8.8.8或223.5.5.5填到首选位置只能放转发器里。如果域控本身首选DNS指向外部DNS会造成内部域名解析混乱客户端加域时随机飘忽不定。外网解析通过DNS转发器解决而不是靠修改域控的网卡DNS。2.3 安装AD域服务角色并提升为域控制器接下来在服务器管理器里添加角色和功能选择基于角色或基于功能的安装选中当前服务器勾选Active Directory域服务按照提示一并安装安装完成后服务器管理器右上角会出现一个黄色感叹号提示将此服务器提升为域控制器点进去部署配置这一步是最关键的分两种情况如果是全新环境选择添加新林New Forest根域名填corp.example.com。注意这里别用纯内网单标签域名比如corp也别随便用公网已经存在的域名否则内部解析和证书申请都会出问题如果是给现有域加第二台域控选将此服务器添加到现有域我后面第六节单独讲设置域林功能级别时如果所有域控都是Server 2016或更高就选Server 2016级别如果有老系统按最低版本兼容后续。这里要的思想是功能级别只能升不能降所以没必要一开始追求最高选一个够用的级别就行。额外选项里DNS服务器默认勾选保持勾选因为AD域离不开DNS。下一步会让你指定NetBIOS域名默认会取用域名第一段CORP保持默认即可。数据库、日志和SYSVOL路径都放系统盘默认就行不需要折腾。之后会弹出DNS委派警告是新林部署的正常提示不用管它点下一步继续。最终核对无误后系统会提示重启。这一步完成后这台机器就已经是一台域控了。2.4 提升完成后的第一轮验证重启之后登录界面会变成要求按CtrlAltDelete而且登录选项里会存在域用户概念。注意用原机器的本地管理员登录时要选择其他用户然后用户名输入CORP\Administrator密码是你在域部署向导里设定的目录服务恢复模式DSRM密码对应的管理员密码不是原来的本地管理员密码。登录后建议做三轮检查确认域控真的健康打开Active Directory用户和计算机看能否正常显示域结构打开DNS管理器确认corp.example.com区域存在并且_registrations里已出现DC01的SRV记录命令行跑dcdiag /q如果输出为空或接近为空说明域控健康有报错就先解决再往下走我第一次搭域就是跳过验证直接加域结果客户端报找不到域控制器回头一查是DNS里的SRV记录没生成。多花几分钟验证后面能省几小时排查。3. Windows客户端加入域以及身份验证逻辑3.1 客户端DNS设置是加域的地基Windows机器加域网络配置上最重要的就是DNS。无论是静态IP还是DHCP分配客户端的首选DNS必须能解析你的AD域。最简单的方法把首选DNS设成192.168.10.10域控IP。如果你有内部DNS服务器也可以由它做条件转发但新手阶段不要整花活直接把客户端DNS指向DC01最稳。DNS对了之后加域才有戏。这一条后面所有报错排查第一条就是先查它。3.2 三种加域方式实际用起来差挺多第一种是通过图形界面系统属性 → 计算机名选项卡 → 更改设置 → 隶属于选择域 → 填corp.example.com → 输域管理员账号密码 → 重启。最直观但一次只能操作一台适合临时加个把台机器。第二种是命令行。我在给客户批量加域时最常用Add-Computer -DomainName corp.example.com -Credential CORP\administrator -RestartPowerShell会自动弹窗让你输密码也可以配合Get-Credential先取凭据。写完这条命令机器会尝试通过DNS找到域控并完成加域和创建计算机账号最后自动重启。比图形界面省不少鼠标点击也方便写到脚本里批量执行。第三种是无人值守加域可用于大批量系统部署。在sysprep的应答文件unattend.xml里配置JoinDomaincorp.example.com/JoinDomain配合部署工具新机器一出厂就是域成员。适合几十上百台电脑批量交付的场景。3.3 加域后需要注意的权限规则电脑加域成功后默认Domain Users组被添加到本地Users组Domain Admins组被添加到本地Administrators组。这条规则带来的实际影响主要有三点普通域用户默认可以登录这台域电脑要用组策略去限制哪些人允许登录域管理员一旦加入本地管理员组意味着域管在这台机器上有完全控制权千万别拿日常账号加域管理员组如果你的员工换机器登录第一次登录会新建一个用户配置文件桌面文件还没有这很正常别当成故障另外补充一句加域后本机本地账号依然存在原来的Administrator也能登录只不过默认策略下域用户和管理员优先级更高。出于安全考虑建议在组策略里禁用本地来宾账户并在合规要求高时禁用本地管理员远程登录。4. Linux客户端加入AD域SSSD方案实操4.1 为什么首选realmd加SSSDLinux加Windows域有好几种方案最老套的是直接改Kerberos配置文件加Samba的winbind配置繁琐不说坑也多。现在主流做法是用realmd配合SSSDSystem Security Services Daemon原因是realmd自动检测AD域并处理Kerberos票据和DNS查询SSSD会缓存用户凭据和组信息即使域控临时不可用Linux机器上的用户登录也不会立刻瘫掉与AD域认证、sudo、SSH直接集成配置思路比winbind简单很多适用场景很明确你手上有Ubuntu、CentOS、Rocky Linux这类服务器想让开发、运维人员直接用AD账号登录而不是每台机器都建一套本地账号。配置好后员工账号在AD里禁用Linux服务器也同步失效账号生命周期统一由AD管理。4.2 Ubuntu 22.04从零加入AD域先确保客户端的DNS指向域控然后安装必要的软件包sudo apt update sudo apt install realmd sssd sssd-tools sssd-ad libnss-sss libpam-sss adcli krb5-user安装过程中可能会提示配置Kerberos可以直接跳过后面的realm join会自动生成配置。接着查看域是否能被发现sudo realm discover corp.example.com这条命令会返回域信息、DC所在位置、支持的加密方式等。如果卡住大概率又是DNS没配好。确认DNS里能解析出DC记录后直接加入域sudo realm join corp.example.com -U administrator输入AD管理员密码没有报错后验证一下sudo realm list看到configured: kerberos-member就说明加域成功了。接着要让SSSD接管认证并允许AD域用户登录SSHsudo pam-auth-update勾选mkhomedir模块这样用户第一次SSH登录时系统会自动帮他们建家目录。再编辑/etc/ssh/sshd_config把相关的AllowUsers或AllowGroups规则加上然后重启SSH服务。如果希望只有特定AD组能登录在/etc/sssd/sssd.conf的[domain/corp.example.com]下加一行ad_access_filter (memberOfCNLinux_Admins,OUGroups,DCcorp,DCexample,DCcom)这个过滤规则的意思是只允许AD里Linux_Admins组的人通过SSSD认证登录这台Linux主机非常实用。4.3 域用户的sudo授权域用户登录后默认没有任何sudo权限。要授权给某个AD组用visudo编辑sudoers文件加一行%domain\ admins ALL(ALL) ALL注意AD组在sudoers里加百分号前缀空格要用反斜杠转义。如果组名和符号比较复杂也可以使用visudo里推荐的%CORP\.Linux\ Admins转义方式。改完配置后建议另开一个终端测试sudo避免误操作把自己锁出去。5. 域用户登录却进temp临时配置文件问题排查全过程5.1 典型的临时配置文件问题长什么样这是我帮人处理过最多的AD域故障类型之一。现象很扎心域用户输入正确密码登录Windows桌面弹出一条提示您已使用临时配置文件登录然后桌面壁纸没了、桌面上文件也没了看起来就像换了一台新机器。用户第一反应是数据丢了实际上数据还在原来的配置文件目录里只是Windows没加载到正确的Profile。临时配置文件机制是Windows的安全兜底设计系统发现某个用户配置文件无法正常加载时为了不让用户连桌面都进不去会临时创建一个临时Profile供登录使用但所有修改都不会保存回原Profile。5.2 从用户目录权限到注册表的完整排查遇到这个问题不要慌按下面的链路一步步来第一步先用域管理员登录这台电脑打开C:\Users看用户的真实配置文件目录是否还在。如果名字里带.tmp或者目录缺失说明原Profile路径已经损坏或被人动了手脚。第二步打开注册表regedit定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList这个键下面会列出一个个SID对应系统里所有用户。找到出问题用户的SID可以在命令行用wmic useraccount get name,sid查也可以按ProfileImagePath值对应用户名然后重点看两件事是否存在两个相似项一个正常项、一个带.bak后缀。出现这种情况通常是某次配置修复产生了副本ProfileImagePath是否指向C:\Users\用户名而不是指向其他怪异路径第三步修正权限。右击C:\Users\用户名目录属性 → 安全 → 高级确认所有者是CORP\用户名或Administrators然后给该用户完全控制。常见故障就是文件夹的ACL权限被重置或复制时丢了用户权限导致Windows无法写入配置文件于是启用临时Profile。5.3 修复中最容易翻车的几个细节处理注册表时我的建议是先把.bak项改名备份尽量不直接删除万一改错还能恢复。真正的修复操作有两种路径如果损坏的是本地文件的Profile目录把正常项里的ProfileImagePath确认正确后重命名C:\Users\用户名里的配置目录让用户重新登录生成新的Profile如果是AD用户且开启了漫游配置文件Roaming Profile还要检查\\dc01\SYSVOL\corp.example.com\Profiles里的共享文件夹权限还有一个特别坑的细节域用户在加域后的首次登录时DNS解析或域控连接正常但时间同步如果偏差超过5分钟Kerberos认证会失败Windows有时也会表现出配置文件加载异常。所以排查时顺手跑一下w32tm /query /status确认时间同步没问题不要一上来就埋头改注册表。6. 只有一台域控单点风险大第二台域控怎么加6.1 理解多主复制别再说什么主备域控很多工程师习惯性把第一台域控叫主域控第二台叫备域控这个说法其实很不准确。现代AD域控之间是**多主复制Multi-Master Replication**关系每台域控都持有AD数据库可写副本任何一台上的修改比如新建用户、改密码都会自动同步到域内所有域控。不存在所谓备域控只读的说法。那为什么还推荐部署第二台安装成额外域控为的就是高可用一台域控宕机另一台还能继续给用户提供认证、DNS解析和组策略更新服务。认证服务不同于文件服务用户每天上班第一个动作就是输入密码登录如果域控挂了全公司锁在门外这个后果多数公司承受不住。所以即便小环境至少也建议备一台额外域控。6.2 把第二台服务器提升为额外域控的实操过程在DC02上执行前面AD DS角色安装同样的操作。安装完角色后在提升向导的部署配置处选择将此服务器添加到现有域域名填corp.example.com点更改输入域管理员凭据。接着和单台域控部署一样设置功能级别自动继承现有域级别、DNS选项、数据库路径等。这里和新建域有一个明显区别向导会让你指定从哪里复制AD数据一般选任意默认的域控即可系统会从当前有数据的DC复制完整AD库过来。完成后重启。登录DC02打开DNS管理器检查是否自动生成了AD集成区域的副本再打开AD用户和计算机确认能看到环境。默认情况下DC02也会被设为全局编录GC不用额外处理。6.3 日常验证复制和切换的一些土办法第二台域控加完后不能就丢在那里不管。我有三个固定检查动作一是命令行执行repadmin /replsummary这个命令会汇总每台域控之间的复制状态。如果显示All replication requests were processed successfully说明复制正常。二是执行dcdiag /q确认没有新错误。如果输出里出现严重错误先用repadmin /showrepl定位是哪条复制链路断的。三是做一次模拟切换将客户端的首選DNS从DC01临时改成DC02然后用域账号登录一次确认DC02能正常认证。这一步直接验证了万一DC01挂了用户还能不能登录。多台域控环境下有一个内存里常驻的坑要特别提醒**修改AD对象时复制不是实时的默认站点内复制间隔是15秒但有些操作比如新建用户后马上给这个用户加组会受复制延迟影响极小概率出现找不到对象的情况。**别慌等几十秒重试即可不要重复点击创建导致出现多账号。另外删除DC02时应该在Active Directory站点和服务里主动降级退域而不是直接重装系统丢一台域控。直接格式化然后让AD元数据残留之后还要用ntdsutil清理残留对象既麻烦又容易出问题。正确的退域姿势是在要下线的域控上打开服务器管理器选择降级域控制器按向导执行完后再关机。7. 从实操坑里总结的几条建议如果让我只留几条最想告诉后来人的经验大概是这些第一域控机器的DNS配置是整片域的地基DNS错了后面所有加域、认证、组策略都跟着出问题而这类问题往往报错信息模糊排查时最容易绕远路。排查任何AD域故障第一件事永远是确认客户端的DNS指向了正确的域控或内部DNS。第二域控时间同步不是小事。域内机器的时钟如果和域控相差超过5分钟Kerberos票据验证直接失效现象可能是登录报错、加域失败、共享资源访问不了。务必在组策略里配置好W32Time自动同步让客户端跟域控走。第三账号权限分配一定要守规矩。不要把日常办公用户加进Domain Admins组不要用域管账号登录员工电脑操作业务系统域管账号就是钥匙钥匙只用来做管理动作用来开门进房间办杂事会留下大量安全隐患。第四做任何AD相关的修改先备份。改Schema、改Domain Admins组成员、改组策略对象这类高危操作前至少要做一次系统状态备份或AD快照。这不是小心过头而是真出问题时恢复成本远低于重建域的成本。关于AD域搭建和加域这篇文章已经把我实际踩过的、帮别人擦过的那些坑摊开讲完了。这些流程和检查项我自己在新环境里也一直照着走稳定省心。你照着这篇从头走到尾遇到问题也有排查方向了。做基础设施运维就是这样没有太多灵光一闪靠的是每一步按规矩来出了问题能顺着链路往下查。按这套方法把域搭起来再慢慢把组策略、权限分配、自动化批量加域这些做深整个AD环境就会越用越顺手。