ProHoster > Блог > Администрирование > Samba DC в качестве второго контроллера в домене AD Windows 2012R2 и перемещаемые папки для клиентов на Windows и Linux
Samba DC в качестве второго контроллера в домене AD Windows 2012R2 и перемещаемые папки для клиентов на Windows и Linux
Осознание того, что я попал в импортозамес пришло не сразу. Только когда из вышестоящей организации свежие поставки ПК стали стабильно приезжать с дистрибутивом «Альт Линукс» на борту, я заподозрил неладное.
Однако в процессе прохождения по стадиям принятия неизбежного я втянулся и даже немного начал получать удовольствие от процесса. А в какой-то момент подумал, что такими темпами рано или поздно мне придётся расставаться с решениями по организации службы каталогов от Microsoft и двигаться в сторону чего-то более экзотичного. Поэтому, чтобы заранее подготовиться к неизбежному, и по возможности выловить побольше подводных камней, было решено развернуть тестовый стенд, включающий в себя:
DC1 — Windows Server 2012R2
DC2 — Альт Сервер 8.2
File Server — Windows Server 2012R2
PC1 — Windows 7
PC2 — Альт Рабочая станция 8.2
Задачи стенда:
Развернуть домен на базе w2k12r2. Создать минимальный набор групповых политик (аналогично использующимся в рабочей инфраструктуре), включая политику переноса рабочих папок пользователей (Загрузки/Документы/Рабочий стол). В конечном итоге хочется, чтобы при смене пользователем рабочего места с Windows на Linux и обратно он имел комфортный доступ к своим рабочим документам.
Ввод Samba DC вторым контроллером. Проверка репликации службы каталогов и DNS
Настройка клиентов Linux на работу с перемещаемыми папками
Реализация:
Установка и ввод нового контроллераС установкой MS Windows 2012R2 всё просто и более менее понятно. В интернете есть 1001 мануал по развертыванию домена на Windows как с помощью GUI так и средствами Powershell, поэтому повторять лишний раз не буду, оставлю только ссылку на офф. документацию, для любопытствующих и тех кто захочет освежить память.
Однако один важный момент в данном пункте всё таки есть. На сегодняшний день Samba не умеет работать со схемами каталога выше 2008R2.
Заголовок спойлера Вернее разработчиками данная поддержка заявлена в качестве экспериментальной. Но на практике попытка ввода самбы в качестве второго DC в существующий домен Windows со схемой 69 — встретит вас следующей ошибкой
DsAddEntry failed with status WERR_ACCESS_DENIED info (8567, ‘WERR_DS_INCOMPATIBLE_VERSION’)
Проблема в том, что Windows 2012 и 2012R2 используют инструменты WMI для работы с доменами и лесами, стабильная поддержка которых анонсирована только к версии Samba 4.11, которая должна выйти до конца этого года.
Из этого следует, что единственным вариантом для введения самбы в домен AD, развернутый на 2012R2 сервере, является понижение схемы с 69 до 47. Разумеется на рабочей инфраструктуре без веских причин этого делать не надо, но у нас тут тестовый стенд, так что почему бы собственно и нет.
Ставим Альт Сервер 8.2. Во время установки выбираем профиль «Сервер Samba-DC (контроллер AD)». На развернутом сервере производим полное обновление системы, и устанавливаем пакет task-samba-dc, который потянет за собой всё необходимое
# apt-get install task-samba-dc
Если вдруг task-samba-dc, вопреки заверениям документации Альта откажется ставить всё необходимое сам.
# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: [email protected]
Valid starting Expires Service principal
16.05.2019 11:51:38 16.05.2019 21:51:38 krbtgt/[email protected]
renew until 23.05.2019 11:51:35
Теперь удаляем или переименовываем существующий конфиг самбы.
# mv smb.conf smb.conf.bak1
И наконец вводим в домен AD вторым контроллером:
# samba-tool domain join test.local DC -U"TESTadministrator"
Успешный ввод будет сопровождаться следующим логом
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 должна появиться запись о новом DC в домене TEST.LOCAL, а в диспетчере DNS — новая А запись, соответствующая DC2.
Репликация между контроллерамиДля начала проверим работу службы репликации каталогов (DRS)
# samba-tool drs showrepl
Все попытки репликации в выводе должны быть успешными. В списке объектов KCC, в течение 15 минут после ввода, должен появится наш DC1 на 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!
Предупреждение «No NC replicated for Connection!» можно смело игнорировать. Оно появляется из за того, что при регистрации нового DC самба неверно устанавливает некоторые флаги репликации.
Указанная выше команда сравнит значения атрибутов объектов всего каталога на 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.
Дело в том, что самба пока не поддерживает DFS-R, впрочем как не поддерживала более раннюю FRS. Поэтому для репликации между DC Samba и Windows единственным на сегодняшний день рабочим решением является односторонняя репликация средствами утилиты Robocopy из комплекта Windows Server 2003 Resource Kit Tools.
Разработчики самбы, во избежание проблем с совместимостью, рекомендуют сначала установить комплект утилит на обычную рабочую станцию, и после этого скопировать Robocopy на контроллер в папку «C:Program Files (x86)Windows Resource KitsTools»
После установки, в планировщике задач на контроллере с Windows создаём задание на выполнение репликации со следующими параметрами:
— Выполнять для всех пользователей
— Триггер на выполнение Ежедневно каждые 5 минут в течение дня
— В действиях прописываем путь к утилите robocopy, в качестве аргументов указываем:
DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec
В конкретном случае копируем содержимое каталога SysVol с DC1 на DC2.
Переносимые папки пользователей с помощью конфигурации pam_mountОпытным путём я нащупал два жизнеспособных варианта решения этой задачи с его помощью.
Полное монтирование папки с профилем из сети в раздел /homeПростой вариант. Отлично отрабатывает, если названия папок Мои документы, Загрузки и Рабочий стол совпадают в обеих операционных системах. Подразумевается, что ПК на Linux уже введён в домен и пользователи логинятся под своими доменными учётными записями, используя в качестве механизма аутентификации и авторизации sssd.
uid=«100000000-2000000000» — диапазон UID, присваиваемый доменным пользователям от SSSD
server=«dfs» — имя файлового сервера
path=«Profile_Users/%(USER)» — ресурс на файловом сервере, с размещенным профилем пользователя
mountpoint=»~» — путь монтирования в домашнюю папку пользователя
Логин пользователя передается в макропеременную «%(USER)», используемую pam_mount, для подключения нашего сетевого ресурса, в том виде, в котором он введен в дисплейном менеджере. Поэтому важно, чтобы в ДМ логин вводился без явного указания доменного имени.
В sssd.conf это решается комментированием, либо выставлением значения False в опцию use_fully_qualified_names, которая включает режим полных имён (включая домен) для пользователей и групп.
Второй способ менее прямолинейный и топорный, и на мой взгляд более удобный и предпочтительный. Отличие от первого только в конфигурации pam_mount
То есть просто отдельно монтируем каждую нашу папку в соответствующий ей каталог
Выводы
За пол месяца работы на тестовом стенде данная связка успешно пережила несколько попеременных долговременных и кратковременных отключений обоих контроллеров, практически без последствий для клиентов (один раз клиент на Windows7 потерял доверительные отношения).
В целом у меня остались довольно приятные впечатления от работы с этим продуктом, даже не смотря на все нюансы, с которыми пришлось столкнуться как в статье, так и «за кулисами».
Подводные камни есть, их много, и по ходу работы с самбой их придётся вылавливать в большом количестве. Тем не менее на сегодняшний день нет иных решений, позволяющих организовывать гибридную среду, с использованием службы каталогов и без использования Windows.