Skip to content

Document Header

Подключение samba 4 (BDC) к windows server (PDC)

Подключение samba 4 (BDC) к windows server (PDC) published on 9 комментариев к записи Подключение samba 4 (BDC) к windows server (PDC)

Задумал написать статью по миграции с windows server (PDC) на samba 4 server (BDC) с передачей ролей.
Эта статья описывает подключение samba 4 в режиме domain controller (BDC) к существующему лесу и домену, что является предшествующим этапом к миграции. Для создания домена будем использовать windows server 2008 eng.

Создание домена (кратко).

На нашем windows 2008 server предварительно установлены следующие сетевые настройки:
Server name: win-2008
Static IP: 192.168.1.1/24
Primary DNS: 127.0.0.1
Secondary DNS: 8.8.8.8

1. Запускаем dcpromo. Я выберу расширенный режим установки.

Запуск dcpromo

2. Создаем новый домен и лес.

New Domain and Forest

3. Выбираем название. В моем случае test.loc

domain name

4. Выбираем function level. Я выбрал максимальный 2008, чтобы убедиться, что samba 4 умеет работать с уровнем 2008 и 2008 R2 (в будущем)

function level

5. Поддержку DNS сервера и глобального каталога оставляем.
6. Если у вас динамический IP, то вам будет выдано следующее предупреждение:
ip alarm
7. Дальше будет предложено выбрать пути, потом установка пароля режима восстановления. После этого начнется установка. По окончании установки потребуется перезагрузка.

Подключение samba 4 server в режиме domain controller (BDC) к существующему лесу и домену.

На этот раз я использую систему arch linux, установленную на raspberry pi.
Samba 4 установлена в виде пакета samba-4.0.7-3

Установку проводил так:

# pacman -S samba

Как устанавливать из исходников, можно почитать здесь.

Samba 4 name: alarmpi (оставил по умолчанию)
ip: 192.168.1.2/24

1. Подготавливаем /etc/krb.conf:

[libdefaults]
dns_lookup_realm = true
dns_lookup_kdc = true
default_realm = test.loc

2. Прописываем primary DNS /etc/resolve.conf:

nameserver 192.168.1.1
nameserver 8.8.8.8

3. На всякий случай проверяем соответствие времени на обоих серверах (разница не должна превышать более 5 минут, иначе могут быть проблемы). В случае raspberry pi это особенно актуально ;=)

Если все в порядке проводим test Kerberos и DNS (не забываем про ВЕРХНИЙ регистр):

# kinit administrator@TEST.LOC

Если на команду klist вы получили, что-то похожее. Можно добавлять samba 4 в домен.

#klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TEST.LOC

Valid starting       Expires              Service principal
07/10/2013 23:26:27  07/11/2013 09:26:27  krbtgt/TEST.LOC@TEST.LOC
renew until 07/11/2013 23:26:25

4. Для добавления samba 4 в режиме domain controller (BDC) к существующему windows домену введите следующую команду:

# samba-tool domain join test.loc DC -Uadministrator --realm=test.loc

Если в качестве DNS вы планируете использовать Bind, то:

# samba-tool domain join test.loc DC -Uadministrator --realm=test.loc --dns-backend=BIND9_DLZ

Если в конце процесса мы получили сообщение:

Joined domain TEST (SID S-1-5-21-1253393912-4244980978-340559521) as a DC

то наша samba 4 стала domain controller (BDC) в существующем домене windows server.

Тесты:

DNS

# host -t A alarmpi.test.loc.

У меня данная запись не создалась автоматически, пришлось делать ее вручную.

Проверка доступности GUID объектов для нового хоста.

# ldbsearch -H /usr/local/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid

Сначала мне была выдана следующая ошибка:

WARNING: Module [samba_dsdb] not found - do you need to set LDB_MODULES_PATH?
Unable to load modules for /var/lib/samba/private/sam.ldb: (null)
Failed to connect to /var/lib/samba/private/sam.ldb - (null)

Решение нашлось быстро:

# export LDB_MODULES_PATH=/usr/lib/samba/ldb/

Повторно:

# ldbsearch -H /usr/local/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid

Теперь все нормально:

# record 1
dn: CN=NTDS Settings,CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
objectGUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639

# record 2
dn: CN=NTDS Settings,CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
objectGUID: a4d52cb9-6cca-4224-a3a0-c14d72a107cd

# returned 2 records
# 2 entries
# 0 referrals

Наш GUID a4d52cb9-6cca-4224-a3a0-c14d72a107cd , используем его для следующего запроса:

# host -t CNAME a4d52cb9-6cca-4224-a3a0-c14d72a107cd._msdcs.test.loc.

И эту запись мне пришлось создавать вручную:

Создание CNAME GUID в DNS
Запускаем samba, (я воспользуюсь штатным стартовым скриптом):

# systemctl start samba

Проверим репликацию между контроллерами доменов:

# samba-tool drs showrepl

Приятно удивлен, но все нормально. Когда я тестировал samba 4 (PDC) с (BDC) в виде windows server разных версий, то успешная репликация осуществлялась не сразу. Сначала выдавались ошибки, которые через несколько часов сами исчезали.
Успешная репликация выглядит так:

Default-First-Site-NameALARMPI
DSA Options: 0x00000001
DSA object GUID: a4d52cb9-6cca-4224-a3a0-c14d72a107cd
DSA invocationId: 777c974c-0c54-434f-af95-881217493e20

==== INBOUND NEIGHBORS ====

DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

DC=ForestDnsZones,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

CN=Schema,CN=Configuration,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

CN=Configuration,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

DC=DomainDnsZones,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

==== OUTBOUND NEIGHBORS ====

DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
L—————————————— was successful
0 consecutive failure(s).

CN=Schema,CN=Configuration,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

CN=Configuration,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

==== KCC CONNECTION OBJECTS ====

Connection —
Connection name: 8add9398-269c-4e13-8d5b-70421c071601
Enabled        : TRUE
Server DNS name : WIN-2008.test.loc
Server DN name  : CN=NTDS Settings,CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
TransportType: RPC
options: 0x00000001
Warning: No NC replicated for Connection!

Для окончательной проверки осталось создать по новому объекту на каждом контроллере домена. Создадим по пользователю на каждом контроллере домена и проверим реплицируются ли они. Перед этим просмотрим текущий список пользователей:

# wbinfo –u

Administrator
Guest
Krbtgt

1. Создадим пользователя user1 в windows 2008 server  (PDC).
2. Создадим пользователя user2 в samba 4 server (BDC):

# samba-tool user add user2

User ‘user2’ created successfully

Ждем репликации, по ее окончанию проверяем:

# wbinfo –u

Administrator
Guest
krbtgt
user1
user2

На windows 2008 server учетные записи тоже появились.

Примечание: В данной статье не учитывается, что схема могла быть предварительно расширена, например Microsoft Exchange. Проверить на практике мне пока не удалось, однако есть основания полагать, что samba 4 корректно подключится и к этому домену. Если у вас есть положительный опыт, просьба оставить комментарий под этой статьей.

9 комментариев

Подключил по вашей схеме Samba Version 4.0.8 на Freebsd 9.1 к SBS 2003 с родным Microsoft Exchange.
Выдается предупреждение
Process MAD.EXE (PID=1988). The Domain Controller VMBSD.domen.local is running (Unknown Operating System) (Unknown Service Pack). DSAccess requires that Domain Controllers that run Windows 2000 have at least Service Pack 3 installed.
но все работает

статья конечно старенькая, но актуальная. По всему интернету ходят обсуждения что Primary DNS: 127.0.0.1 нельзя ставить, нужно писать ip адрес сетевой карты.
Скажите где можно прочитать про это первоисточники. как же всетаки правильно?

Странно. За давностью я уже не вспомню, чем я руководствовался.
Но могу сказать одно, что все статьи писал только по результатам собственной настройки. Т.е., если я указывал 127.0.0.1, то это был рабочий вариант.
Ну, а первоисточник samba.org :=)

Здравствуйте! Пытаюсь съехать в windows домена используя ваши наработки (огромное спасибо за них), но у меня не получается ((. Если у вас найдётся время и желание мне помочь и поделиться своим опытом то я буду очень признателен . Самбу собираю из исходников 4.6 на Ubuntu 16.04.2 LTS. собралась, запустилась на конфиге
[global]
workgroup = TESTDOMAIN.RU
realm = TESTDOMAIN.RU
netbios name = PDC
dns forwarder = 10.0.2.11
idmap config TESTDOMAIN.RU : backend = ad
idmap config TESTDOMAIN.RU : schema_mode = rfc2307
idmap config TESTDOMAIN.RU : range = 10000-99999
server role = classic backup domain controller
server services = +smb
hosts allow = 10.0. 127.
log file = /var/log/samba/log.%m
max log size = 50
[homes]
comment = Home Directories
browseable = no
writable = yes

# Un-comment the following and create the netlogon directory for Domain Logons
[netlogon]
comment = Network Logon Service
path = /usr/local/samba/lib/netlogon
guest ok = yes
writable = no

[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No

пытаюсь подключиться к существующему АД на Windows 2008 R2
samba-tool domain join testdomain.ru DC -Uadm —realm=testdomain.ru —dns-backend=BIND9_DLZ —verbose —debuglevel=999

неудачно
в конце выкидывает вот это
ldb: ldb_asprintf/set_errstring: dsdb_search at ../source4/dsdb/common/util.c:4576
Could not find machine account in secrets database: Failed to fetch machine account password for testdomain from both secrets.ldb (Could not find entry to match filter:
‘(&(flatname=testdomain)(objectclass=primaryDomain))’ base: ‘cn=Primary Domains’: No such object: dsdb_search at ../source4/dsdb/common/util.c:4576) and from
/usr/local/samba/private/secrets.tdb: NT_STATUS_CANT_ACCESS_DOMAIN_INFO
Deleted CN=DCS1,OU=Domain Controllers,DC=testdomain,DC=ru
Deleted CN=NTDS Settings,CN=DCS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=testdomain,DC=ru
Deleted CN=DCS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=testdomain,DC=ru
ERROR(ldb): uncaught exception — LDAP error 1 LDAP_OPERATIONS_ERROR —
File «/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/__init__.py», line 176, in _run
return self.run(*args, **kwargs)
File «/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/domain.py», line 661, in run
machinepass=machinepass, use_ntvfs=use_ntvfs, dns_backend=dns_backend)
File «/usr/local/samba/lib/python2.7/site-packages/samba/join.py», line 1269, in join_DC
ctx.do_join()
File «/usr/local/samba/lib/python2.7/site-packages/samba/join.py», line 1175, in do_join
ctx.join_add_objects()
File «/usr/local/samba/lib/python2.7/site-packages/samba/join.py», line 643, in join_add_objects
ctx.samdb.modify(m)
s4_tevent: Schedule immediate event «tevent_req_trigger»: 0x25c7450
s4_tevent: Cancel immediate event 0x25c7450 «tevent_req_trigger»

файлы secrets.ldb и secrets.tdb есть , самба их создала и заполнила

Благодарю за ответ. Разобрался сам, samba не входила из-за ограничения в 15 символов имени домена. Ищу патчик на увеличение лимита . Не встречали подобное случаем ?
Вариант с изменением имени домена возможен , но череват геморроем.

Нет не встречал. Не было задачи.
Предполагал, что проблема может быть в чём-то подобном: сепаратор, количество символов или не правильно интерпретируемый символ.

простите если надоел )) но есть ещё вопрос и я буду очень признателен если поможете. сделал практически по вашей статье.
есть виндовый pdc на windows 2008r2 и samba4.6 в качестве вторичного dc. samba авторизирует, заводит и тд всё норм, НО репликация работает только на чтение. (считать схему с другого dc и записать к себе. что самба, что вин)
samba-tool drs showrepl — всё ок
samba_dnsupdate —verbose —all-names — всё ок

samba-tool drs replicate dc1 dcs1 dc=domain,dc=ru
ERROR(): DsReplicaSync failed — drsException: DsReplicaSync failed (8418, ‘WERR_DS_DRA_SCHEMA_MISMATCH’)
File «/dc_app/samba/lib/python2.7/site-packages/samba/netcmd/drs.py», line 368, in run
drs_utils.sendDsReplicaSync(server_bind, server_bind_handle, source_dsa_guid, NC, req_options)
File «/dc_app/samba/lib/python2.7/site-packages/samba/drs_utils.py», line 83, in sendDsReplicaSync
raise drsException(«DsReplicaSync failed %s» % estr)

на винде в оснастке сайты и сервисе принудительная репликация на самбовский дс не проходит, пришет : the stub reseived bad data

ошибка на винде
Replication of application directory partition DC=domain,DC=ru from source 603e9ad7-b2ac-484e-b207-7b884c4349a7 (dcs1.domain.ru) has been aborted. Replication requires consistent schema but last attempt to synchornize the schema had failed. It is crucial that schema replication functions properly. See previous errors for more diagnostics. If this issue persists, please contact Microsoft Product Support Services for assistance. Error 8418: The replication operation failed because of a schema mismatch between the servers involved..

заранее благодарен

Добавить комментарий