身边搞运维的朋友经常会被同一个问题问住:公司上百台电脑,入职要建账号、离职要删权限、重置密码还得一台台远程,碰上软件统一安装更是想撞墙。其实这些问题,只要把AD域用起来,大部分都能变成“点几下鼠标的事”。AD全称Active Directory,也就是活动目录,是微软给出的企业级身份与策略管理方案,早期的核心形态就是“域”,所以我们平时常听见的“加域”“域控”“域账号”,都是围绕这一套体系在转。
这篇博文我打算把AD域从原理到落地完整讲一遍:先说明白域到底解决什么问题、林和树还有组织单位这些名词都是干嘛的;然后带你从零搭建一台域控制器,把Windows和Linux客户端都拉进域里;再把组策略推送软件、统一卸载软件这些日常高频率操作拆开讲清楚;最后把“域服务当前不可用”、加域报错、域控突然断电等事故的排查套路整理成一份可以直接照做的速查表。内容不搞学术派,全部按实际运维能落地的方式写,适合刚接手企业网络的同事,也适合被各种域报错折磨过、想系统补课的朋友。
1. AD域的整体设计与核心原理
1.1 域要解决的问题:把“管终端”变成“管中心”
在没有域的网络里,最常见的是工作组(Workgroup)模式。每台电脑自己维护自己的本地账号和密码,文件服务器要共享,就在每台机器上分别设置访问账号。机器数量不超过十台时,这种模式勉强能忍;一旦超过五十台、一百台,维护成本会以恐怖的曲线上升。你给离职员工删账号,发现他可能在某几台机器的共享权限里还留着记录;你重置某个员工的密码,得远程登录他的电脑,或者等他自己报障;你想给全公司电脑装一个软件,就只能一台台传安装包、一台台点下一步。
AD域的思路刚好相反:把身份信息和策略配置全部集中到一台或多台域控制器上。用户登录任何一台加入域的电脑,都是在跟域控制器做认证,不再依赖本地账号;文件服务器的权限按域用户组来分,不用在终端上反复设置;是否允许装软件、是否限制U盘、桌面壁纸是否统一,都由域控制器通过组策略集中下发。终端设备就算彻底坏了,换一台新电脑装好系统再重新加一下域,账号权限和软件策略会自动恢复。这种模式的核心变化,就是把管理控制点从“终端”上移到了“中心”上,小到几十人、大到几千人的网络,维护思路都是一套。
1.2 林、树、域、OU:一张图理清管理边界
刚接触AD的人很容易被一堆名词劝退,其实这些概念没那么玄乎。可以把整个AD体系想象成一棵倒着长的树:
**域(Domain)**是管理边界,也是安全边界,一个域内的账号、密码策略、权限配置可以统一管理,例如corp.example.com。绝大多数中小企业只用一个域就够了。
**域树(Tree)**是由多个有父子关系的域组成的连续命名空间,比如总部用example.com,分公司用cn.example.com、hk.example.com,这两个子域和根域之间天然存在信任关系。
**林(Forest)**是树的顶层容器,一棵或多棵域树构成一个林。林才是整套AD体系中真正的安全边界,林之间的信任默认不建立,林内部则可以通过信任关系互相访问。
**域控制器(DC)**就是安装了AD DS角色、保存着目录数据库的Windows Server服务器。一个域可以有多台域控,互为备份、分摊认证压力。
**OU(Organization Unit,组织单位)**相当于域里的“文件夹”,可以按部门、按地理位置建OU,然后把用户和电脑分门别类放进去。OU最大的实用价值是给组策略界定作用范围,比如“销售部”OU链接一套只对销售部生效的壁纸策略。
**组策略(GPO)**是把“密码至少12位”“禁用U盘”“统一安装某软件”“映射网络驱动器”等配置集中下发的载体,可以链接到整个域,也可以只链接到某个OU。
1.3 域背后的三根柱子:LDAP、DNS、Kerberos
域能跑起来,依赖三个底层协议,缺一个都会出现各种诡异故障。
**LDAP(轻量目录访问协议)**是AD读写的“通用语言”。AD本质上是微软自研的目录数据库,里面存着用户、计算机、组这些对象,而LDAP就是客户端和域控之间查目录的标准协议。你平时在“Active Directory 用户和计算机”里点开一个用户,后台本质上就是在对目录数据库执行LDAP查询。
DNS是AD的“定位系统”。这是很多新手最容易忽略的部分。域控在安装时会自动把自己注册到DNS里,包括LDAP、Kerberos、全局编录这些服务的SRV记录。客户端加入域、登录域账号时,首先通过DNS找到域控的IP,再发起认证请求。所以一旦DNS里的SRV记录损坏或者DNS指向错误,加域和登录就会报“找不到域控制器”,哪怕网络能ping通也无济于事。
Kerberos是凭证验证的核心,也是微软默认的身份认证协议。它的流程可以简化理解成三层盖章:客户端向认证服务申请“票据”,认证服务发一张用密码哈希加密的“门票”,客户端拿“门票”去访问文件服务器或应用服务器,对方不用再问密码,只验证票据是否有效即可。这样密码不会在网