一、域控制器中的FSMO角色
FSMO是Flexible single master operation的縮寫,意思就是靈活單主機操作。營運主機(Operation Masters,又稱為Flexible Single Master Operation,即FSMO)是被設置為擔任提供特定角色信息的網域控制站,在每一個活動目錄網域中,至少會存在三種營運主機的角色。但對於大型的網絡,整個域森林中,存在5種重要的FSMO角色,而且這些角色都是唯一的。
1.1、森林級別
說明:一個森林只存在一台DC有這個角色。
1)Schema Master(也叫Schema Owner):架構主控
2)Domain Naming Master:域命名主控
1.2、域級別
說明:一個域里面只存在一台DC有這個角色。
1)PDC Emulator:PDC仿真器
2)RID Master:RID主控
3)Infrastructure Master:基礎架構主控
二、FSMO角色的作用
2.1、 Schema Master
作用:修改活動目錄的源數據。在活動目錄中,存在着各種各樣的對像,比如用戶、計算機、打印機等,這些對像有一系列的屬性。活動目錄本身就是一個數據庫,對象和屬性之間就好像表格一樣存在着對應關系,那么這些對像和屬性之間的關系是由誰來定義的呢?答案就是Schema Master。如果大家部署過Exchange的話,就會知道Schema是可以被擴展的,但是需要注意的是:擴展Schema一定是在Schema Master進行擴展的,在其它域控制器上或成員服務器上執行擴展程序,實際上是通過網絡把數據傳送到Schema上,然后再在Schema Master上進行擴展,而要擴展Schema,必須具有Schema Admins組的權限才可以。
建議:在占有Schema Master的域控制器上不需要高性能,一般來說,我們不會經常對Schema進行操作的。假如是經常會對Schema進行擴展,那必須要保證可用性,否則在安裝Exchange或LCS之類的軟件時會出錯。
2.2、Domain Naming Master
作用:管理森林中域的添加或者刪除。假如要在現有森林中添加一個域或者刪除一個域的話,那么就必須要和Domain Naming Master進行聯系,如果Domain Naming Master處於Down機狀態的話,你的添加和刪除操作肯定會失敗的。
建議:對占有Domain Naming Master的域控制器同樣不需要高性能,一般來說,我們不會經常在森林里添加或者刪除域的。當然高可用性是有必要的,否則就沒有辦法添加或刪除森林里的域了。
2.3、PDC Emulator
從Windows 2000域開始,不再區分PDC還是BDC,但實際上有些操作則必須要由PDC來完成,那么這些操作在Windows 2000域里面怎么辦呢?那就由PDC Emulator來完成,主要是以下操作:
1)處理密碼驗證要求
在默認情況下,Windows 2000域里的所有DC會每5分鍾復制一次,但也有一些情況是例外的,比如密碼的修改。一般情況下,一旦密碼被修改,會先被復制到PDC Emulator,然后由PDC Emulator觸發一個即時更新,以保證密碼的實時性。當然,實際上由於網絡復制也是需要時間的,所以還是會存在一定的時間差,至於這個時間差是多少,則取決於你的網絡規模和線路情況。
2)統一域內的時間
微軟活動目錄是用Kerberos協議來進行身份認證的。在默認情況下,驗證方與被驗證方之間的時間差不能超過5分鍾,否則會被拒絕通過,微軟這種設計主要是用來防止回放式攻擊。所以在域內的時間必須是統一的,這個統一時間的工作就是由PDC Emulator來完成的。
3)向域內的NT4 BDC提供復制數據源
對於一些新建的網絡,不大會存在Windows 2000域里包含NT4的BDC的現象,但是對於一些從NT4升級而來的Windows 2000域卻很可能存有這種情況,這種情況下要向NT4 BDC復制,就需要PDC Emulator。
4)統一修改組策略的模板
5)對Windows 2000以前的操作系統(如Win98)的計算機提供支持
對於Windows 2000之前的操作系統,它們會認為自己加入的是NT4域,所以當這些機器加入到Windows 2000域時,它們會嘗試聯系PDC,而實際上PDC已經不存在了,所以PDC Emulator就會成為它們的聯系對象。
建議:從上面的介紹可以看出,PDC Emulator是FSMO五種角色里任務最重的,所以對於占用PDC Emulator的域控制器要保證高性能和高可用性。
2.4、RID Master
1)在Windows 2000的安全子系統中,用戶的標識不取決於用戶名,雖然我們在一些權限設置時用的是用戶名,但實際上取決於安全主體SID。所以當兩個用戶的SID一樣的時候,盡管他們的用戶名可能不一樣,但在Windows的安全子系統中會把它們認為是同一個用戶,這樣就會產生安全問題。
2)在域內的用戶安全SID=Domain SID+RID,那么如何避免1)描述的安全問題?這就需要用到RID Master。RID Master的作用是:分配可用RID池(地址塊)給域內的DC以防止安全主體的SID重復。需要注意的是,每次分配的RID地址塊,只可以創建500個用戶。
建議:對於占有RID Master的域控制器,其實也沒有必要一定要求高性能,因為我們很少會經常性的利用批處理或腳本向活動目錄添加大量的用戶。
2.5、Infrastructure Master
FSMO的五種角色中最無關緊要的可能就是這個角色了,它的主要作用是:用來更新組的成員列表,因為在活動目錄中很有可能有一些用戶從一個域(Domain)轉移到另外一個域(Domain),那么用戶的DN(DomainName)名就會發生變化,這時其它域對於這個用戶的引用也要發生變化。這種變化就是由Infrastructure Master來完成的。
建議:其實在活動目錄森林里僅僅只有一個域或者森林里所有的域控制器都是GC(全局編錄)的情況下,Infrastructure Master根本不起作用,因此一般情況下,對於占有Infrastructure Master的域控制器往往忽略高性能和高可用性。
三、正常遷移操作主控
背景說明:接域學習筆記十三:將域控制器遷移到新買的服務器,DC1從主域降級之后,主控自動會轉移到副域DC2上,然后sales01更名為DC1安裝成了域控制器。現在要把操作主控遷移到新服務器DC1上。
3.1、RID、PDC、基礎結構更改
1)使用域管理員登錄DC2,打開服務器管理器,點擊"工具",然后選擇"Active Directory 用戶和計算機"。

2)對着域名linkto.com點擊"右鍵",選擇"操作主機"。

3)可以看到,RID、PDC、基礎結構的操作主機都是DC2.linkto.com。



4)從上面幾張圖可以看到,操作主機和當前的域控制器是一樣的,沒辦法做更改,所以此時需要先連接到DC1的域控制器。對着Active Directory 用戶和計算機點擊"右鍵",點擊"更改域控制器"。

5)選擇DC1的域控制器,點擊"確定"。

6)此時我們再進來"操作主機",就可以順利更改RID、PDC、基礎結構的操作主機了。



3.2、域命名主控更改
此時,還有域命名主控和架構主控沒有更改過來。
1)單擊服務器控制器的工具菜單欄,選擇"Active Directory 域和信任關系"。

2)對着Active Directory 域和信任關系點擊"右鍵",選擇"操作主機"。

3)點擊更改。

3.3、架構主控更改
1)架構主控在服務器管理器的工具菜單欄下面沒有對應的功能,此時,在運行窗口輸入"mmc"調出管理控制台,在"文件"工具欄下點擊"添加/刪除管理單元",也沒有架構主控的相應操作。

2)此時,先要注冊一下schmmgmt.dll才能在管理控制台中添加架構主控。使用Win+R調出運行窗口,輸入:
regsvr32.exe %systemroot%\system32\schmmgmt.dll
然后點擊回車:

3)現在再在運行窗口輸入"mmc"調出管理控制台,點擊"文件",選擇"添加/刪除管理單元"。此時,可以看到架構主控項已經有了。

4)點擊"Active Directory 架構",然后點擊"添加",再點擊"確定"。

5)對着Active Directory 架構點擊"右鍵",選擇"操作主機"。

6)可以看到,當前的架構主機屬於DC2控制器。

7)由於當前的架構主機和域控制器是同一台機器,因此更改不了。回到管理控制台,對着Active Directory 架構點擊"右鍵",選擇"更改 Active Directory 域控制器"。

8)選擇DC1域控制器,點擊"確定"。

9)此時再回到操作主機那里,點擊"更改"即可。

四、強制遷移操作主控
背景說明:假如操作主控這台服務器DC1硬盤徹底壞了或者被盜了,那域中就沒有操作主控了,此時可以使用命令的方式強制遷移操作主控到DC2上。
1)首先,將DC1關機模擬服務器徹底壞了。在DC2這台副域上,使用Win+R調出運行窗口,輸入"cmd"調出命令操作符窗口。
2)依次輸入以下命令:
ntdsutil
roles
connections
connect to server DC2.linkto.com
quit
?

3)爭奪PDC。在命令符中輸入並回車:
Seize PDC
彈出窗口點擊"是"。

4)相同的道理,輸入以下命令爭奪其它主控。
Seize RID master
Seize infrastructure master
Seize naming master
Seize schema master
5)題外的話:從下圖可以看到,假如主控徹底壞了聯系不上了,使用的是Seize開頭的命令,假如主控還聯系得上的情況下,使用的是Transfer開頭的命令。

參考自:
