Страница 1 из 1

bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 19:58:42
FenX
В общем суть такая:
перерыл всю документацию по сабжу,
оказалось что сие чудо изначально не тянет
подмену вида *.domain.com.
а штука-то полезная)))
долгий процесс гугления и рысканья по сайтам разрабов
привели меня в mailinglist сего творения.
и как результат - в обсуждении одной из рассылок был найден патч.
патч был предназначен для более ранней версии,
но мы же не безрукие :))

Посему выкладываю сюда то, что получилось в итоге...
Долго извращаться не стал, посему наложил нужные строки прямо на патч,
идущий с портом.

ВНИМАНИЕ: патч делал под версию BIND 9.4.2-P2. На других работу не гарантирую!!!
итак, скачиваем архив:
patch-sdb_ldap.zip
(5.62 КБ) 11 скачиваний
архив распаковываем, и помещаем в каталог патчей:

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

$ unzip patch-sdb_ldap.zip
$ cp patch-sdb_ldap /usr/ports/dns/bind9-sdb-ldap/files
после этого пересобираем bind.
Вуаля :)
теперь наш бинд умеет понимать "подмены".
Проверяем:

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

$ cat dns.ldif
dn: relativeDomainName=~,zoneName=domain.local,ou=dns,dc=domain,dc=local
objectClass: top
objectClass: dNSZone
zoneName: domain.local
relativeDomainName: ~
dNSClass: IN
aRecord: 192.168.0.1
Обратите внимание на строки

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

relativeDomainName: ~
Это и есть символ подмены.
не знаю почему, но автор сего патча выбрал именно тильду.
я менять не стал :)

добавляем наш ldif в базу:

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

ldapadd -x -D "$ldapcn" -w mypasswd -f dns.ldif
После этого bind будет работать по схеме:

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

$ nslookup asdfdsfas.domain.local
после такого запроса, bind ищет в базе запись:

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

relativeDomainName=asdfdsfas
и если не находит, то сразу ищет запись:

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

relativeDomainName=~
Ну вроде усё :)

Re: bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 20:02:50
zingel
ну какбэ этот патч был сделан для редиректа с mod_userdir апача на нужный поддомен и обратно, а для поддоменов есть такая чудная штука как алиасы и CNAME.

Re: bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 20:12:37
FenX
не совсем так.
добавляя запись ~ все домены 3го уровня автоматом привязываются к заданному в этой записи ip
в моём случае - 10.0.0.2

т.е. на запрос
$ nslookup blahblah.domain.local

будет возвращен ip 10.0.0.2
если же в базе сделать запись blahblah = 10.0.0.3

то и возвращать будет 10.0.0.3

вот как-то так)

Re: bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 20:13:41
zingel
к заданному в этой записи ip
глупости, привязывается он к хосту, а не к ip, если только жестоко не указан ptr для хоста, на основании функции gethostbyname(), а не основании getaddrinfo()

Re: bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 20:18:41
FenX
zingel писал(а):глупости, привязывается он к хосту, а не к ip, если только жестоко не указан ptr для хоста.
блин.
я не знаю как это более правильно объяснить...
короче при запросе поддомена, не занесённого в базе, будет вертаться ip данный в этой записи.
можешь проверить на примере домена free-source.org

на запрос любого домена 3го уровня будет возвращаться один и тот же ip.

при чем тут ptr - не догоняю.
ptr - это обратная запись для ip, а не ip для домена.

Re: bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 20:21:08
zingel
если захотеть, то запись будет

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

123.45.67.89	IN	PTR	subdomain.domain.tld
тоесть поддомену можно дать ip-адрес при желании.

Я не пойму, зачем Вам изврат такой.

Re: bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 20:25:25
FenX
что такое ptr и для чего он - я в курсе.
здесь просто стояла несколько иная задача.
мне надо было чтобы на запрос любого домена 3го уровня возвращался ip сервера,
дабы не вводить каждый раз запись в базу, когда надо сделать новый поддомен.
задача выполнена.
и ptr здесь абсолютно ни при чем.

Re: bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 20:29:40
zingel
понятно что Вы хотели, не знаю, наверняка есть решение проще.

Re: bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 20:39:07
FenX
может и есть, но я не нашёл.
это было единственное что удалось найти.

самое обидное здесь в том, что простой bind, без ldap`а прекрасно понимает подмену *
в sdb-ldap это почему-то не сделали =\

Re: bind9-sdb-ldap. типа плюшко :)

Добавлено: 2009-03-23 20:45:14
zingel
нда, забыли судя по-всему