
Осъзнаването, че съм попаднал в ситуация на импортозамяна, не дойде веднага. Само когато от висшата организация новите доставки на компютри започнаха стабилно да пристигат с дистрибутив на "Алт Линукс" на борда, заподозрях нещо нередно.
Но в процеса на преминаване през етапите на приемане на неизбежното, се увлякох и дори малко започнах да се наслаждавам на процеса. В един момент помислих, че при тези темпове рано или късно ще трябва да се разделя с решенията за организация на службата за каталози от 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.
Заглавие на спойлера По-скоро разработчиците обявяват тази поддръжка като експериментална. Но на практика опитът за въвеждане на Samba като втори DC в съществуващ домейн на Windows със схема 69 ще ви срещне с следната грешка
DsAddEntry не успя с статус WERR_ACCESS_DENIED информация (8567, 'WERR_DS_INCOMPATIBLE_VERSION')
Проблемата е, че Windows 2012 и 2012R2 използват инструменти WMI за работа с домейни и гори, стабилната поддръжка на които бе обявена едва за версия Samba 4.11, която трябва да излезе до края на тази година.
Оттук следва, че единственият вариант за въвеждане на самба в домейн AD, разположен на сървър 2012R2, е понижаването на схемата от 69 на 47. Разбира се, на работна инфраструктура без основателни причини не е нужно да се прави, но имаме тестова среда, така че защо не.Инсталираме ALT Server 8.2. По време на инсталацията избираме профила "Сървър Samba-DC (контролер AD)". На разположения сървър извършваме пълно обновление на системата и инсталираме пакета task-samba-dc, който ще изтегли всичко необходимо.
# apt-get install task-samba-dcАко случайно task-samba-dc, въпреки уверенията на документацията на Алт, откаже да инсталира всичко необходимо сам.
# 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.confdns_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Сега изтриваме или преименуваме съществуващия конфиг на самба.
# mv smb.conf smb.conf.bak1И накрая въвеждаме в домейн AD като втори контролер:
# samba-tool domain join test.local DC -U"TESTadministrator"Успешното въвеждане ще бъде съпроводено с следния лог.
Намиране на записваем DC за домейн 'test.local' Намерен DC DC1.TEST.LOCAL Парола за [TESTadministrator]: Връзка с основния мастър e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL DNS име на новия основен мастър е DC1.TEST.LOCAL Работна група е TEST Област е TEST.LOCAL Добавяне на CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL Добавяне на CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL Добавяне на CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL Добавяне на SPN на CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL Настройка на паролата за акаунта на DC2$ Активиране на акаунта Извикване на bare provision Търсене на IPv4 адреси Търсене на IPv6 адреси Няма да бъде назначен IPv6 адрес Настройка на share.ldb Настройка на secrets.ldb Настройка на регистъра Настройка на базата данни за привилегии Настройка на idmap db Настройка на SAM db Настройка на части и настройки на sam.ldb Настройка на sam.ldb rootDSE Предварително зареждане на схемата на Samba 4 и AD Конфигурация на Kerberos, подходяща за Samba AD, е генерирана в /var/lib/samba/private/krb5.conf Provision OK за домейн DN DC=TEST,DC=LOCAL Започване на репликацията Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[402/1426] свързани_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[804/1426] свързани_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[1206/1426] свързани_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[1608/1426] свързани_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[1743/1426] свързани_values[0/0] Анализ и прилагане на схеми на обектите Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[402/2240] свързани_values[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[804/2240] свързани_values[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[1206/2240] свързани_values[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[1608/2240] свързани_values[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[1772/2240] свързани_values[24/24] Репликиране на критични обекти от базовия DN на домейна Partition[DC=TEST,DC=LOCAL] обекти[109/110] свързани_values[26/29] Partition[DC=TEST,DC=LOCAL] обекти[394/5008] свързани_values[29/29] Завършено с винаги реплицирана NC (основен, конфигурационен, схема) Репликиране на DC=DomainDnsZones,DC=TEST,DC=LOCAL Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] обекти[42/42] свързани_values[0/0] Репликиране на DC=ForestDnsZones,DC=TEST,DC=LOCAL Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] обекти[20/20] свързани_values[0/0] Exop на[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] обекти[3] свързани_values[0] Завършване на SAM базата данни Добавяне на 1 дистанционен DNS запис за DC2.TEST.LOCAL Добавяне на DNS A запис DC2.TEST.LOCAL за IPv4 IP: 192.168.90.201 Добавяне на DNS CNAME запис 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL за DC2.TEST.LOCAL Всички останали DNS записи (като _ldap SRV записи) ще бъдат създадени с samba_dnsupdate при първото стартиране Репликиране на нови DNS записи в DC=DomainDnsZones,DC=TEST,DC=LOCAL Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] обекти[1/42] свързани_values[0/0] Репликиране на нови DNS записи в DC=ForestDnsZones,DC=TEST,DC=LOCAL Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] обекти[1/20] свързани_values[0/0] Изпращане на DsReplicaUpdateRefs за всички реплицирани партиции Настройка на isSynchronized и dsServiceName Настройка на базата данни за секрети Присъедини се към домейн TEST (SID S-1-5-21-3959064270-1572045903-2556826204) като DCВ ADUC трябва да се появи запис за нов DC в домейн TEST.LOCAL, а в диспетчера на DNS — нова А запис, съответстваща на DC2.
- Репликация между контролерите на доменПърво да проверим работата на услугата за репликация на каталози (DRS)
# samba-tool drs showreplВсички опити за репликация в изхода трябва да са успешни. В списъка на обектите KCC, в рамките на 15 минути след въвеждане, нашият DC1 на Windows трябва да се появи.
Дефолтно-първо-име-на-сайтаDC2 Опции на DSA: 0x00000001 GUID на DSA обект: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf Идентификатор на извикване на DSA: 017997b5-d718-41d7-a3f3-e57ab5151b5c ==== ВХОДЯЩИ СЪСЕДИ ==== DC=ForestDnsZones,DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Пн Май 27 12:56:31 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Пн Май 27 12:56:31 2019 MSK DC=DomainDnsZones,DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Пн Май 27 12:56:32 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Пн Май 27 12:56:32 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Пн Май 27 12:56:32 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Пн Май 27 12:56:32 2019 MSK DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Пн Май 27 12:56:32 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Пн Май 27 12:56:32 2019 MSK CN=Configuration,DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Пн Май 27 12:56:33 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Пн Май 27 12:56:33 2019 MSK ==== ИЗХОДЯЩИ СЪСЕДИ ==== DC=ForestDnsZones,DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Чт Май 23 16:40:03 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Чт Май 23 16:40:03 2019 MSK DC=DomainDnsZones,DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Чт Май 23 16:40:03 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Чт Май 23 16:40:03 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Чт Май 23 16:40:08 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Чт Май 23 16:40:08 2019 MSK DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Чт Май 23 16:40:08 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Чт Май 23 16:40:08 2019 MSK CN=Configuration,DC=test,DC=local Дефолтно-първо-име-на-сайтаDC1 чрез RPC GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7 Последен опит @ Пн Май 27 12:12:17 2019 MSK беше успешен 0 последователни неуспеха. Последен успех @ Пн Май 27 12:12:17 2019 MSK ==== KCC КОНЕКЦИОННИ ОБЕКТИ ==== Връзка -- Име на връзката: 6d2652b3-e723-4af7-a19f-1ee48915753c Активирана : TRUE DNS име на сървъра : DC1.test.local DN име на сървъра : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=local Тип транспорт: RPC опции: 0x00000001 Предупреждение: Няма NC, репликиран за връзката!Предупреждение «No NC репликирана за свързване!» може да се игнорира смело. Появява се, защото при регистрацията на нов DC Samba неправилно се задават някои флагове за репликация.
Също така не би било зле да проверите репликацията на LDAP.
# samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -UadministratorКомандата, посочена по-горе, ще сравни стойностите на атрибутите на обектите в целия каталог на DC1 и DC2.
Пример за успешна репликация
* Сравняване на контекста [DOMAIN]... * Обекти, които ще бъдат сравнени: 249 * Резултат за [DOMAIN]: УСПЕХ * Сравняване на контекста [CONFIGURATION]... * Обекти, които ще бъдат сравнени: 1750 * Резултат за [CONFIGURATION]: УСПЕХ * Сравняване на контекста [SCHEMA]... * Обекти, които ще бъдат сравнени: 1739 * Резултат за [SCHEMA]: УСПЕХ * Сравняване на контекста [DNSDOMAIN]... * Обекти, които ще бъдат сравнени: 42 * Резултат за [DNSDOMAIN]: УСПЕХ * Сравняване на контекста [DNSFOREST]... * Обекти, които ще бъдат сравнени: 20 * Резултат за [DNSFOREST]: УСПЕХВ редица случай атрибутите на обектите на различни контролери могат да се различават и изходът от командата ще го покаже. Но не във всички случаи това ще е признак за проблем с репликацията.
Следващият етап е да се настрои ръчно стабилната репликация на каталога SysVol.
Факт е, че Samba все още не поддържа DFS-R, нито предишния FRS. Следователно, за репликация между DC Samba и Windows, единственото работещо решение дотук е еднопосочната репликация с помощта на утилитата Robocopy от комплекта .Разработчиците на Samba, за да избегнат проблеми с съвместимостта, препоръчват първо да инсталирате комплекта утилити на обикновена работна станция и след това да копирате 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 за механизъм за удостоверяване и авторизация.
# 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“ — диапазон UID, предоставен на домейновите потребители от SSSD
- server=„dfs“ — име на файловия сървър
- path=„Profile_Users/%(USER)“ — ресурс на файловия сървър, съдържащ профила на потребителя
- mountpoint=»~“ — път за монтиране в домашната папка на потребителя
Логинът на потребителя се предава в макропроменливата „%(USER)“, използвана от pam_mount, за свързване на нашия мрежов ресурс, в информацията, подадена в дисплейния мениджър. Затова е важно, логинът в DМ да се подава без явното посочване на домейна.
В sssd.conf това се решава чрез коментиране или задаване на стойност False за опцията use_fully_qualified_names, която включва режим на пълни имена (включително домейн) за потребители и групи.
- Вторият метод е по-малко директен и по-груб, но според мен е по-удобен и предпочитан. Разликата от първия вариант е само в конфигурацията на pam_mount
# vim /etc/security/pam_mount.conf.xmlТоест просто монтираме всяка наша папка в съответната директория
- Пълно монтиране на папката с профил от мрежата в раздела /home. Прост вариант. Работи отлично, ако имената на папките "Моите документи", "Изтегляния" и "Работен плот" съвпадат и в двете операционни системи. Предполага се, че ПК с Linux вече е въведен в домейн и потребителите влизат с домейнните си акаунти, използвайки sssd за механизъм за удостоверяване и авторизация.
Изводи
За половин месец работа на тестовия стенд тази конфигурация успешно оцелялa няколко последователни дългосрочни и краткосрочни прекъсвания на двата контролера, практически без последствия за клиентите (веднъж клиент на Windows7 загуби доверителни отношения).
Като цяло останах с доста приятни впечатления от работата с този продукт, въпреки всички нюанси, с които се сблъсках както в статията, така и "зад кулисите".
Има много подводни камъни, и по време на работата със самбата ще се наложи да ги ловим в голямо количество. Въпреки това, към днешна дата няма други решения, които да позволяват организиране на хибридна среда с използването на служба за каталози и без използване на Windows.
Източник: habr.com
