Подключение к Samba внешнего недоверенного домена

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Dmitriy_K
сержант
Сообщения: 200
Зарегистрирован: 2009-04-07 6:22:33
Откуда: г.Королёв

Подключение к Samba внешнего недоверенного домена

Непрочитанное сообщение Dmitriy_K » 2011-03-21 15:12:20

Сломал мозг над такой проблемой. :cz2:
В локалке с десятком доменов налажена NTLM-авторизация для корпоративного сайта через Samba+Winbind. Всё работало нормально, но появился новый домен, который наши сетевики не хотят прописывать в виндовом AD как доверенный домен (все другие - доверенные). Для него налаженная схема не работает. Запрос авторизации пересылается Самбой на контролёр своего домена (к которому присоединена), а он заявляет, что ничего не знает об этом недоверенном домене. Можно ли что-то сделать, чтобы запросы отсылались на контролёр соответствующего домена вместо домашнего?
Адресация на новый домен работает нормально, все отклики правильные по:

Код: Выделить всё

host -t SRV _ldap._tcp.samara.ru
nslookup -type=srv _ldap._tcp.samara.ru
dig SRV _ldap._tcp.samara.ru
Но Samba информацию о домене не находит:

Код: Выделить всё

# wbinfo -D samara.ru
Could not get domain info
Конфиг самбы такой:

Код: Выделить всё

[global]
;allow trusted domains = no
auth methods = winbind
case sensitive = no

;winbind separator = +
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = no
winbind trusted domains only = no
winbind refresh tickets = yes
winbind cache time = 60
restrict anonymous = 2

    workgroup = DOMEN.RU
    realm = DOMEN.RU
    security = ADS
    netbios name = intranet
    server string = Samba Server

    password server = *
    encrypt passwords = yes
;   wins support = no
;   dns proxy = yes

    socket options = SO_RCVBUF=8192 SO_SNDBUF=8192
    name resolve order = lmhosts hosts wins bcast

    load printers = no
    disable spoolss = yes
    show add printer wizard = no

    log file = /var/log/samba34/log.%m
    max log size = 100
    log level = 3

    local master = no
;   os level = 33
    domain master = no
    preferred master = no

;   ldap ssl = off
    nt acl support = yes
    client use spnego = yes
;   client signing = yes
    invalid users = root

# Use inherited ACLs for directories
;    nt acl support = yes
;    inherit acls = yes
;    map acl inherit = yes

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Dmitriy_K
сержант
Сообщения: 200
Зарегистрирован: 2009-04-07 6:22:33
Откуда: г.Королёв

Re: Подключение к Samba внешнего недоверенного домена

Непрочитанное сообщение Dmitriy_K » 2011-03-22 20:34:05

Кто-нибудь может хотя бы подсказать такой общий вопрос:
Может ли Samba работать в многодоменной сети включающей домены, которые не прописаны в AD к которой присоединена Samba?
Есть ли упоминания об этом в документации? (Я не нашёл.)

Alteron
сержант
Сообщения: 230
Зарегистрирован: 2008-07-21 9:35:11

Re: Подключение к Samba внешнего недоверенного домена

Непрочитанное сообщение Alteron » 2011-03-23 13:27:48

А если в локальном ДНС на самбе прописать зону недоверенного домена на форвардинг запросов на нужный ДНС? Или в hosts сделать записи.
Измеритель верёвочками.

Dmitriy_K
сержант
Сообщения: 200
Зарегистрирован: 2009-04-07 6:22:33
Откуда: г.Королёв

Re: Подключение к Samba внешнего недоверенного домена

Непрочитанное сообщение Dmitriy_K » 2011-03-23 14:22:59

Я уже упоминал, что
Адресация на новый домен работает нормально, все отклики правильные по:

Код: Выделить всё

host -t SRV _ldap._tcp.samara.ru
nslookup -type=srv _ldap._tcp.samara.ru
dig SRV _ldap._tcp.samara.ru
Сначала сделал это через добавление в resolv.conf DNS домена samara.ru, потом попробовал добавить SRV-запись на собственном локальном DNS, потом сетевики добавили SRV-запись на контролёр моего домена (без установки доверенных отношений с этим доменом). Во всех случаях адрес удалённого домена определяется нормально, но Samba домен samara.ru не видит:

Код: Выделить всё

# wbinfo -D samara.ru
Could not get domain info
Я не могу понять: Samba в принципе не видит домены у которых нет доверенных отношений с доменом к которому присоединена?
Можно ли присоединить Самбу к нескольким доменам? Или нужно установить доверенные отношения сервера Самбы с этим недоверенным доменом?

Dmitriy_K
сержант
Сообщения: 200
Зарегистрирован: 2009-04-07 6:22:33
Откуда: г.Королёв

Re: Подключение к Samba внешнего недоверенного домена

Непрочитанное сообщение Dmitriy_K » 2011-03-23 18:28:12

При тестовом запросе wbinfo -i test1@samara.ru логах такое:

Код: Выделить всё

[2011/03/23 18:21:32,  3] winbindd/winbindd_user.c:438(winbindd_getpwnam)
  [60716]: getpwnam test1@samara.ru
[2011/03/23 18:21:32,  7] winbindd/winbindd_user.c:464(winbindd_getpwnam)
  could not find domain entry for domain SAMARA.RU.  Using primary domain
[2011/03/23 18:21:32, 10] winbindd/winbindd_dual.c:125(async_request)
  Sending request to child pid 60643 (domain=DOMEN.RU)
[2011/03/23 18:21:32, 10] lib/events.c:287(s3_event_debug)
  s3_event: Added timed event "async_request_timeout_handler": 0x202b30990
[2011/03/23 18:21:32, 10] lib/events.c:148(get_timed_events_timeout)
  timed_events_timeout: 299/999978
[2011/03/23 18:21:32, 10] lib/events.c:287(s3_event_debug)
  s3_event: Destroying timer event 0x202b30990 "async_request_timeout_handler"
[2011/03/23 18:21:32, 10] winbindd/winbindd_cache.c:2667(cache_retrieve_response)
  Retrieving response for pid 60643
[2011/03/23 18:21:32, 10] winbindd/winbindd_dual.c:125(async_request)
  Sending request to child pid 60643 (domain=DOMEN.RU)
[2011/03/23 18:21:32, 10] lib/events.c:287(s3_event_debug)
  s3_event: Added timed event "async_request_timeout_handler": 0x202e654d0
[2011/03/23 18:21:32, 10] lib/events.c:148(get_timed_events_timeout)
  timed_events_timeout: 299/999979
[2011/03/23 18:21:32, 10] lib/events.c:287(s3_event_debug)
  s3_event: Destroying timer event 0x202e654d0 "async_request_timeout_handler"
[2011/03/23 18:21:32, 10] winbindd/winbindd_cache.c:2667(cache_retrieve_response)
  Retrieving response for pid 60643
[2011/03/23 18:21:32,  5] winbindd/winbindd_async.c:296(lookupname_recv2)
  lookup_name returned an error
[2011/03/23 18:21:32,  5] winbindd/winbindd_user.c:497(getpwnam_name2sid_recv)
  Could not lookup name for user test1@samara.ru

Dmitriy_K
сержант
Сообщения: 200
Зарегистрирован: 2009-04-07 6:22:33
Откуда: г.Королёв

Re: Подключение к Samba внешнего недоверенного домена

Непрочитанное сообщение Dmitriy_K » 2011-03-25 19:01:02

Вопрос решился. Как выяснилось, Samba может устанавливать прямые отношения с доменами только в режиме контролёра домена (по текущим соображениям у нас решили, что это нежелательно использовать). В режиме члена домена Samba не видит недоверенные домены, так как видит только то, что видит сервер AD, домена к которому она привязана. Так что необходимо устанавливать, как минимум, одностороннее доверие или транзитивную передачу доверия к домену, который желает добраться до ресурсов сервера Самбы.
Нашёл некоторые полезные разъяснения по этой теме здесь:
http://stuff.mit.edu/afs/sipb/project/s ... rusts.html
http://technet.microsoft.com/en-us/libr ... S.10).aspx

После того, как у нас было установлено доверенное отношение к новому домену, всё заработало.

Код: Выделить всё

[2011/03/25 18:27:21,  3] winbindd/winbindd_cm.c:1597(connection_ok)
  connection_ok: Connection to HOLDER for domain SAMARA is not connected
[2011/03/25 18:27:21,  3] libsmb/namequery.c:1309(resolve_hosts)
  resolve_hosts: Attempting host lookup for name HOLDER<0x20>
[2011/03/25 18:27:21,  3] libsmb/namequery.c:1328(resolve_hosts)
  resolve_hosts: getaddrinfo failed for name HOLDER [hostname nor servname provided, or not known]
[2011/03/25 18:27:21,  3] libsmb/namequery.c:1091(resolve_wins)
  resolve_wins: Attempting wins lookup for name HOLDER<0x20>
[2011/03/25 18:27:21,  3] libsmb/namequery.c:1095(resolve_wins)
  resolve_wins: WINS server resolution selected and no WINS servers listed.
[2011/03/25 18:27:21,  3] libsmb/namequery.c:1018(name_resolve_bcast)
  name_resolve_bcast: Attempting broadcast lookup for name HOLDER<0x20>
[2011/03/25 18:27:22,  2] lib/util_tdb.c:385(tdb_log)
  tdb(unnamed): tdb_open_ex: could not open file /var/db/samba34/unexpected.tdb: No such file or directory
[2011/03/25 18:27:22,  2] lib/util_tdb.c:385(tdb_log)
  tdb(unnamed): tdb_open_ex: could not open file /var/db/samba34/unexpected.tdb: No such file or directory
[2011/03/25 18:27:22,  2] lib/util_tdb.c:385(tdb_log)
  tdb(unnamed): tdb_open_ex: could not open file /var/db/samba34/unexpected.tdb: No such file or directory
[2011/03/25 18:27:22,  2] lib/util_tdb.c:385(tdb_log)
  tdb(unnamed): tdb_open_ex: could not open file /var/db/samba34/unexpected.tdb: No such file or directory
[2011/03/25 18:27:22,  2] lib/util_tdb.c:385(tdb_log)
  tdb(unnamed): tdb_open_ex: could not open file /var/db/samba34/unexpected.tdb: No such file or directory
[2011/03/25 18:27:22,  2] lib/util_tdb.c:385(tdb_log)
  tdb(unnamed): tdb_open_ex: could not open file /var/db/samba34/unexpected.tdb: No such file or directory
[2011/03/25 18:27:22,  2] lib/util_tdb.c:385(tdb_log)
  tdb(unnamed): tdb_open_ex: could not open file /var/db/samba34/unexpected.tdb: No such file or directory
[2011/03/25 18:27:22,  2] lib/util_tdb.c:385(tdb_log)
  tdb(unnamed): tdb_open_ex: could not open file /var/db/samba34/unexpected.tdb: No such file or directory
[2011/03/25 18:27:22,  2] lib/util_tdb.c:385(tdb_log)
  tdb(unnamed): tdb_open_ex: could not open file /var/db/samba34/unexpected.tdb: No such file or directory
[2011/03/25 18:27:22,  3] winbindd/winbindd_cm.c:1597(connection_ok)
  connection_ok: Connection to dc01.domen.ru for domain domen.ru is not connected
[2011/03/25 18:27:22,  3] libsmb/namequery.c:1309(resolve_hosts)
  resolve_hosts: Attempting host lookup for name dc01.domen.ru<0x20>
[2011/03/25 18:27:22,  3] libsmb/namequery.c:1974(get_dc_list)
  get_dc_list: preferred server list: ", *"
[2011/03/25 18:27:29,  1] libads/cldap.c:156(recv_cldap_netlogon)
  no reply received to cldap netlogon (select timeout 7 sec)
[2011/03/25 18:27:29,  3] libads/ldap.c:218(ads_try_connect)
  ads_try_connect: CLDAP request 192.168.96.50 failed.
[2011/03/25 18:27:29,  3] libads/ldap.c:621(ads_connect)
  Successfully contacted LDAP server 10.48.34.50
[2011/03/25 18:27:29,  3] libsmb/namequery.c:1974(get_dc_list)
  get_dc_list: preferred server list: ", *"
[2011/03/25 18:27:29,  3] libsmb/namequery.c:1974(get_dc_list)
  get_dc_list: preferred server list: ", *"
[2011/03/25 18:27:29,  3] libsmb/namequery.c:1974(get_dc_list)
  get_dc_list: preferred server list: ", *"
[2011/03/25 18:27:29,  3] libsmb/namequery.c:1974(get_dc_list)
  get_dc_list: preferred server list: ", *"
[2011/03/25 18:27:29,  3] libads/ldap.c:621(ads_connect)
  Successfully contacted LDAP server 10.48.34.50
[2011/03/25 18:27:29,  3] libsmb/namequery.c:1974(get_dc_list)
  get_dc_list: preferred server list: ", *"
[2011/03/25 18:27:29,  3] libsmb/namequery.c:1974(get_dc_list)
  get_dc_list: preferred server list: ", *"
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:940(cli_session_setup_spnego)
  Doing spnego session setup (blob length=136)
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:967(cli_session_setup_spnego)
  got OID=1.3.6.1.4.1.311.2.2.30
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:967(cli_session_setup_spnego)
  got OID=1.2.840.48018.1.2.2
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:967(cli_session_setup_spnego)
  got OID=1.2.840.113554.1.2.2
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:967(cli_session_setup_spnego)
  got OID=1.2.840.113554.1.2.2.3
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:967(cli_session_setup_spnego)
  got OID=1.3.6.1.4.1.311.2.2.10
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:975(cli_session_setup_spnego)
  got principal=not_defined_in_RFC4178@please_ignore
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:1019(cli_session_setup_spnego)
  cli_session_setup_spnego: got a bad server principal, trying to guess ...
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:1048(cli_session_setup_spnego)
  cli_session_setup_spnego: guessed server principal=open-dc01$@domen.ru
[2011/03/25 18:27:29,  2] libsmb/cliconnect.c:739(cli_session_setup_kerberos)
  Doing kerberos session setup
[2011/03/25 18:27:29,  3] libsmb/clikrb5.c:620(ads_cleanup_expired_creds)
  ads_cleanup_expired_creds: Ticket in ccache[MEMORY:cliconnect] expiration Sat, 26 Mar 2011 04:27:29 MSK
[2011/03/25 18:27:29,  3] libsmb/namequery.c:1309(resolve_hosts)
  resolve_hosts: Attempting host lookup for name Holder.SAMARA.RU<0x20>
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:940(cli_session_setup_spnego)
  Doing spnego session setup (blob length=109)
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:967(cli_session_setup_spnego)
  got OID=1.2.840.48018.1.2.2
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:967(cli_session_setup_spnego)
  got OID=1.2.840.113554.1.2.2
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:967(cli_session_setup_spnego)
  got OID=1.2.840.113554.1.2.2.3
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:967(cli_session_setup_spnego)
  got OID=1.3.6.1.4.1.311.2.2.10
[2011/03/25 18:27:29,  3] libsmb/cliconnect.c:975(cli_session_setup_spnego)
  got principal=holder$@SAMARA.RU
[2011/03/25 18:27:30,  2] libsmb/cliconnect.c:739(cli_session_setup_kerberos)
  Doing kerberos session setup
[2011/03/25 18:27:30,  3] libsmb/clikrb5.c:620(ads_cleanup_expired_creds)
  ads_cleanup_expired_creds: Ticket in ccache[MEMORY:cliconnect] expiration Sat, 26 Mar 2011 04:27:29 MSK
[2011/03/25 18:27:34,  3] winbindd/winbindd_user.c:166(winbindd_dual_userinfo)
  [26084]: lookupsid S-1-5-21-823518204-616249376-839522115-2662
[2011/03/25 18:27:34,  3] winbindd/winbindd_ads.c:1203(sequence_number)
  ads: fetch sequence_number for SAMARA
[2011/03/25 18:27:34,  3] libsmb/namequery.c:1974(get_dc_list)
  get_dc_list: preferred server list: "Holder.SAMARA.RU, *"
[2011/03/25 18:27:34,  3] libads/ldap.c:621(ads_connect)
  Successfully contacted LDAP server 192.168.100.3
[2011/03/25 18:27:34,  3] libsmb/namequery.c:1974(get_dc_list)
  get_dc_list: preferred server list: "Holder.SAMARA.RU, *"
[2011/03/25 18:27:34,  3] libads/ldap.c:621(ads_connect)
  Successfully contacted LDAP server 192.168.100.3
[2011/03/25 18:27:34,  3] libads/ldap.c:621(ads_connect)
  Successfully contacted LDAP server 192.168.100.3
[2011/03/25 18:27:49,  3] libads/ldap.c:675(ads_connect)
  Connected to LDAP server Holder.SAMARA.RU
[2011/03/25 18:27:49,  3] libads/sasl.c:780(ads_sasl_spnego_bind)
  ads_sasl_spnego_bind: got OID=1.2.840.48018.1.2.2
[2011/03/25 18:27:49,  3] libads/sasl.c:780(ads_sasl_spnego_bind)
  ads_sasl_spnego_bind: got OID=1.2.840.113554.1.2.2
[2011/03/25 18:27:49,  3] libads/sasl.c:780(ads_sasl_spnego_bind)
  ads_sasl_spnego_bind: got OID=1.2.840.113554.1.2.2.3
[2011/03/25 18:27:49,  3] libads/sasl.c:780(ads_sasl_spnego_bind)
  ads_sasl_spnego_bind: got OID=1.3.6.1.4.1.311.2.2.10
[2011/03/25 18:27:49,  3] libads/sasl.c:789(ads_sasl_spnego_bind)
  ads_sasl_spnego_bind: got server principal name = holder$@SAMARA.RU
[2011/03/25 18:27:49,  3] libsmb/clikrb5.c:687(ads_krb5_mk_req)
  ads_krb5_mk_req: krb5_cc_get_principal failed (No such file or directory)
[2011/03/25 18:27:49,  3] libsmb/clikrb5.c:620(ads_cleanup_expired_creds)
  ads_cleanup_expired_creds: Ticket in ccache[MEMORY:winbind_ccache] expiration Sat, 26 Mar 2011 04:27:49 MSK
[2011/03/25 18:27:49,  3] winbindd/winbindd_ads.c:467(query_user)
  ads: query_user
[2011/03/25 18:27:49,  3] winbindd/winbindd_ads.c:569(query_user)
  ads query_user gave test1
Теперь осталось обновить Самбу. С этим оказался тоже затык. :(
У меня: FreeBSD *** 8.0-RELEASE-p3 FreeBSD 8.0-RELEASE-p3 #0: Tue May 25 20:54:11 UTC 2010 GENERIC amd64
По непонятным причинам порты Самбы v3.4-3.5 в конце сборки не находят путь к директории с установленным kerberos, и останавливают сборку.
Эта проблема существует уже не менее полугода, и упоминается в инете:
http://forums.freebsd.org/showthread.php?t=21461
Если упомянутый там способ сработает, сообщу.

snorlov
подполковник
Сообщения: 3929
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Подключение к Samba внешнего недоверенного домена

Непрочитанное сообщение snorlov » 2011-03-25 20:07:00

вообще-то к мантейнеру пакетов samba34-35 у меня тоже претензии, при установки с портов эти пакеты используют каталоги .../samba34-35, а не .../samba3, приходится makefile редактировать

Dmitriy_K
сержант
Сообщения: 200
Зарегистрирован: 2009-04-07 6:22:33
Откуда: г.Королёв

Re: Подключение к Samba внешнего недоверенного домена

Непрочитанное сообщение Dmitriy_K » 2011-03-28 12:29:11

Да, порты Samba в последнее время какие-то неухоженные стали. И ошибки в Maikefile из-за которых сборка не проходит, и существенное отставание в обновлении версий. К сожалению, тянуть такую работу мало кому под силу.
Справился я с проблемой сборки. Действительно, она возникает из-за подстановки неправильных путей к Kerberos в Maikefile портов Samba. Там почему-то путь KRB5_HOME определяется как "/usr" вместо "/usr/local". В "/usr" стоит системный, BSD-шный Kerberos, который почему-то урезан и не обеспечивает работу с AD Windows. Соответственно, Samba при сборке с опцией поддержки AD это обнаруживает и выдаёт ошибки такого вида (в зависимости от версии порта):

Код: Выделить всё

configure: error: krb5 libs don't have all features required for Active Directory support
===>  Script "configure" failed unexpectedly.
Please report the problem to timur@FreeBSD.org [maintainer] and attach the
"/usr/ports/net/samba34/work/samba-3.4.9/source3/config.log" including the
output of the failure of your make command. Also, it might be a good idea to
provide an overview of all packages installed on your system (e.g. an `ls
/var/db/pkg`).
*** Error code 1
-----------------------------------------------------------------
или
-----------------------------------------------------------------
bin/libwbclient.a(wbc_pwd.o): In function `wbcGetGroups':
wbc_pwd.c:(.text+0xae6): undefined reference to `_talloc_array'
collect2: ld returned 1 exit status
gmake: *** [bin/winbind_krb5_locator.so] Error 1
*** Error code 1
Лечится эта проблема прописанием правильного пути в Maikefile к установленному Kerberos:

Код: Выделить всё

.elif exists(/usr/lib/libkrb5.so) && exists(/usr/bin/krb5-config)
CONFIGURE_ARGS+=	--with-krb5="/usr/local"
После сборки, для обеспечения полного фукнкционала взаимодействия Kerberos с AD, ещё почему-то вручную требуется скопировать модуль winbind_krb5_locator.so
из /usr/ports/net/samba34/work/samba-3.4.9/source3/bin
в /usr/local/lib/krb5/plugins/libkrb5/
Напишу письмо майнтейнеру, конечно.
Спасибо всем, кто смог дочитать до этого места. :smile:

ыть
проходил мимо

Re: Подключение к Samba внешнего недоверенного домена

Непрочитанное сообщение ыть » 2011-09-23 13:13:11

по-моему чота вы лишнего намудрили..
были у меня такие ошибки тоже..
после установки heimdal всё скомпилялось без пинков и задоринок