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

6871741-894fe471462d4cc6.png

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

6871741-ab91b26aab191d61.png

與 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

6871741-9f61be5c87719583.png

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

6871741-e323b8be60daef40.png

Samba4 AD DC SysVol 複製

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

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

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

6871741-0040a080de21bad9.png

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

6871741-7f53f8251f124102.png

修復 SysVol ACL 許可權問題

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

6871741-efcedb27ee212c3b.png

更改 Samba4 域控制器

6871741-4ff86646eacb5317.png

選擇 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中國榮譽推出

相關文章