Samba DC作为Windows 2012R2 AD域中的第二个控制器以及Windows和Linux上客户端的漫游文件夹

图片

我马上就意识到自己在进口商品中的地位。 只有当新的PC供应开始稳定地从上级组织(带有Alt Linux发行版)运抵时,我才怀疑有些不对劲。

但是,在接受不可避免的阶段的过程中,我参与进来,甚至开始略微享受这一过程。 在某个时候,我认为,以这样的速度,迟早我将不得不放弃组织Microsoft目录服务的决定,而朝着更具异国情调的方向发展。 因此,为了提前为不可避免的情况做准备,并在可能的情况下捕捉更多的陷阱,决定部署一个测试台,其中包括:

  • DC1-Windows Server 2012R2
  • DC2-Alt Server 8.2
  • 文件服务器-Windows Server 2012R2
  • PC1-Windows 7
  • PC2-Alt Workstation 8.2

展位的任务:


  1. 部署基于w2k12r2的域。 创建一组最少的组策略(类似于在工作基础结构中使用的组策略),包括用于传输用户工作文件夹(下载/文档/桌面)的策略。 最后,我希望当用户将工作场所从Windows更改为Linux时(反之亦然),他可以轻松访问其工作文档。
  2. 由第二个控制器输入Samba DC。 检查目录服务和DNS复制
  3. 使用漫游文件夹配置Linux客户端

实现方式:


  1. 安装并输入新的控制器

    通过安装MS Windows 2012R2,一切变得简单且不太清晰。 在互联网上,有一个1001手册,用于同时使用GUI和Powershell在Windows上部署域,因此不再赘述,我只保留一个链接 。 好奇者和想要刷新记忆的人的文档。

    但是,本段有一个重要的观点。 迄今为止,Samba无法使用2008R2以上的目录方案。

    扰流板方向
    相反,此支持的开发人员被宣布为试验性的。 但是实际上,尝试使用方案69将samba作为第二个DC输入到现有Windows域中会遇到以下错误
    DsAddEntry失败,状态为WERR_ACCESS_DENIED信息(8567,“ WERR_DS_INCOMPATIBLE_VERSION”)


    问题在于,Windows 2012和2012R2使用WMI工具来处理域和林,仅在Samba版本4.11中宣布了对它的稳定支持,该版本将于今年年底发布。
    因此,将samba引入部署在2012R2服务器上的AD域的唯一选择是将方案从69降低到47。当然,在没有充分理由的情况下,这对于工作的基础结构来说不是必需的,但是我们这里有一个测试平台,所以为什么其实不是。

    我们放置了Alt Server 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"TEST\administrator" 

    成功输入后将显示以下日志
     Finding a writeable DC for domain 'test.local' Found DC DC1.TEST.LOCAL Password for [TEST\administrator]: 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 on 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 


    有关TEST.LOCAL域中新DC的记录应出现在ADUC管理单元中,而对应于DC2的新A记录应出现在DNS管理器中。
  2. 控制器之间的复制

    首先,请查看目录复制服务(DRS)

     # samba-tool drs showrepl 

    输出中的所有复制尝试都必须成功。 在KCC对象列表中,输入后15分钟内,Windows上的DC1应该会出现
     Default-First-Site-Name\DC2 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-Name\DC1 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-Name\DC1 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-Name\DC1 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-Name\DC1 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-Name\DC1 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-Name\DC1 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-Name\DC1 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-Name\DC1 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-Name\DC1 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-Name\DC1 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。 因此,对于DC Samba和Windows之间的复制,当今唯一可行的解​​决方案是使用Windows Server 2003 Resource Kit Tools中Robocopy实用程序进行单向复制。

    为了避免兼容性问题,Samba开发人员建议先将实用工具包安装在常规工作站上,然后将Robocopy复制到文件夹“ C:\ Program Files(x86)\ Windows Resource Kits \ Tools \”中的控制器中。

    安装后,在Windows控制器上的任务计划程序中,我们使用以下参数创建要复制的任务:

    -为所有用户执行
    -触发每天执行一次,每5分钟执行一次
    -在操作中,我们指定了robocopy实用程序的路径,我们将其指定为参数:

     \\DC1\SYSVOL\test.local\ \\DC2\SYSVOL\test.local\ /mir /sec 

    在特定情况下,请将SysVol目录的内容从DC1复制到DC2。
  3. 使用pam_mount配置的可移植用户文件夹

    从经验上讲,我找到了两个可行的方法来解决此问题。

    1. 将配置文件文件夹从网络完全安装到/ home部分

      一个简单的选择。 如果两个操作系统上的文件夹名称“我的文档”,“下载”和“桌面”相同,则效果很好。 可以理解,Linux PC已经进入域,并且用户使用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范围
      • server =“ dfs” -文件服务器名称
      • path =“ Profile_Users /%(USER)” -托管了用户配置文件的文件服务器上的资源
      • mountpoint =“〜” -挂载到用户主文件夹的路径

      用户的登录名以显示管理器中输入的形式传递到pam_mount用来连接我们的网络资源的宏变量“%(USER)”。 因此,输入DM登录名而不显示域名很重要。

      在sssd.conf中,可以通过注释或将False值设置为use_fully_qualified_names选项来解决此问题,该选项将为用户和组启用全名模式(包括域)。
    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来组织混合环境。

Source: https://habr.com/ru/post/zh-CN450572/


All Articles