在Windows Server系统中,一些服务必需要构建在域的环境中,这不仅是为了统一验证和资源共享,同时也是为了网络安全。为构建虚拟化测试,我们需要先搭建域环境。之前先来大概了解一下域。
在使用工作组时,计算机是相对独立的,工作组仅是网络中计算机分类的一种方式,在不在一个工作组中,对网络资源的访问影响并不大。工作组好比允许自由进出的免费停车场,加入工作组,好比你可以停在A区,也可以停在B区,如果停在A区,就与A区的其他汽车形成一个松散的组合。
在使用Windows域(Domain)时则不同,域是经过严格组织的,计算机加入域并且使用域账户登录才能访问某些共享资源。在域中至少有一台域控制器(Domain Controller, 简称DC)负责计算机和用户的验证工作。域好比收费停车场,需要刷卡验证才能进出(可以有多于一个门禁,即DC),但验证通过后即可使用里面的共享设施,甚至其他汽车。例如当你的计算机使用具有管理员权限的域账户成功登录后,就可以使用该域账户登录同域中其他计算机上Sql Server,那么你可以不再使用sa账户了。当然加入域的计算机并不代表只能呆在域中,如果只是用本地账户而非域账户登录,计算机和在工作组中没有什么不同。一般情况下,你的汽车可以停在收费停车场,也可以停在免费停车场,除非对汽车做了特别的限制(使用组策略可以限制计算机只能使用域账号登录)。你的计算机只使用本地账号登录,要想访问其他计算机上Sql Server,这时你无法使用Windows Authentication,但依然可以使用SQL Server Authentication,使用sa账户登录。
一、域测试网络
接下来我们在Window Server 2012中部署域,为以后需要,我们将连接域的网络称为管理网络,并以如下图参数配置网络。图中配置两个域控制器互为备份,虽然windows server 2003以后已经不再区分主域控和备份域控,但由于主机角色的客观存在,域控制器的作用还是有一定差别的,下文将讲述。
二、配置域控制器
Windows Server 上安装域控制器(Domain Controller, DC)是一件简单的事,但安装之前需要确认几件事:登陆账号是否拥有本地管理员权限,操作系统是否支持,TCP/IP是否配置正确,磁盘是否有NTFS分区和充足的空间以存放Active Directory(AD)数据库,DNS服务器是否支持等。另外最好预先修改计算机名称并重新启动,以免完成安装后再修改域控制器名称所带来的麻烦。
Windows Server 2008及以后版本都可以以角色的方式安装Active Directory 域服务(AD DS),并提升为域控制器。Windows Server 2008 中也可以直接在运行中使用dcpromo命令,进行AD域服务的安装和提升为域控制器。但Server 2012中dcpromo命令已经不被支持,所以在以角色的方式安装AD域服务后,可以在服务器管理界面上面的事件提示中找到提升为域控制器的链接。
关于具体安装域控制器的步骤不再赘述,网络中有很多网页已经对此进行了详细描述,但是关于域配置还需要深入了解下面的一些内容:
1、林(Forest)、域树(Tree)、域(Domain)和子域(Child Domain)
这些名词已经非常形象的解释了它们之间的关系,但还需说明的是:我们建立的第一个域是根域(Root Domain),于此同时也建立了第一个域树和第一个林,因而这个根域既是林根域也是树根域,因而在网络中建立全新的域时,其实就是建立一个新林,在配置域控的时候不要选错了。根域也是域,只是地位特殊,一个林中只有一个林根域,但可以有多个树根域。拥有共同命名空间的根域和子域构成域树,拥有不同命名空间的域树构成林。域树的名称与第一个域相同,林的名称与第一个域树相同,也与第一个域相同。因而域名称的选择是很重要的,搭建好域后修改域名称虽然可行,但是毕竟存在很大的风险。
如下图,我们根据 Assigning the Forest Root Domain Name 文章中的规则建立了两个林。如果你所在组织拥有两个通用域名,其中一个用于外部互联网,比如用于组织的网站首页,则另一个可以用于组织内部网络作为林的名称(即第一个域的名称),这样建立的林将和下图左侧的林x.com类似。如果只拥有一个通用域名,为了内外有别,可以建立一个二级域名用于内部网络作为林的名称,这样建立的林将和下图右侧的林cloud.z.com类似。使用通用域名的是为了方便林与林之间通过互联网建立信任关系,但如果在测试中可以使用任何符合域名规则的名称,我们的实验环境将使用cloud.z.com作为林名称。
2、DNS服务器、全局编录服务器(GC)和只读域控制器(RODC)
配置域控过程中会遇到选择这几个选项:DNS服务、全局编录服务器(GC)和只读域控制器(RODC)
3、AD数据库、日志文件和SYSVOL文件夹
Active Directory使用文件型数据库,数据库引擎是基于JET开发的Extensible Storage Engine(ESE),也叫做JET Blue。JET Blue计划用于升级Access的数据库引擎JET Red的,但却用于Microsoft的其他产品中,如AD,WINS,Exchange Server等。ESE有能力扩展至16TB容量,容纳10亿对象。数据库所有相关文件默认在%systemroot%\ntds\文件夹内,主要包括:
Active Directory使用SYSVOL文件夹(需要放置在NTFS分区中)在DC间共享公共文件,包括登录脚本和策略配置文件等。详细可参考 Sysvol and netlogon share importance in Active Directory
4、FSMO主机角色
Active Directory在多个域控制器(DC)间进行数据复制的时有两种模式:单主机复制模式(Single-Master Model)和多主机复制模式(Multi-Master Model)。
DC间数据复制多采用的多主机复制模式,即允许在任意一台DC上更新数据,然后复制到其他DC,当出现数据冲突时采用一些算法解决(如以最后被写入的数据为准)。多主机复制模式实现了DC间负载均衡和高可用的目的。但对一些数据多主机复制模式带来了难以解决的数据冲突或解决冲突需要付出太大代价的问题,这时Active Directory会采用单主机复制模式,即允许只有一台DC更新数据,然后复制到其他DC。这些数据主要由5种操作主机角色来承担更新的职责,这些角色可以被分配到林中不同DC中,这些角色也称为灵活的单主机操作角色(Flexible Single Master Operation, FSMO),他们分别是:
林级别(在林中只能有一台DC拥有该角色):
域级别(在域中只有一台DC拥有该角色):
5、功能级别
Active Directory新建林时需要确定林和域的功能级别,功能级别决定了Active Directory域服务(AD DS)的功能,也决定了哪些Windows Server操作系统可以被林和域支持成为域控制器。Windows Server在历次改版,也对Active Directory进行改进,形成了不同功能级别,更高的功能级别提供更多的功能,目前已有功能级别包括:Windows 2000 本机模式、Windows Server 2003、Windows Server 2008、Windows Server 2012等。
运行Windows Server 2008的操作系统上可以设定林和域的功能级别为Windows Server 2003,运行Windows Server 2003操作系统的服务器可以加入成为域控制器。但设定林和域的功能级别为Windows Server 2008,运行Windows Server 2003操作系统的服务器将无法加入成为域控制器,但运行Windows Server 2012操作系统的服务器可以。
另外设定的功能级别可以升级不能降价,域功能级别不能低于林的功能级别。
6、域信任
域信任就是在域之间建立一种关系,使得一个域中的用户可以在另一个域的域控制器上进行验证,但建立信任仅仅是为实现跨域访问资源提供了可能,只有在资源上对用户进行了授权才能最终实现跨域访问。
域信任分为单向和双向,单向就是我信任你但是你不信任我或者反之,双向就是相互信任。另外域信任可配置为具有可传递,就是我信任你所信任的(第三方),可传递的信任省去了在复杂域环境中配置信任关系工作。
同一个林中父域和子域默认存在双向的可传递的信任。域树之间默认存在双向的可传递的信任(Tree Trust),两个不同域树中的域之间可以建立快捷信任(Shortcut Trust),以加快验证过程。不同林之间可以建立林信任(Forest Trust)。
与其他使用Kerberos做验证的目录系统可以建立领域信任(Realm Trust)。与较老的NT4系统可以建立外部信任(External Trust)。
7、站点
理论上Windows域与物理网络拓扑无关,域中多个域控制器只要满足能够相互通信的条件,可以在同一个子网,也可以分属不同子网;可以在同一个物理位置,也可以分别在不同的物理位置。但域控制器以及域中的计算机之间的通信最终受制于物理的网络拓扑,如域控制器之间的复制和账户验证等与物理位置关系密切。
站点可以看成是域中高速连接的一组计算机,按物理位置将域控制器和计算机部署在不同站点内,可以提高域内域控制器间复制和账户验证的效率。例如一个域中,北京站点有两个域控A和B,上海站点有两个域控C和D,他们之间的复制如果按照BCDA的顺序复制,那将是没有效率的。按ABCD顺序,同一个站点内的域控相互复制,站点间只要复制一次即可。
三、测试和维护域
1、修改域控制器计算机名
修改域控制器计算机名不能简单的打开计算机属性直接进行修改,涉及域内名称解析,修改不当可能会造成找不到域控制器的麻烦。建议升级为控制器前先修改计算机名并重启计算机,如的确需要修改域控制器计算机名可以使用netdom命令。在Powershell命令行提示符下:
# Show all computer names of a DC
netdowm computername dc02.cloud.z.com /enumerate
# Change computer name of a DC from dc02 to dc03 netdom computername dc02.cloud.z.com /add:dc03.cloud.z.com netdom computername dc02.cloud.z.com /makeprimary: dc03.cloud.z.com # Restart the computer netdom computername dc03.cloud.z.com /remove:dc02.cloud.z.com
2、迁移FSMO角色
前文介绍了AD中5个FSMO角色,为在域中多个DC间合理部署这些角色,或者迁移DC时,我们需要考虑迁移FSMO角色。转移FSMO角色有两种方式,第一种通过GUI:
Windows 2012 中在“服务器管理器”菜单“工具”中开“Active Directory 用户和计算机”。默认情况下已经连接到域,在域名上右键选择“操作主机”,这里可以迁移RID、PDC和结构主机。
在“Active Directory 域和信任关系”右键选择“操作主机”,这里可以迁移域命名主机。
在“Active Directory 架构”右键选择“操作主机”,这里可以迁移架构主机。但是“Active Directory 架构”不会出现在服务器管理器中,我们需要事先注册 regsvr32 schmmgmt.dll,然后再mmc控制台中通过菜单“文件”添加“Active Directory 架构”管理单元,而后进行后续的管理。
第二种使用ntdsutil命令,过程中可以输入“?”以查询帮助:
# Show FSMO roles netdom query fsmo # Move FSMO roles from dc01 to dc03 ntdsutil roles connections connect to server dc03.cloud.z.com quit
transfer schema master
transfer naming master
transfer infrastructure master
transfer pdc
transfer rid master
quit
quit
3、清理AD元数据
当DC降级后,需要手动清除它在AD中的信息,可以使用utdsutil命令:
# Remove metadata of a DC that need to be deleted
ntdsutil
metadata cleanup
connections
connect to server dc03.cloud.z.com
quit
select operation target
list site
select domain 0
list domains
select domain 0
list severs for domain in site
# Select the DC that need to be deleted
select server 0
remove select server
quit
quit
4、迁移域控制器
从dc01到dc03迁移域控制主要包含以下几个步骤:
5、其他维护工具
ntdsutil.exe。ntdsutil.exe 是一个命令行工具,提供对 Active Directory 域服务(AD DS) 和 Active Directory 轻量目录服务(AD LDS)的管理功能。可以使用ntdsutil命令执行 AD DS 数据库维护、 管理和控制FSMO角色以及删除没有被正确卸载的域控制器的元数据。
adsiedit.msc。adsiedit用于编辑 Active Directory 中的单个对象或少量对象。在WS2012服务器管理器中的AD DS服务器右键菜单可以找到。
ldp.exe。ldp.exe用于管理 Active Directory 轻型目录服务 (AD LDS)