Skip to content

Document Header

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

Подключение samba 4 (BDC) к windows server (PDC) published on 8 комментариев к записи Подключение 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 корректно подключится и к этому домену. Если у вас есть положительный опыт, просьба оставить комментарий под этой статьей.

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

Подключил по вашей схеме 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 символов имени домена. Ищу патчик на увеличение лимита . Не встречали подобное случаем ?
Вариант с изменением имени домена возможен , но череват геморроем.

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

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