Samba DC 作為 AD 網域中的第二個網域控制站 Windows 2012R2 和客戶端漫遊資料夾 Windows и Linux

Samba DC 作為 AD 網域中的第二個網域控制站 Windows 2012R2 和客戶端漫遊資料夾 Windows и Linux
我並沒有立即意識到自己陷入了進口混亂之中。 只有當更高層級的組織開始穩定交付新的 PC 並搭載 Alt Linux 發行版時,我才懷疑出了什麼問題。

然而,當我經歷了接受不可避免的階段時,我參與其中,甚至開始有點享受這個過程。 在某些時候,我認為以這個速度,遲早我將不得不放棄微軟組織目錄服務的解決方案,轉向更奇特的東西。 因此,為了提前為不可避免的情況做好準備,並在可能的情況下捕獲盡可能多的陷阱,決定部署測試台,其中包括:

  • DC1 — Windows Server 2012R2
  • DC2 - 中提琴伺服器 8.2
  • 檔案伺服器 — Windows Server 2012R2
  • PC1 — Windows 7
  • PC2 - 中提琴工作站 8.2

展位目標:

  1. 部署一個基於 Windows Server 2012 R2 的網域。建立一組最小的群組原則(類似於生產基礎架構中使用的策略),其中包括一個用於遷移使用者工作資料夾(下載/文件/桌面)的策略。最終,我希望確保當用戶更換工作站時, Windows 上 Linux 回來後,他就能方便地查閱工作文件了。
  2. 由第二個控制器提供 Samba 直流輸入。 檢查目錄和 DNS 複製
  3. 設置客戶端 Linux 處理移動資料夾

實現方式:

  1. 新控制器的安裝與調試微軟安裝 Windows 2012R2 簡單易懂。網路上有上千份關於如何在 Windows Server 上部署網域的手冊。 Windows 我既用過圖形介面也用過 PowerShell,所以我就不再贅述了,直接離開吧。 鏈接 開關。 為那些好奇和想要刷新記憶的人提供的文件。

    不過,此時仍有一個重要的點。 目前,Samba 無法使用高於 2008R2 的目錄方案。

    劇透標題 更準確地說,開發者稱此支援為實驗性功能。但實際上,嘗試將 Samba 作為第二個網域控制器引入現有網域的嘗試卻遇到了問題。 Windows 使用方案 69 時,您將看到以下錯誤訊息。

    DsAddEntry 失敗,狀態為 WERR_ACCESS_DENIED 資訊(8567,'WERR_DS_INCOMPATIBLE_VERSION')

    問題是 Windows 2012 和 2012R2 使用 WMI 工具來處理網域和林,但目前僅宣布 Samba 4.11 版本將穩定支援該工具,該版本預計將於今年年底前發布。
    由此可見,將 samba 引入部署在 2012R2 伺服器上的 AD 網域的唯一選擇是將方案從 69 降級到 47。當然,如果沒有充分的理由,不應該在生產基礎設施上這樣做,但我們有一個在這裡有測試台,那為什麼不呢?

    安裝替代伺服器 8.2。 在安裝過程中,選擇「Samba-DC 伺服器(AD 控制器)」設定檔。 在已部署的伺服器上,我們執行完整的系統更新並安裝 task-samba-dc 軟體包,這將提取您需要的所有內容

    # apt-get install task-samba-dc

    如果突然出現task-samba-dc,與文件的保證相反,Alta 拒絕自行安裝所有必需的東西。

    # apt-get install python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-common-libs libpytalloc-devel

    接下來,我們繼續設定 Kerberos 並接收票證。 開啟 krb5.conf 文件,前往 [libdefaults] 部分,並將其設定為以下形式:

    # vim /etc/krb5.conf
     dns_lookup_kdc = true
     dns_lookup_realm = true
     default_realm = TEST.LOCAL

    索取門票

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    檢查收到的 Kerberos 票證列表

    # klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: administrator@TEST.LOCAL
    
    Valid starting       Expires              Service principal
    16.05.2019 11:51:38  16.05.2019 21:51:38  krbtgt/TEST.LOCAL@TEST.LOCAL
            renew until 23.05.2019 11:51:35

    現在我們刪除或重新命名現有的 samba 配置。

    # mv smb.conf smb.conf.bak1

    最後,我們使用第二個控制器進入 AD 網域:

    # samba-tool domain join test.local DC -U"TESTadministrator"

    輸入成功會伴隨以下log

    Finding a writeable DC for domain 'test.local'
    Found DC DC1.TEST.LOCAL
    Password for [TESTadministrator]:
    Reconnecting to naming master e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.                           LOCAL
    DNS name of new naming master is DC1.TEST.LOCAL
    workgroup is TEST
    realm is TEST.LOCAL
    Adding CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Adding CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC                           =TEST,DC=LOCAL
    Adding CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN                           =Configuration,DC=TEST,DC=LOCAL
    Adding SPNs to CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Setting account password for DC2$
    Enabling account
    Calling bare provision
    Looking up IPv4 addresses
    Looking up IPv6 addresses
    No IPv6 address will be assigned
    Setting up share.ldb
    Setting up secrets.ldb
    Setting up the registry
    Setting up the privileges database
    Setting up idmap db
    Setting up SAM db
    Setting up sam.ldb partitions and settings
    Setting up sam.ldb rootDSE
    Pre-loading the Samba 4 and AD schema
    A Kerberos configuration suitable for Samba AD has been generated at /var/lib/sa                           mba/private/krb5.conf
    Provision OK for domain DN DC=TEST,DC=LOCAL
    Starting replication
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[402/1426] linked                           _values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[804/1426] linked                           _values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1206/1426] linke                           d_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1608/1426] linke                           d_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1743/1426] linke                           d_values[0/0]
    Analyze and apply schema objects
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[402/2240] linked_values[0/                           24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[804/2240] linked_values[0/                           24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1206/2240] linked_values[0                           /24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1608/2240] linked_values[0                           /24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1772/2240] linked_values[2                           4/24]
    Replicating critical objects from the base DN of the domain
    Partition[DC=TEST,DC=LOCAL] objects[109/110] linked_values[26/29]
    Partition[DC=TEST,DC=LOCAL] objects[394/5008] linked_values[29/29]
    Done with always replicated NC (base, config, schema)
    Replicating DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objects[42/42] linked_values[0/0]
    Replicating DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objects[20/20] linked_values[0/0]
    Exop on[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objects[3] linked_values[0]
    Committing SAM database
    Adding 1 remote DNS records for DC2.TEST.LOCAL
    Adding DNS A record DC2.TEST.LOCAL for IPv4 IP: 192.168.90.201
    Adding DNS CNAME record 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL                            for DC2.TEST.LOCAL
    All other DNS records (like _ldap SRV records) will be created samba_dnsupdate o                           n first startup
    Replicating new DNS records in DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objects[1/42] linked_values[0/0]
    Replicating new DNS records in DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objects[1/20] linked_values[0/0]
    Sending DsReplicaUpdateRefs for all the replicated partitions
    Setting isSynchronized and dsServiceName
    Setting up secrets database
    Joined domain TEST (SID S-1-5-21-3959064270-1572045903-2556826204) as a DC

    在 ADUC 管理單元中,TEST.LOCAL 網域中應該會有一筆新 DC 的記錄,並且在 DNS 管理器中應該有一條與 DC2 相對應的新 A 記錄。

  2. 控制器之間的複製首先,我們來檢查目錄複製服務(DRS)的運作情況
    # samba-tool drs showrepl

    輸出結果中的所有複製嘗試都應成功。我們的 DC1 應在輸入後 15 分鐘內出現在 KCC 物件清單中。 Windows

    Default-First-Site-NameDC2
    	DSA Options: 0x00000001
    	DSA object GUID: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
    	DSA invocationId: 017997b5-d718-41d7-a3f3-e57ab5151b5c
    
    	==== INBOUND NEIGHBORS ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:31 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:31 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:32 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:32 2019 MSK
    
    	DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:32 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:33 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:33 2019 MSK
    
    	==== OUTBOUND NEIGHBORS ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:03 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:03 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:03 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:03 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:08 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:08 2019 MSK
    
    	DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:08 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:08 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:12:17 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:12:17 2019 MSK
    
    	==== KCC CONNECTION OBJECTS ====
    
    	Connection --
    	        Connection name: 6d2652b3-e723-4af7-a19f-1ee48915753c
    	        Enabled        : TRUE
    	        Server DNS name : DC1.test.local
    	        Server DN name  : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=local
    	                TransportType: RPC
    	                options: 0x00000001
    	Warning: No NC replicated for Connection!

    慎重 “沒有為連接複製 NC!” 可以安全地忽略。 發生這種情況是因為在註冊新 DC 時,Samba 錯誤地設定了一些複製標誌。

    檢查 LDAP 複製也是一個好主意。

    # samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -Uadministrator

    上面的指令將比較DC1和DC2上整個目錄物件的屬性值。

    成功複製的範例

    * Comparing [DOMAIN] context...
    
    	* Objects to be compared: 249
    
    	* Result for [DOMAIN]: SUCCESS
    
    	* Comparing [CONFIGURATION] context...
    
    	* Objects to be compared: 1750
    
    	* Result for [CONFIGURATION]: SUCCESS
    
    	* Comparing [SCHEMA] context...
    
    	* Objects to be compared: 1739
    
    	* Result for [SCHEMA]: SUCCESS
    
    	* Comparing [DNSDOMAIN] context...
    
    	* Objects to be compared: 42
    
    	* Result for [DNSDOMAIN]: SUCCESS
    
    	* Comparing [DNSFOREST] context...
    
    	* Objects to be compared: 20
    
    	* Result for [DNSFOREST]: SUCCESS

    在某些情況下,不同控制器上的物件的屬性可能會有所不同,命令輸出會讓您了解這一點。 但並非在所有情況下這都是複製問題的跡象。

    下一步是手動配置 SysVol 目錄的穩定複製。
    問題在於,Samba 目前還不支援 DFS-R,就像它之前不支援 FRS 一樣。因此,對於資料中心之間的複製,Samba 和 Windows 目前唯一可行的解​​決方案是使用實用程式進行單向複製。 ROBOCOPY 從套件中 Windows Server 2003 年資源工具包.

    為避免相容性問題,Samba 開發人員建議先在一般工作站上安裝實用程式套件,然後將 Robocopy 複製到控制器上的「C:\Program Files (x86)」資料夾中。Windows 資源包工具»

    安裝完成後,在控制器上的任務調度程式中… Windows 我們建立一個任務來執行複製操作,參數如下:

    — 對所有使用者執行
    — 白天每 5 分鐘觸發執行 Daily
    — 在操作中,我們指定 robocopy 實用程式的路徑,指定為參數:

    DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec

    在本例中,我們將 SysVol 目錄的內容從 DC1 複製到 DC2。

  3. 使用 pam_mount 配置的可移植使用者資料夾透過經驗,我找到了兩個可行的選擇來解決這個問題。
    1. 將網路上的設定檔資料夾完全掛載到 /home 分割區。這是一個簡單的選項。如果兩個作業系統中的「我的文件」、「下載」和「桌面」資料夾名稱相同,則此方法效果很好。這假設 PC 位於 Linux 已經進入網域中,使用者使用 sssd 作為身份驗證和授權機制,透過其網域帳戶登入。
      # vim /etc/security/pam_mount.conf.xml
      <volume uid="100000000-2000000000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)" mountpoint="~" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>
      

      其中:

      • uid="100000000-2000000000" — 從 SSSD 指派給網域使用者的 UID 範圍
      • 伺服器=“dfs” - 檔案伺服器名稱
      • 路徑=“Profile_Users/%(用戶)” — 檔案伺服器上具有託管使用者設定檔的資源
      • 掛載點=”~” — 使用者主資料夾的安裝路徑

      使用者登入資訊被傳遞到 pam_mount 使用的巨集變數「%(USER)」來連接顯示管理器中輸入的網路資源。 因此,在不明確指定網域名稱的情況下將登入名稱輸入到 DM 中非常重要。

      在 sssd.conf 中,可以透過註解掉該選項或將選項設為 False 來解決此問題 使用完全限定名稱,它為使用者和群組啟用完全限定名稱模式(包括網域)。

    2. 第二種方法不那麼直接和笨拙,在我看來更方便和更可取。 與第一個的差異僅在於 pam_mount 配置
      # vim /etc/security/pam_mount.conf.xml
      <volume uid="100000000-2000200000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)/Рабочий стол" mountpoint="~/Рабочий стол" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>
      <volume uid="100000000-2000200000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)/Downloads" mountpoint="~/Загрузки" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>
      <volume uid="100000000-2000200000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)/Мои документы" mountpoint="~/Документы" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>

      也就是我們只需將我們的各個資料夾分別掛載到對應的目錄即可

發現

在為期半個月的測試環境中,該軟體包成功經受住了兩個控制器多次交替的長期和短期關機,幾乎沒有對客戶端造成任何影響(一旦客戶端連接成功)。 Windows7. 失去了信任關係)。

總的來說,儘管我必須在文章中和「幕後」處理所有細微差別,但我在使用該產品時獲得了相當愉快的體驗。

使用 Samba 存在著許多陷阱,在使用過程中,您將會發現其中許多。然而,目前還沒有其他解決方案能夠讓您建立一個既包含目錄服務又不包含目錄服務的混合環境。 Windows.

來源: www.habr.com

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster