Windows活動目錄系列---ADDS複製的概述(2)

AD DS是如何處理複製衝突的?

因爲AD DS支持多主機複製模式,所以有可能會出現複製衝突的情況,一般會有三種可能的衝突:

  1. 在兩臺不同的DC上同時修改同一個對象的相同屬性的值

  2. 在一臺DC上新增或者修改一個對象,而同一時間在另外一臺DC上這個對象所在的容器被刪除了

  3. 在不同的DC上向同一個容器中新增了一個有相同的相關可分辨名的對象,比如在DC1和DC2上同時新增了一個賬號,DC1上新增的是張珊,DC2上新增的是張山,但是他們的可分辨名稱DN都是CN=zhangshan,CN=Users,DC=contoso,DC=com,這樣就會出現衝突問題了。

爲了最小化上述的衝突發生,林中所有DC基於屬性或值來記錄和複製那些變更的對象,而不是基於對象。因此在不同DC上同時變更對象的兩個不同屬性是不會產生衝突的,比如在兩臺不同的DC上,一臺變更了用戶密碼,另一臺變更了郵政編碼,這樣的情況下是不會有衝突問題。當DC上有對象發生了一個變更操作後,這個變更會和一個簽章一起傳遞給其他的DC,簽章中含有以下的組件:

  1. 版本號。每個對象屬性的版本號都是從1開始,每次更改屬性後都版本號會自動加1.當對象屬性進行了一次修改後,現有的版本號會比之前的版本號大1

  2. 時間戳。時間戳表示更新的發起時間和日期,它參照的是發生變更的DC上系統時鐘的時間。

  3. 服務器全局唯一標示符。服務器的全局唯一標示符用來標示出發起更新的那臺DC,也就是數據變更的源DC。


下面我們看看AD DS如何解決我們上述的3種衝突問題

  1. 屬性值衝突

    如果版本號的數值是一樣的,但是對象的屬性值不同,那麼會去評估時間戳。誰的時間戳值高,就會應用誰的變更數據,如果時間戳也一樣,那麼就會通過服務器GUID來判斷,誰的GUID值越小,誰的變更數據就會被應用。

  2. 在已刪除的容器中更新數據

    在所有DC上,執行了刪除動作的容器會被刪除,但是容器內對象的變更會保存在目錄分區中的LostAndFound容器中,這個過程中不會涉及到簽章的對比。

  3. 新增對象時使用了相同的相關可分辨名稱。參照屬性值衝突的判斷方法後,只會有一個對象使用這個相關可分辨名稱,然後ADDS會讓DC指派給另一個對象一個唯一的相關可分辨名稱,這個相關可分辨名稱的命名規則是 相關可分配名稱+CNF:+ *(一個保留字符)+對象的GUID,這種命名規則保證了新生成的名稱不會和其他的對象名稱發生衝突。


複製拓撲是如何生成的?

複製拓撲指的是複製數據在網絡中傳遞時的路由。要創建複製拓撲,AD DS必須確定那臺DC會和其他的DC進行數據的複製。AD DS根據AD DS中包含的信息創建複製拓撲,因爲每一個ADDS分區都可能被複制到站點的其他不同DC中,所以架構分區、配置分區、域分區和應用程序分區它們的複製拓撲都是不同的。

因爲林中的所有DC共用一個架構和配置分區,所以ADDS會將架構分區和配置分區複製到所有的DC中。同一個域中的DC則會使用相同的域分區,另外擁有應用程序分區的DC之間也會互相複製它們的應用程序分區。爲了優化這些複製的流量,對於不同的分區一臺DC可能會有多個複製夥伴。在單站點環境中,複製拓撲具有容錯和冗餘功能,如果站點中有兩臺以上的DC,每一臺DC至少會有兩個複製夥伴。

架構分區的複製方式:

架構分區和配置分區的複製過程其他分區的複製過程是一樣的,但是這兩個分區是林範圍的,所以在任意的兩臺DC上都有用於複製這兩個分區的連接對象,不論這些DC所屬的域是什麼。說的更直白一點,就是林中所有的DC都會包含在這兩個分區的複製拓撲中。

全局目錄(GC)對複製的影響:

配置分區包含了整個林中的站點拓撲和所有域的全局數據,ADDS通過正常的林範圍的複製方式,將配置分區複製到素有的DC上,每臺GC通過連接某個域中的一臺DC,然後從這臺DC上獲取域中對象的部分屬性信息,每臺GC都對自身域中的域分區擁有完全訪問權限,因此它不需要請求獲得自身域中的對象的部分屬性。配置分區還會向DC提供一個林中GC服務器的列表,GC會在林的根域DNS區域註冊DNS的記錄,這些記錄也只會在林的根域DNS區域被註冊,它們會用來幫助林中的客戶端和服務器找到GC服務器,讓客戶端和服務器能夠正常的登陸使用。


RODC是如何進行復制的?

前面我們有提到,DC會通過從其他DC上拉取變更數據進行數據複製,但是RODC是不允許任何非主動的複製寫入到它的數據庫中,比如DC1有數據變更,但是它沒有通知RODC有數據變更要進行復制操作,RODC是不能從DC1上拉取這些變更數據到自己的數據庫的,另外RODC也不會向其他DC複製數據,也就是說RODC是隻進不出的複製。由於RODC自己是無法更改數據的,那麼其他的DC就不需要從RODC上拉取變更數據。限制RODC對數據庫的寫入,可以防止惡意的用戶或應用程序變更或篡改數據庫內容,並通過正常的複製過程將錯誤的數據複製到林中其他的DC。

當用戶或應用程序試圖在RODC上對數據庫執行一個寫入請求的時候,會觸發下面列舉行爲中的某一種行爲:

  1. RODC將寫入的請求轉發給一臺可寫的DC,然後可寫DC將變更了的數據複製給RODC,這種行爲的例子有:密碼變更,SPN更新,計算機或域成員的屬性變更。

  2. RODC會迴應客戶端並提供一個可寫DC引用給客戶端,然後應用程序能夠直接與可寫DC通信。LDAP就是一種RODC引用。

  3. 寫入操作失敗,因爲RODC沒有轉發也沒有提供可寫DC的引用。

當你部署了一臺RODC,KCC會檢測到這臺DC配置的是一個只讀的副本,因此KCC會從一臺或者多臺DC建立一條單向的連接對象,因爲RODC是windows 2008及以上版本才引入的新功能,所以這些DC的操作系統必須是windows 2008以上的版本。

針對某些任務,RODC會使用單對象複製的操作來執行傳入複製,這個操作不是按照標準的複製計劃進行的,它是根據需求發起的複製。這些任務包括:

密碼變更請求

客戶端通過RODC引用的一個可寫DNS服務器進行DNS更新,RODC會嘗試使用單對象複製操作來將更新的DNS數據拉取到自己的DNS中,這個情況僅允許在使用了AD集成DNS區域的環境中操作。

更新多個客戶端屬性,包括計算機名,DNS主機名,操作系統名稱,操作系統版本信息,可支持的加密類型和最近登錄時間屬性。


AD DS的SYSVOL文件夾是如何複製的?

SYSVOL是一個文件和文件夾的集合,每臺DC都有這個文件夾,它連接到每臺DC的%systemroot%\sysvol位置。SYSVOL中包含了登錄腳本和組策略相關的對象,例如組策略模板。SYSVOL文件夾中的內容會利用連接對象拓撲和KCC的複製計劃,將內容複製到域內的每臺DC上。

SYSVOL的變更在DC之間複製是依賴於DC的操作系統版本,域的功能級別,SYSVOL的遷移狀態,FRS或者DFS複製方式來決定的,Windows Server使用的主要是FRS複製方式。

2003R2和更舊版的域結構中,FRS在容量和性能上都有限制,所以引入了DFS複製。在域功能級別爲2012R2的域中,2012R2的DC不再使用FRS複製數據。如果林功能級是windows server 2008R2或以上版本,那麼將會使用DFS複製。Server 2012R2的DFS複製有一個新功能:DFS數據庫克隆,不過這個功能不能用在AD的SYSVOL文件夾複製上,SYSVOL複製必須使用DFS初始複製。(林功能級可以低於域功能級,但是域功能級一定不能低於林功能級,比如林是2008R2級,域可以是2008R2以上的級別,但是不允許是2008R2以下的級別)

在Windows2008和更高級別的域中,你可以使用DFS複製去對SYSVOL文件夾的內容進行復制,DFS複製支持計劃複製和帶寬控制,而且它可以結合遠程差分壓縮功能,在執行DFS複製的時候只複製文件中增量數據,降低了複製過程中的帶寬使用率。如果在SYSVOL中有文件發生了變化,DFS複製會自動的將文件變化的地方複製到其他DC的SYSVOL文件夾中。

注意:你可以使用dfsrmig.exe工具去將SYSVOL複製方式從FRS更改成DFS複製,但是必須在域功能級別至少是Windows2008的情況下纔可以遷移成功。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章