天天看點

使用Rsync指令同步兩個Samba4 AD DC之間的SysVol目錄

這篇文章講的是在兩個 samba4 活動目錄域控制器之間,通過一些強大的 linux 工具來完成 sysvol 的複制操作,比如 rsync 資料同步工具,cron 任務排程程序和 ssh 協定。

需求:

1、在 ubuntu 系統上使用 samba4 來建立活動目錄架構

2、在 linux 指令行下管理 samba4 ad 架構

3、使用 windows 10 的 rsat 工具來管理 samba4 活動目錄架構

4、在 windows 下管理 samba4 ad 域管制器 dns 群組政策

5、将另一台 ubuntu dc 伺服器加入到 samba4 ad dc 實作雙域控主機模式

第一步:配置 dc 伺服器時間同步

1、在兩個域控制器之間複制 sysvol 目錄的内容之前,你得保證這兩個伺服器時間設定準确且一緻。

如果這兩個伺服器的時間延遲大于 5 分鐘,并且時鐘也不同步,你将會遇到 ad 賬号和域複制的各種問題。

為了解決多個域控制器之間時間漂移的問題,你需要在伺服器上執行如下指令來安裝和配置 ntp 服務。

# apt-get install ntp 

2、在 ntp 服務安裝完成之後,打開主配置檔案,把預設的 pool 值注釋(在每行 pool 參數前添加 # ),并且添加新的 pool 值,指向已安裝了 ntp 服務端的主 samba4 ad dc fqdn,如下所示。

# nano /etc/ntp.conf 

把下面幾行添加到 ntp.conf 配置檔案。

pool 0.ubuntu.pool.ntp.org iburst 

#pool 1.ubuntu.pool.ntp.org iburst 

#pool 2.ubuntu.pool.ntp.org iburst 

#pool 3.ubuntu.pool.ntp.org iburst 

pool adc1.tecmint.lan 

# use ubuntu's ntp server as a fallback. 

pool ntp.ubuntu.com  

使用Rsync指令同步兩個Samba4 AD DC之間的SysVol目錄

samba4 配置 ntp 服務

3、先不要關閉該檔案,在檔案末尾添加如下内容,這是為了讓其它用戶端能夠查詢并與這個 ntp 伺服器同步時間,并發出 ntp 簽署請求,以防主 dc 離線:

restrict source notrap nomodify noquery mssntp 

ntpsigndsocket /var/lib/samba/ntp_signd/ 

4、最後,關閉并儲存該配置檔案,然後重新開機 ntp 服務以應用更改。等待幾分鐘後時間同步完成,執行 ntpq 指令列印出 adc1 時間同步情況。

# systemctl restart ntp 

# ntpq -p  

使用Rsync指令同步兩個Samba4 AD DC之間的SysVol目錄

與 samba4 ad 同步 ntp 時間

第二步:通過 rsync 指令來複制第一個 dc 伺服器上的 sysvol 目錄

預設情況下,samba4 ad dc 不會通過 dfs-r(分布式檔案系統複制distributed file system replication)或者 frs(檔案複制服務file replication service)來複制 sysvol 目錄。

這意味着隻有在第一個域控制器聯機時,組政策對象group policy objects才可用。否則組政策設定和登入腳本不會應用到已加入域的 windosws 機器上。

為了克服這個障礙,以及基本實作 sysvol 目錄複制的目的,我們通過執行一個基于 ssh 的身份認證并使用 ssh 加密通道的linux 同步指令來從第一個域控制器安全地傳輸 gpo 對象到第二個域控制器。

這種方式能夠確定 gpo 對象在域控制器之間的一緻性,但是也有一個很大的缺點。它隻能進行單向同步,因為在同步 gpo 目錄的時候, rsync 指令會從源 dc 伺服器傳輸所有的更改到目标 dc 伺服器,

源 dc 伺服器上不存在的組政策對象也會從目标 dc 伺服器上删除,為了限制并避免任何沖突,所有的 gpo 編輯操作隻能在第一個 dc 伺服器上執行。

5、要進行 sysvol 複制,先到第一個 ad dc 伺服器上生成 ssh 密鑰,然後使用下面的指令把該密鑰傳輸到第二個 dc 伺服器。

在生成密鑰的過程中不要設定密碼,以便在無使用者幹預的情況下進行傳輸。

# ssh-keygen -t rsa   

# ssh-copy-id root@adc2   

# ssh adc2  

# exit   

使用Rsync指令同步兩個Samba4 AD DC之間的SysVol目錄

在 samba4 dc 伺服器上生成 ssh 密鑰

6、 當你确認 root 使用者可以從第一個 dc 伺服器以免密碼方式登入到第二個 dc 伺服器時,執行下面的 rsync 指令,加上 --dry-run 參數來模拟 sysvol 複制過程。注意把對應的參數值替換成你自己的資料。

# rsync --dry-run -xaavz --chmod=775 --delete-after  --progress --stats  /var/lib/samba/sysvol/ root@adc2:/var/lib/samba/sysvol/ 

7、如果模拟複制過程正常,那麼再次執行去掉 --dry-run 參數的 rsync 指令,來真實的在域控制器之間複制 gpo 對象。

# rsync -xaavz --chmod=775 --delete-after  --progress --stats  /var/lib/samba/sysvol/ root@adc2:/var/lib/samba/sysvol/  

使用Rsync指令同步兩個Samba4 AD DC之間的SysVol目錄

samba4 ad dc sysvol 複制

8、在 sysvol 複制完成之後,登入到目标域控制器,然後執行下面的指令來列出其中一個 gpo 對象目錄的内容。

從第一個 dc 伺服器上執行這個指令時,列出的 gpo 對象也要相同。

# ls -alh /var/lib/samba/sysvol/your_domain/policiers/  

使用Rsync指令同步兩個Samba4 AD DC之間的SysVol目錄

驗證 samba4 dc sysvol 複制結果是否正常

9、為了自動完成組政策複制的過程(通過網絡傳輸 sysvol 目錄),你可以使用 root 賬号設定一個任務來執行同步指令,如下所示,設定為每隔 5 分鐘執行一次該指令。

# crontab -e 

添加一條每隔 5 分鐘運作的同步指令,并把執行結果以及錯誤資訊輸出到日志檔案 /var/log/sysvol-replication.log 。如果執行指令異常,你可以檢視該檔案來定位問題。

*/5 * * * * rsync -xaavz --chmod=775 --delete-after  --progress --stats  /var/lib/samba/sysvol/ root@adc2:/var/lib/samba/sysvol/ > /var/log/sysvol-replication.log 2>&1 

10、如果以後 sysvol acl 權限有問題,你可以通過下面的指令來檢測和修複這些異常。

# samba-tool ntacl sysvolcheck 

# samba-tool ntacl sysvolreset  

使用Rsync指令同步兩個Samba4 AD DC之間的SysVol目錄

修複 sysvol acl 權限問題

11、如果第一個 samba4 ad dc 的 fsmo 角色,即“pdc 模拟器”不可用,你可以強制 microsoft windows 系統上的組政策管理控制台隻連接配接到第二個域控制器,通過選擇更改域控制器選項和手動選擇目标機器,如下圖所示。

使用Rsync指令同步兩個Samba4 AD DC之間的SysVol目錄

更改 samba4 域控制器

使用Rsync指令同步兩個Samba4 AD DC之間的SysVol目錄

選擇 samba4 域控制器

當你從組政策管理控制台連接配接到第二個 dc 伺服器時,你應該避免對組政策做任何更改。否則,當第一個 dc 伺服器恢複正常後, rsync 指令将會删除在第二個 dc 伺服器上所做的更改。

作者:matei cezar

來源:51cto

繼續閱讀