Samba 系列(六):使用 Rsync 命令同步兩個 Samba4 AD DC 之間的 SysVol 目錄

Matei Cezar發表於2017-04-08

這篇文章講的是在兩個 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

Configure NTP for Samba4

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

Synchronize NTP Time with Samba4 AD

與 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 

Generate SSH Key on Samba4 DC

在 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/

Samba4 AD DC SysVol Replication

Samba4 AD DC SysVol 複製

8、在 SysVol 複製完成之後,登入到目標域控制器,然後執行下面的命令來列出其中一個 GPO 物件目錄的內容。

從第一個 DC 伺服器上執行這個命令時,列出的 GPO 物件也要相同。

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

Verify Samba4 DC SysVol Replication

驗證 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

Fix SysVol ACL Permissions

修復 SysVol ACL 許可權問題

11、如果第一個 Samba4 AD DCFSMO 角色,即“PDC 模擬器”不可用,你可以強制 Microsoft Windows 系統上的組策略管理控制檯只連線到第二個域控制器,透過選擇更改域控制器選項和手動選擇目標機器,如下圖所示。

Change Samba4 Domain Controller

更改 Samba4 域控制器

Select Samba4 Domain Controller

選擇 Samba4 域控制器

當你從組策略管理控制檯連線到第二個 DC 伺服器時,你應該避免對組策略做任何更改。否則,當第一個 DC 伺服器恢復正常後, rsync 命令將會刪除在第二個 DC 伺服器上所做的更改。


作者簡介:

Matei Cezar -- 我是一個電腦迷,開源軟體和 Linux 系統愛好者,有超過 4 年的 Linux 桌面、伺服器版本系統和 bash 程式設計經驗。


via: http://www.tecmint.com/samba4-ad-dc-sysvol-replication/

作者:Matei Cezar 譯者:rusking 校對:jasminepeng

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章