bind99 + ldap

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

bind99 + ldap

Непрочитанное сообщение fox » 2013-04-24 13:34:24

И снова DNS нас радует.
В портах исчез порт bind97-sdb, есть bind96, bind98, bind99.
Берём порт например bind99, включаем поддержку ldap

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

test# make showconfig
===> The following configuration options are available for bind99-9.9.2.2:
     FIXED_RRSET=off: Enable fixed rrset ordering
     IDN=off: International Domain Names support
     IPV6=off: IPv6 protocol support
     LARGE_FILE=off: 64-bit file support
     LINKS=on: Create conf file symlinks in /usr/local
     REPLACE_BASE=off: Replace base BIND with this version
     RPZRRL_PATCH=off: RPZ improvements + RRL patch (experimental)
     RPZ_NSDNAME=off: Enable RPZ NSDNAME policy records
     RPZ_NSIP=off: Enable RPZ NSIP trigger rules
     SIGCHASE=off: dig/host/nslookup will do DNSSEC validation
     SSL=on: Build with OpenSSL (Required for DNSSEC)
     THREADS=on: Threading support
     XML=on: Support for xml statistics output
====> Options available for the group DLZ
     DLZ_POSTGRESQL=off: DLZ Postgres driver
     DLZ_MYSQL=off: DLZ MySQL driver (no threading)
     DLZ_BDB=off: DLZ BDB driver
     DLZ_LDAP=on: DLZ LDAP driver
     DLZ_FILESYSTEM=off: DLZ filesystem driver
     DLZ_STUB=off: DLZ stub driver
===> Use 'make config' to modify these settings

Собираем, разумеется за собой зависимостью потянется ldap:

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

test# pkg_info |grep ldap
openldap-client-2.4.35 Open source LDAP client implementation
Вот, что может named после сборки:

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

test# /usr/local/sbin/named -V
BIND 9.9.2-P2 built with '--localstatedir=/var' '--disable-linux-caps' '--disable-symtable' '--with-randomdev=/dev/random' '--without-python' '--with-openssl=/usr' '--without-libxml2' '--without-idn' '--with-dlz-bdb=yes' '--with-dlz-ldap=yes' '--with-dlz-filesystem=yes' '--with-dlz-stub=yes' '--enable-threads' '--prefix=/usr/local' '--mandir=/usr/local/man' '--infodir=/usr/local/info/' '--build=i386-portbld-freebsd9.1' 'build_alias=i386-portbld-freebsd9.1' 'CC=cc' 'CFLAGS=-O2 -pipe -DLDAP_DEPRECATED -fno-strict-aliasing' 'LDFLAGS= -Wl,-rpath=/usr/lib:/usr/local/lib' 'CPPFLAGS=' 'CPP=cpp' 'CXX=c++' 'CXXFLAGS=-O2 -pipe -DLDAP_DEPRECATED -fno-strict-aliasing'
using OpenSSL version: OpenSSL 0.9.8x 10 May 2012

Вроде как ldap присутствует.

А при старте он выдаёт:

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

Apr 24 13:22:38 test named[1830]: starting BIND 9.9.2-P2 -c /etc/namedb/named.conf -t /var/named -u bind
Apr 24 13:22:38 test named[1830]: built with '--localstatedir=/var' '--disable-linux-caps' '--disable-symtable' '--with-randomdev=/dev/random' '--without-python' '--with-openssl=/usr' '--without-libxml2' '--without-idn' '--with-dlz-bdb=yes' '--with-dlz-ldap=yes' '--with-dlz-filesystem=yes' '--with-dlz-stub=yes' '--enable-threads' '--prefix=/usr/local' '--mandir=/usr/local/man' '--infodir=/usr/local/info/' '--build=i386-portbld-freebsd9.1' 'build_alias=i386-portbld-freebsd9.1' 'CC=cc' 'CFLAGS=-O2 -pipe -DLDAP_DEPRECATED -fno-strict-aliasing' 'LDFLAGS= -Wl,-rpath=/usr/lib:/usr/local/lib' 'CPPFLAGS=' 'CPP=cpp' 'CXX=c++' 'CXXFLAGS=-O2 -pipe -DLDAP_DEPRECATED -fno-strict-aliasing'
Apr 24 13:22:38 test named[1830]: ----------------------------------------------------
Apr 24 13:22:38 test named[1830]: BIND 9 is maintained by Internet Systems Consortium,
Apr 24 13:22:38 test named[1830]: Inc. (ISC), a non-profit 501(c)(3) public-benefit
Apr 24 13:22:38 test named[1830]: corporation.  Support and training for BIND 9 are
Apr 24 13:22:38 test named[1830]: available at https://www.isc.org/support
Apr 24 13:22:38 test named[1830]: ----------------------------------------------------
Apr 24 13:22:38 test named[1830]: command channel listening on 127.0.0.1#953
Apr 24 13:22:38 test named[1830]: the working directory is not writable
Apr 24 13:22:38 test named[1830]: unsupported database type 'ldap'
Apr 24 13:22:38 test named[1830]: zone test.local/IN: loading zone: creating database: not found
Apr 24 13:22:38 test named[1830]: all zones loaded
Apr 24 13:22:38 test named[1830]: running

Ну и какого банана он не знает об ldap?

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

Apr 24 13:22:38 test named[1830]: unsupported database type 'ldap'
Apr 24 13:22:38 test named[1830]: zone test.local/IN: loading zone: creating database: not found
Сервак на котором ldap с ним всё в порядке потому, что когда откатить порты и собрать
bind97-sdb, там всё ОК!
Рылся в документации на сайте ISC у меня всё правильно настроено, и по идеи вопросов не должно быть.
Вопрос старый но блин что то надо делать ведь ldap-перов не мало живёт на земле…
У кого есть какие соображения и он знает больше меня прошу поделиться или направить.
В гугле был не чего полезного, тролей порошу совсем не писать!
Спасибо за внимание.
Да пребудет с нами сила!!!
Всех убью, один останусь!

Хостинговая компания 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/

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 332
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

Re: bind99 + ldap

Непрочитанное сообщение Amadeus » 2013-05-20 18:48:11

Весьма, кстати интересующий и меня вопрос. По поводу как это должно работать, судя по всему вот
http://bind-dlz.sourceforge.net/ldap_driver.html. Это, надо тока нормально осмыслить. Может вдвоем быстрее получится)
Нет ничего невозможного

Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: bind99 + ldap

Непрочитанное сообщение fox » 2013-05-20 20:29:47

Спасибо. Согласен есть над чем подумать, но пока я там нового не чего не нашёл...
Да пребудет с нами сила!!!
Всех убью, один останусь!

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 332
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

Re: bind99 + ldap

Непрочитанное сообщение Amadeus » 2013-05-20 20:38:56

Ну как минимум различие в методе объявления ldapa в named.conf

По ссылке его вынесли вот в такой блок

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


dlz "ldap zone" {
        database "ldap 2
        v3 simple {cn=Manager,o=bind-dlz} {secret} {192.168.2.12 192.168.2.14}
        ldap:///dlzZoneName=%zone%,ou=dns,o=bind-dlz???objectclass=dlzZone
  
};
А в старом методе

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

database "ldap ldap://10.0.2.254 бла бла бла
Нет ничего невозможного

Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: bind99 + ldap

Непрочитанное сообщение fox » 2013-05-20 23:08:57

Да я поторопился. Там дафига нового на свежую голову я много всего обнаружил и в принципе всё понял. Надо на виртуалке по свободному времени опробовать, отпишусь когда попробую...
Да пребудет с нами сила!!!
Всех убью, один останусь!

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 332
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

Re: bind99 + ldap

Непрочитанное сообщение Amadeus » 2013-05-21 14:50:54

С новым методом, бинд уже не говорит, что он не знает лдапа, а вываливает фаталку, что есть хорошо -

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

May 21 14:46:53 gw-kiev named[28520]: ----------------------------------------------------
May 21 14:46:53 gw-kiev named[28520]: BIND 9 is maintained by Internet Systems Consortium,
May 21 14:46:53 gw-kiev named[28520]: Inc. (ISC), a non-profit 501(c)(3) public-benefit
May 21 14:46:53 gw-kiev named[28520]: corporation.  Support and training for BIND 9 are
May 21 14:46:53 gw-kiev named[28520]: available at https://www.isc.org/support
May 21 14:46:53 gw-kiev named[28520]: ----------------------------------------------------
May 21 14:46:53 gw-kiev named[28520]: LDAP driver requires at least 8 command line args.
May 21 14:46:53 gw-kiev named[28520]: SDLZ driver failed to load.
May 21 14:46:53 gw-kiev named[28520]: DLZ driver failed to load.
May 21 14:46:53 gw-kiev named[28520]: loading configuration: failure
May 21 14:46:53 gw-kiev named[28520]: exiting (due to fatal error)
Осталось разобраться с синтаксисом и вопрос можно будет закрывать.
Нет ничего невозможного

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 332
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

Re: bind99 + ldap

Непрочитанное сообщение Amadeus » 2013-05-21 19:06:12

Ну, собственно, черт, я бы даже сказал чертик, оказался не таким страшным, как его малюют :roll:

Там, достаточно все просто, надо только понять логику.

Итак, что бы у вас заработала связка bind99 + ldap надо сделать следующее:

Тут условие, что у меня ldap не с динамической конфигурацией, но я думаю, там не сильно отличается по алгоритму.

1) В первую очередь надо подключить в slapd.conf схему dlz, ее можно взять, например, отсюда http://www.filewatcher.com/m/DLZ-0.7.0. ... 768-0.html. Скачав целиком, и вытянув файл схемы (может быть можно по-другому, не суть.)

2) Идем в named.conf и пишем вот примерно такой коннектор

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

dlz "ldap zone" {
    database "ldap 1
v3 simple {тут пользователь} {тут пароль} тут адрес сервера
ldap:///dlzZoneName=$zone$,ou=dns,dc=domain,dc=ru???objectclass=dlzZone
ldap:///dlzHostName=$record$,dlzZoneName=$zone$,ou=dns,dc=dc=domain,dc=ru?dlzTTL,dlzType,dlzPreference,dlzData,dlzIPAddr,dlzPrimaryNS,dlzAdminEmail,dlzSerial,dlzRefresh,dlzRetry,dlzExpire,dlzMinimum?sub?objectclass=dlzAbstractRecord
{}
ldap:///dlzZoneName=$zone$,ou=dns,dc=dc=domain,dc=ru?dlzTTL,dlzType,dlzHostName,dlzPreference,dlzData,dlzIPAddr,dlzPrimaryNS,dlzAdminEmail,dlzSerial,dlzRefresh,dlzRetry,dlzExpire,dlzMinimum?sub?objectclass=dlzAbstractRecord
ldap:///dlzZoneName=$zone$,ou=dns,dc=dc=domain,dc=ru??sub?(&(objectclass=dlzXFR)(dlzIPAddr=$client$))";
};
3) Перестартовываем ldap


4) Наполняем БД ldifами, тут могут быть разные ситуации, как говорится каждому по потребностям, общий синтаксис можно посмотреть тут
http://wiki.polymorf.fr/index.php?title ... 9_dlz_ldap

Как итог

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

[root@gw-kiev /etc/namedb]# nslookup gw-kiev.domain.cxm 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   gw-kiev.domain.cxm
Address: 10.0.0.254

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

[root@gw-kiev /etc/namedb]# nslookup 10.0.0.254 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

254.0.0.10.in-addr.arpa name = gw-kiev.domain.cxm.
За сим все. Данная связка в нужной мне конфигурации работает.
Нет ничего невозможного

Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: bind99 + ldap

Непрочитанное сообщение fox » 2013-05-22 0:01:48

Спасибо Вам большое! Вы меня наталкнули на правельную мысель и у меня получилось. Но изменилась структура LDAP базы. Вы бы не могли показать вашу, фрагмент базы какойнибудь DNS зоны?
Да пребудет с нами сила!!!
Всех убью, один останусь!

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 332
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

Re: bind99 + ldap

Непрочитанное сообщение Amadeus » 2013-05-22 0:20:58

Ну например вот

это основной лдиф с зоной, тут прямая зона

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

dn: dlzZoneName=domain.cxm,ou=dns,dc=domain,dc=ru
objectClass: dlzZone
objectClass: top
dlzZoneName: domain.cxm
наполнение SOA + 1 запись для теста

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

dn: dlzHostName=@,dlzZoneName=domain.cxm,ou=dns,dc=domain,dc=ru
objectClass: dlzHost
objectClass: top
dlzHostName: @

dn: dlzRecordID=1,dlzHostName=@,dlzZoneName=domain.cxm,ou=dns,dc=domain,dc=ru
dlzTTL: 10
dlzExpire: 604800
dlzRefresh: 2800
dlzMinimum: 86400
dlzAdminEmail: ua.admin3@domain.ru.
dlzPrimaryNS: ns.domain.ru.
objectClass: dlzSOARecord
objectClass: dlzAbstractRecord
objectClass: top
dlzRecordID: 1
dlzSerial: 2010061316
dlzType: soa
dlzHostName: @
dlzRetry: 7200

dn: dlzRecordID=2,dlzHostName=@,dlzZoneName=domain.cxm,ou=dns,dc=domain,dc=ru
dlzRecordID: 2
objectClass: dlzNSRecord
objectClass: dlzGenericRecord
objectClass: dlzAbstractRecord
objectClass: top
dlzTTL: 10
dlzType: ns
dlzHostName: @
dlzData: ns.domain.ru.

dn: dlzHostName=gw-kiev,dlzZoneName=domain.cxm,ou=dns,dc=domain,dc=ru
objectClass: dlzHost
objectClass: top
dlzHostName: gw-kiev

dn: dlzRecordID=1,dlzHostName=gw-kiev,dlzZoneName=domain.cxm,ou=dns,dc=domain,dc=ru
dlzIPAddr: 10.0.0.254
dlzRecordID: 1
objectClass: dlzARecord
objectClass: dlzAbstractRecord
objectClass: top
dlzTTL: 3600
dlzType: A
dlzHostName: gw-kiev
C PTR записями примерно так же, если есть непонятные обжект классы и тайпы, смотрим их синтаксис в схеме
Нет ничего невозможного

Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: bind99 + ldap

Непрочитанное сообщение fox » 2013-05-22 11:36:45

Спасибо. У меня так же. Но тут напрашивается новый вопрос? А что делать когда старая база 500 обектов? Переписывать в ручную под ID топорно...
Да пребудет с нами сила!!!
Всех убью, один останусь!

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 332
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

Re: bind99 + ldap

Непрочитанное сообщение Amadeus » 2013-05-22 12:11:41

рихтовать схему
Нет ничего невозможного

Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: bind99 + ldap

Непрочитанное сообщение fox » 2013-05-22 12:41:47

схему или базу? Если схему, то Вы будите этим заниматься? Если у вас есть рехтанутая схема поделитесь?
Да пребудет с нами сила!!!
Всех убью, один останусь!

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 332
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

Re: bind99 + ldap

Непрочитанное сообщение Amadeus » 2013-05-22 13:35:38

Именно dlz схема, конкретно для теперешней ситуации, я не буду ее изменять, меня устраивают имеющиеся типы, а пример изменения можно посмотреть, например тут http://diablotins.org/index.php/BIND_9_et_DLZ_LDAP
Нет ничего невозможного

Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: bind99 + ldap

Непрочитанное сообщение fox » 2013-05-22 18:23:46

Спасибо, буду изучать вопрос :-)
Да пребудет с нами сила!!!
Всех убью, один останусь!

hishnikNOAUTH
проходил мимо

Re: bind99 + ldap

Непрочитанное сообщение hishnikNOAUTH » 2013-06-21 15:48:47

Есть продвижение?
Проблема всплыла, и надо было ещё позавчера.
Истории успеха с конфигами или рекомендациями?

NOAUTHhishnikNOAUTH
проходил мимо

Re: bind99 + ldap

Непрочитанное сообщение NOAUTHhishnikNOAUTH » 2013-06-21 15:50:41

Есть продвижение?
Проблема всплыла, и надо было ещё позавчера.
Истории успеха с конфигами или рекомендациями?

Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: bind99 + ldap

Непрочитанное сообщение fox » 2013-06-21 18:42:41

Признаюсь забил... Так как много работы навоолилось и пока по миграции с sdb на dlz заморожена на не определённый срок....
Да пребудет с нами сила!!!
Всех убью, один останусь!

x3mer333
проходил мимо
Сообщения: 2
Зарегистрирован: 2014-02-19 12:08:12
Контактная информация:

Re: bind99 + ldap

Непрочитанное сообщение x3mer333 » 2014-02-20 10:59:48

День добрый, друзья!

Есть желание модернизировать структуру вида:
Изображение

А именно - добавить звено между dlzZone и dlzHost.
Казалось бы, что ничего сложного быть не должно, однако
простым добавлением "sub" в [scope] параметр:
ldapurl = scheme "://" [hostport] ["/"[dn ["?" [attributes] ["?" [scope] ["?" [filter] ["?" extensions]]]]]]
вопрос не разрешился. После добавления промежуточного звена зона резолвиться перестала.

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

dlz "ldap zone" {
        database "ldap 2 v3 simple {uid=bigadmin,ou=users,dc=storage2.ru} {111} {213.210.71.34} ldap:///dlzZoneName=$zone$,ou=dnstest,dc=storage2.ru??sub?objectclass=dlzZone ldap:///dlzHostName=$record$,dlzZoneName=$zone$,ou=dnstest,dc=storage2.ru?dlzTTL,dlzType,dlzPreference,dlzData,dlzIPAddr,dlzPrimaryNS,dlzAdminEmail,dlzSerial,dlzRefresh,dlzRetry,dlzExpire,dlzMinimum?sub?objectclass=dlzAbstractRecord";
};
Подскажите, пожалуйста, по LDAP URL строке запроса. Как составить её так, чтобы в поисках хостов она оббегала подкаталоги..?
В верном ли я вообще направлении капаю, или структура жестко прописана внутри самого dlz-патча?

Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: bind99 + ldap

Непрочитанное сообщение fox » 2014-02-20 21:56:20

День добрый.
Уважаемый. Скажите пожалуйста зачем вам такая модификация?
Да пребудет с нами сила!!!
Всех убью, один останусь!

x3mer333
проходил мимо
Сообщения: 2
Зарегистрирован: 2014-02-19 12:08:12
Контактная информация:

Re: bind99 + ldap

Непрочитанное сообщение x3mer333 » 2014-02-21 5:12:16

Для удобства и наглядности. Уже имеется LDAP база пользователей, хотелось бы раскидать зоны и хосты по конкретным пользователям.
То есть привести стандартную структуру представленную выше, к структуре:
Изображение
Мне казалось, что

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

ldap:///dlzZoneName=%zone%,ou=dns,o=bind-dlz???objectclass=dlzZone
отвечает как раз за поиск зоны, и что если добавить "sub" после второго вопроса, то он будет пробегаться по всем подкаталогам директории "ou=dns,o=bind-dlz" в поисках класса dlzZone
но на практика остается с негативным опытом вот уже пятый день к ряду.