"

快彩软件-快彩软件官网-快彩软件首页-首页拥有全球最顶尖的原生APP,每天为您提供千场精彩体育赛事,快彩软件-快彩软件官网-快彩软件首页-首页更有真人、彩票、电子老虎机、真人电子竞技游戏等多种娱乐方式选择,快彩软件-快彩软件官网-快彩软件首页-首页让您尽享娱乐、赛事投注等,且无后顾之忧!

"
首頁 > [原創][分享]如何將基於 Windows Server 2008 R2 完整安裝的林根域通過不使用 System State 恢復來實施 Active Directory Disaster Recovery 到不同硬件配置的機器

[原創][分享]如何將基於 Windows Server 2008 R2 完整安裝的林根域通過不使用 System State 恢復來實施 Active Directory Disaster Recovery 到不同硬件配置的機器

互聯網 2021-04-16 21:49:43

本文將介紹一種儅基於 Windows Server 2008 R2 完整安裝的域所有 DC 崩潰後,通過之前手動建立的備份(介於 System State 和 ifm 之間的一種備份)在新機器(虛擬機)中恢復域核心功能的一種方法。由於實驗環境所致,實驗用環境基於單一林根域(只有一個站點, 沒有子域, 沒有同其他域之間信任關係),但應該對更複雜的域環境有效,至少是有幫助作用。

1 總體說明

本文介紹的 Disaster Recovery 方法有兩個點考慮,一是能夠將承載 FSMO 角色的系統還原到新機器上,而不是與崩潰機器硬件配置一致的機器。放置與 DC 機器配置相同的機器可能不是很現實,與其作爲備份,還不如做為額外 DC。二是盡可能縮小備份數據的大小,Windows Server 2008 R2 的 System State 備份實在是太大了,不方便備份和存儲。

基於這兩點,我經過不斷嘗試,終于摸索出一種將 Active Directory 必要備份還原到不同硬件配置的機器上,不會發生 BSOD,能夠啓動 Active Directory,能夠進行後續提升 DC 的必要操作,以完成整個 Active Directory Disaster Recovery 過程。

重要説明:

此方法只適用於域所有 DC 均崩潰,且沒有其他方法可用的情況下,才應考慮這個方法。需自擔風險。用於測試的 Active Directory 的林和域功能級別均為 Windows Server 2003,兩臺 DC01 和 DC02,IP 分別爲 192.168.10.10 和 192.168.10.11,域名 contoso.com。虛擬機爲 VMware Player。?2 具體恢復步驟

2.1 製作備份

本地或遠程登錄到具有 PDC 角色的 DC 上。依據 Active Directory 最佳實踐的建議,一般將 Schema、 Naming、 PDC, RID Manager 四個 FSMO 角色都由一臺 DC 持有。

為了能夠方便存放備份所需文件,以及保留部分文件的權限設置信息,首先需要建立一個虛擬硬盤文件(VHD)。從方便描述考慮,此處通過 diskpart 創建一個基於 NTFS 文件系統的虛擬硬盤文件。

在開始菜單的搜索框、運行框,或命令提示符運行 diskpart,並執行以下若干命令

創建虛擬硬盤文件

create vdisk file=D:\tmp\dc01.vhd maximum=512 type=expandable

上述命令中的虛擬硬盤名稱,文件大小,以及是否為動態擴展,除了文件名稱盡量不用中文(方便輸入), 文件大小不建議小於 512 MB (依據實際情況而定)外,並無特別要求。

attach vdisk

附加虛擬硬盤

list disk

列出已有硬盤,確定虛擬硬盤已經附加了。選中的硬盤所在行最左側有一個半角星號。

create partition extend create partition logical

創建擴展和邏輯分區,其實也可以創建主分區,只是因為這個硬盤用於存放恢復用文件,並不引導系統,所以選用擴展和邏輯分區。

list partition

列分區,確定選中地是新建的分區。選中的分區所在行最左側有一個半角星號。

format quick fs=ntfs

格式化分區。

list volume

列卷。確定選中地是剛被格式的卷。選中的卷所在行最左側有一個半角星號

assign

為選擇的卷指派一個盤符

list volume

確定指派的盤符是什麼。

detach vdisk

可以去掉附加虛擬硬盤,也先可以不執行此操作,而是立即執行後續操作。

如果執行了此操作, 則執行?

exit

退出 diskpart 實用工具.

儅創建好 VHD 文件後,就可以創建備份文件了。

在開始菜單的搜索框,運行框,或命令提示符運行 ntdsutil 實用工具,並執行如下命令:

進入 snapshot 功能

snapshot

啟用默認實例 NTDS

activate instance ntds

製作快照

create

當快照製作完成後,記住生成的 {GUID} 字符串,後面會用到

查看所有快照

list all

掛載之前創建的快照,可以通過 list all 列出的數字索引或之前生成的 {GUID}

mount %s

%s 表示數字索引或 {GUID}

掛載快照後,不退出 ntdsutil。

現在就可以開始製作備份了

先在之前創建的虛擬硬盤創建一個目錄,這裡是 dc01。如果沒有掛載請先掛載。

現在就可以執行命令備份數據了,假設卷為 F:。

cd /d F:\dc01

robocopy C:\$SNAP_????\Windows\NTDS NTDS -copyall -dcopy:t -s -e

其中 C:\$SNAP_???? 為掛載的快照

robocopy C:\$SNAP_????\Windows\SYSVOL SYSVOL -copyall -dcopy:t -s -e -xjd

其中參數 -xjd 排除了交接點。

如果不是特別熟悉 SYSVOL 兩個交接點的對應關係,可以在備份中放置一個文件 link.txt。

"C:\Windows\SYSVOL\staging areas\DOMAINDNSNAME" "C:\Windows\SYSVOL\staging\domain""C:\Windows\SYSVOL\sysvol\DOMAINDNSNAME" "C:\Windows\SYSVOL\domain"

來輔助記憶。

robocopy C:\$SNAP_????\Windows\sysem32\dns dns -copyall -dcopy:t -s -erobocopy C:\$SNAP_????\Windows\sysem32\config config -copyall -dcopy:t -s -e

到現在主要文件就已經進行了備份。你可以額外執行命令

dism -online -get-features -format:table > features.txt

備份當前系統已經啓用的功能列表。

這時可以卸載虛擬硬盤,並且在 ntdsutil 執行命令

unmount %s

卸載快照。至於是否需要刪除快照,依實際需求而定。如果要刪除,則執行

delete %s

2.2 新建用於 Disaster Recovery 的虛擬機

接下來在虛擬機安裝 Windows Server 2008 R2,自然語言版本一致,必須選擇完全安裝,不得是 Server Core,至於具體版本可以與原系統不一樣,但不得低于 Standard。此外在網絡設置方面,虛擬機網段需要與原的系統一致。

2.3 爲 Disaster Recovery 最後的準備工作

設置與原來相同的計算機名

netdom computername . -add:dc01.contoso.comnetdom computername . -makeprimary:dc01.contoso.com

確認輸入無誤後,然後重啓系統.

重啓完成後,執行命令

netdom computername . -enumerate

獲得原始名稱,然後用

netdom computername . -remove:OldName

刪除原始名稱。

接下來啓用重建域必須的功能

dism -online -enable-feature -featurename:DirectoryServices-DomainController -featurename:DNS-Server-Full-Role -featurename:NetFx3

其實默契情況下隨 AD 安裝的功能,還有 Microsoft-Windows-GroupPolicy-ServiceAdminTools-Update, 但從我的測試看,并啓用該功能并不影響恢復。

接下來在係統盤建立一個目錄, 比如 C:\tmp

mkdir C:\tmp

建立完成後,開始備份該系統的驅動程序名稱列表, 以下爲備份步驟

cd /d C:\tmpmkdir drv_listsc query type= driver state= all | find /i "service_name" > tmp.txtfor /f "tokens=2 delims=:" %n in (tmp.txt) do @echo %n >> drv.txtdel tmp.txt

後續會用到這個 drv.txt 文件

現在可以重啓電腦,并進入到 Windows Server 2008 R2 安裝盤的 Windows PE 環境了。

2.4 開始進行 Disaster Recovery

當進入到 "安裝 Windows" 向導窗體時,按 Shift+F10 鍵調出 cmd。

通過 mountvol 或 diskpart,結合 dir 命令。找出系統所在盤符。

通常來説,盤符 C: 是隱藏的 100M 啓動盤。經過查找本例的系統盤盤符是 E:

先更改一下系統環境變量 PATH

set path=%path%;E:\Windows\system32

現在進入 E:,并備份原有協調配置目錄 config

cd /d E:\Windows\system32robocopy config config.bak -copy:dat -dcopy:t -s -e

以防止後續錯誤修改注冊表設置導致恢復失敗。

確認備份完成後,刪除現有 config 目錄。

rmdir config /s

現在掛載存有恢復文件的 VHD 虛擬磁盤。本例該 VHD 文件所在盤符爲 D:

以下爲掛載命令

select vdisk file=d:\dc01.vhdattach vdisk

可以

list volume

檢查是否存在盤符,如果沒有,則通過

select volumeassign

命令指派盤符。

本例虛擬硬盤的盤符爲 G:

最後執行

exit

退出 diskpart。

現在就可以進行恢復操作了。

首先恢復 NTDS 和 SYSVOL 目錄。

cd /d E:\Windowsrobocopy G:\dc01\NTDS NTDS -copyall -dcopy:t -s -erobocopy G:\dc01\SYSVOL SYSVOL -copyall -dcopy:t -s -e

因爲 SYSVOL 目錄至少包含兩個目錄交接點,所以還需要創建它們。首先執行

mkdir "C:\Windows\SYSVOL\staging\domain"mkdir "C:\Windows\SYSVOL\domain"

然後

cd /d "SYSVOL\staging areas"mklink /j contoso.com "C:\Windows\SYSVOL\staging\domain"cd /d "..\sysvol"mklink /j contoso.com "C:\Windows\SYSVOL\domain"

現在就完成了 NTDS 和 SYSVOL 的恢復。如果對目錄關聯記不清的話,可以參考 G:\dc01\link.txt。

接著恢復 dns 和 config

cd /d E:\Windows\system32robocopy G:\dc01\dns dns -copyall -dcopy:t -s -ermdir config /srobocopy G:\dc01\config config -copyall -dcopy:t -s -e

因爲 config 目錄非常重要,所以沒有啓用 /q 參數, 需要交互式確認刪除。

到目前爲止,重要目錄的恢復已經完成。現在開始進行部分注冊表設置的替換操作。

以下注冊表操作,也可以通過 regedit 進行,使用 reg 命令處於描述方便考慮。

首先需要替換 SideBySide

cd /d E:\tmp

掛載新系統 config.bak 目錄的 SOFTWARE 文件。

reg load HKLM\soft \Windows\system32\config.bak\SOFTWARE

備份 SideBySide 組件設置。

reg export HKLM\soft\Microsoft\Windows\CurrentVersion\SideBySide SideBySide

備份完成後,卸載。

reg unload HKLM\soft

接著掛載原系統的 SOFTWARE

reg load HKLM\soft \Windows\system32\config\SOFTWARE

查詢 SideBySide 路徑

reg query HKLM\soft\Microsoft\Windows\CurrentVersion\SideBySide

如果能查詢出結果來説明,路徑正確。

然後按 F8 鍵,或者通過方向鍵調出剛才那個命令,並將 query 替換爲 delete 并執行刪除該項。

最後導入新系統的 SideBySide

reg import SideBySide

替換設置。

下面一個可選附加操作是刪除原系統用戶配置信息的操作。

如果不刪除原有用戶配置信息,那麼當系統恢復後,以該用戶登錄,由於導致用戶配置信息中的用戶目錄不存在,而以祇能以 TEMP 賬戶登錄,不能保存更改。

reg query "HKLM\soft\Microsoft\Windows NT\CurrentVersion\Profilelist" /s /d /f USERNAME | clip

然後在記事本中粘貼結果,複製要刪除的用戶配置信息。 比如

reg delete "HKEY_LOCAL_MACHINE\soft\Microsoft\Windows NT\CurrentVersion\Profilelist\SID"

當此項操作完成後,就可以卸載 soft 項了。

reg unload HKLM\soft

先掛載原系統 config 目錄的 SYSTEM 注冊表文件

reg load HKLM\sys \Windows\system32\config\SYSTEM

查看系統當前正確配置。

reg query HKLM\sys\Select /v Current

記錄下該值的數據,然後卸載。

reg unload HKLM\sys

現在掛載之前備份 config.bak 目錄的 SYSTEM 注冊表文件

掛載前,先爲 SYSEM 建立一個副本。

cd /d \Windows\system32\config.bakcopy SYSTEM SYSTEM.bakreg load HKLM\sys SYSTEM.bakcd /d \tmp

然後查看系統當前正確配置。

reg query HKLM\sys\Select /v Current

這基本上可以肯定是 1,因爲是新安裝的系統。

如果該值與原系統的不一致,則需要將其更改爲與原系統一致。

方法爲:

重命名其他 ControlSet 項,但由於權限緣故,所以需要先更改其權限,在 ControlSet00? 項讓其子項繼承父親項的權限。如果 Current 的值與原系統一致,那麼可以考慮不需要更改項的名稱。但因爲我沒有就此進行測試,所以這裡採用保守方法。

這時就可以通過如下命令導出驅動程序設置了

這裡假設值爲 2。

for /f "tokens=1" %n in (drv.txt) do @reg export HKLM\sys\ControlSet002\services\%n .\drv_list\%n

這樣就完成了驅動程序設置的備份。當然也可以考慮 reg save 命令來保存,但是用 reg export 命令更方便,如果需要修改,可以很方便的進行。

接著備份 RPC 服務設置。

reg export HKLM\sys\ControlSet002\services\RpcSs RpcSs

備份完成後,卸載。

reg unload HKLM\sys

現在掛載原系統的 SYSTEM

reg load HKLM\sys \Windows\system32\config\SYSTEM

將之前記錄下的 ControlSet 數值代入,如果忘記執行命令

reg query HKLM\sys\Select /v Current

獲取。

先導出一份原系統網絡適配器的配置信息

reg query HKLM\sys\ControlSet002\services\tcpip\parameters\interfaces /s /d /e /f 192.168.10.10 | clip

并在記事本中進行複製

根據返回結果獲得其路徑

reg export "HKLM\sys\ControlSet002\services\tcpip\parameters\interfaces\{GUID}" int

現在開始準備刪除,原系統的驅動程序設置。

首先爲了防止批量刪除因路徑指定錯誤而誤刪,先執行命令

for /f "tokens=1" %n in (drv.txt) do @reg query HKLM\sys\ControlSet002\services\%n

如果沒有問題,則按 F8 鍵或方向鍵,將上一條命令中改爲

for /f "tokens=1" %n in (drv.txt) do @reg delete HKLM\sys\ControlSet002\services\%n /f

待刪除完成後,再改爲

for /f "tokens=1" %n in (drv.txt) do @reg import .\drv_list\%n

現在對於原系統的 RPC 服務設置進行相同操作

先確認路徑是否無誤

reg query HKLM\sys\ControlSet002\services\RpcSs

如果沒有問題,則

reg delete HKLM\sys\ControlSet002\services\RpcSs

然後

reg import RpcSs

到這裡,就可以卸載注冊表項 HKLM\sys 以及斷開虛擬硬盤,重啓電腦了。

在重啓完成後,能夠看到登錄界面,並且能按 Ctrl+Shift+Delete 鍵,輸入域管理員用戶名和密碼完成登錄。

這就説明,恢復已經完成了一大半。現在説明剩餘的恢復步驟

首先登錄系統後,應該會看到因爲某些設置已改變,系統爲了應用這些更改,必須重啓系統。

先單擊稍後重啓系統按鈕。

并關閉 "關閉服務器管理器"

現在先恢復有線網絡適配器設置

因爲是非常規恢復系統的, 所以某些功能可能不能執行,比如設置 IP 的 netsh 部分內部命令會報 "RPC 服務器不可用" 錯誤。

當然你可以嘗試通過控制面板進行設置。

首先在開始菜單搜索框輸入并啓動 cmd

然後執行命令

netsh int ip addr

查看網絡適配器名稱以及 IP 設置。這時應該可以看到啓用了 DHCP 協議的 "本地連接"。本地連接後可能跟序號

reg query HKLM\SYSTEM\CurrentControlSet\control\network /s /d /e /f 網絡適配器名稱 | clip

在記事本複製下其路徑 Connection 左側的那個 GUID。

接著

cd /d \tmpcopy int int.txtnotepad int.txt

在 int 文件副本中,把原有 {GUID} 替換爲剛才複製的,

并將

sys

替換爲

SYSTEM

ControlSet002

替換爲

CurrentControlSet

最後將整個路徑複製一下。

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\tcpip\parameters\interfaces\{GUID}"

如果可以返回結果,則

reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\tcpip\parameters\interfaces\{GUID}"reg import int.txt

這樣完成網絡適配器的設置恢復。

現在就可以重啓機器了。

待重啓完成後,在 cmd 執行一下命令

netsh int ip show addr

確認更改是否成功。

在等待該機 DNS 服務器初始化完成後,就可以著手下一步操作,恢復 RID Pool。

如果通過 nslookup 發現 DNS 服務偵聽有問題,那麼可以通過

netsh int ip set dns "本地連接" static 192.168.10.10 primary

重新設置一下。

根據 Active Directory 最佳實踐的建議,RID Manager 角色一般與 PDC 角色在同一臺主機上。

所以這裡就不做 RID Manager 角色遷移操作,而是直接恢復 RID Pool。

首先在 cmd 中執行命令

dsquery * "CN=RID Set,CN=DC01,OU=Domain Controllers,DC=contoso,DC=com" -attr rIDAllocationPool rIDPreviousAllocationPool rIDNextRID -l

可以看到 rIDPreviousAllocationPool, rIDNextRID 爲 0,將不為 0 的 riDAllocationPool 值記錄下來。

在開始菜單搜索框輸入 cmd 并以管理員身份運行

然後在 cmd 執行命令

dsquery * -filter "objectsid=*" -attr objectsid -limit 0 -l

記錄下最後一個 SID 的最右側 - 字符的數字,即 RID 。

這裡假設爲 6315。

然後執行命令

powershell

并複製如下命令

# Begin$root = [adsisearcher]'LDAP://RootDSE'$root.filter = '(&(isDeleted=TRUE)(Objectsid=*))'$root.tombstone = $true$objects = $root.findall()$maxRID = 0foreach ($obj in $objects) { $arr = $obj.properties.objectsid.item(0) $s = new-object system.security.principal.securityidentifier($arr, 0) $sid = $s.tostring() $rid = [int32]$sid.substring($sid.lastindexof('-') + 1) if ($rid -ge $maxRID) {$maxRID = $rid}}$maxRID# End

然後在運行了 powershell 的 cmd 按 Alt, E, P 鍵粘貼命令,并按 Enter 鍵執行。

將返回的數字同之前記錄的數字,相比取大的,并記錄下來,留作後用。

假設這裡爲 6295。

下面開始對之前記錄的 rIDAllocaionPool 值在 powershell 中進行計算

這裡假設該數值爲

27058293970601

[int32](27058293970601 / [math]::pow(2, 32))

得到的結果爲

6300

該值爲 RID Pool 的最高值。

然後在

27058293970601 - (6300 * [math]::pow(2, 32))

得到

5801

最低值。

另外也可以在算出最高值後,通過查詢注冊表

reg query "HKLM\SYSTEM\CurrentControlSet\services\NTDS\RID Values" /v "RID Block Size"

其中 0 表示默認值 500,你也可以設置的更大。關於更多信息,可以參見

Managing RID Issuancehttp://technet.microsoft.com/en-us/library/jj574229.aspx

所以你可以通過此值算出最低值

6300 - 500 + 1

可以看到之前記錄的 RID 值?6315 超過了?5801 ~?6300 的範圍, 所以需要重新設置 rIDAllocationPool。

將最低值設置爲 6316, 最高值爲 6815。

然後通過下面的表達式換算成 rIDAllocationPool

6316?+?6815 * [math]::pow(2, 32)

29270202128556

這時新建一個文本文件 ldf.txt

編輯如下內容:

dn:changetype: modifyreplace: schemaUpgradeInProgressschemaUpgradeInProgress: 1-

dn: CN=Rid Set,CN=DC01,OU=Domain Controllers,DC=contoso,DC=comchangetype: modifyreplace: rIDAllocationPoolrIDAllocationPool: 29270202128556-

dn: CN=Rid Set,CN=DC01,OU=Domain Controllers,DC=contoso,DC=comchangetype: modifyreplace: rIDPreviousAllocationPoolrIDPreviousAllocationPool: 29270202128556-

dn: CN=Rid Set,CN=RID_MASTER,OU=Domain Controllers,DC=contoso,DC=comchangetype: modifyreplace: rIDNextRIDrIDNextRID: 6316-

dn:changetype: modifyreplace: schemaUpgradeInProgressschemaUpgradeInProgress: 0-

dn:changetype: modifyreplace: schemaUpdateNowschemaUpdateNow: 1-

文中的 29270202128556, 6316 即爲之前結算得來的值。

最後以 Schema Admins 組身份執行命令

ldifde -i -f ldf.txt

重置 RID Pool。

當設置完成後,就可以通過重啓機器使得設置生效。但是考慮因爲目前環境祇有一臺 DC,重啓後會有相對較長的 DNS 服務初始化時間。

Domain Controller boots up slowly when pointing to itself as the only DNS serverhttp://support.microsoft.com/kb/945765/en-us

若發現 SYSVOL 目錄的 domain 目錄存在 NtFrs_PreExisting__See_EventLog,這時候可以參考如下 Microsoft 支持提供的方法進行授權還原

How to rebuild the SYSVOL tree and its content in a domainhttp://support.microsoft.com/kb/315457/en-us

恢復完成後,就可以進行角色遷移。當角色遷移完成後,就可以將已經永久離線的 DC 降級。來完成 Active Directory 的 Disaster Recovery。

2.5 其他相關應用

最後根據初步測試,也可以使用此方法進行授權還原。這裡大致說一下方法:

首先通過 nsdsutil 的 snapshot 功能創建快照,複製 NTDS 目錄到一個存儲位置。比如 VHD 文件。然後重啓 DC 并通過在啓動過程中按 F8 進入到 DSRM。使用備份對 NTDS 目錄進行替換。最後通過 ntdsutil 的 Authoritative Restore 功能完成特定對象的授權還原。

同樣的,使用此方法存在風險,如需採納,需要自行進行充分測試。

Folding@Home

免責聲明:非本網注明原創的信息,皆為程序自動獲取互聯網,目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責;如此頁面有侵犯到您的權益,請給站長發送郵件,并提供相關證明(版權證明、身份證正反面、侵權鏈接),站長將在收到郵件12小時內刪除。

一周熱門

查看更多
快彩软件-快彩软件官网-快彩软件首页-首页 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>