使用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
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
與 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
在 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 復制
8、在 SysVol 復制完成之后,登錄到目標域控制器,然后執行下面的命令來列出其中一個 GPO 對象目錄的內容。
從***個 DC 服務器上執行這個命令時,列出的 GPO 對象也要相同。
- # ls -alh /var/lib/samba/sysvol/your_domain/Policiers/
驗證 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
修復 SysVol ACL 權限問題
11、如果***個 Samba4 AD DC 的 FSMO 角色,即“PDC 模擬器”不可用,你可以強制 Microsoft Windows 系統上的組策略管理控制臺只連接到第二個域控制器,通過選擇更改域控制器選項和手動選擇目標機器,如下圖所示。
更改 Samba4 域控制器
選擇 Samba4 域控制器
當你從組策略管理控制臺連接到第二個 DC 服務器時,你應該避免對組策略做任何更改。否則,當***個 DC 服務器恢復正常后, rsync 命令將會刪除在第二個 DC 服務器上所做的更改。