The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "DNS" (Архив | Для печати)

Сохранение dns зон BIND в дирректориях openLDAP.

Автор: Andrey Afletdinov
Оригинал: http://www.sgb.irk.ru/~andrek/bind2ldap/

Этот документ - попытка описать КАК под Linux можно упростить администрирование DNS зон сохраняя их в дирректориях openLDAP. Здесь Вы не найдете описания работы BIND, LDAP и как компилируются эти программы.

Часть 1.
Первое что необходимо - это переделать BIND чтобы он понимал LDAP дирректории, для этого необходимо скачать архив bind-sdb-ldap-0.9. К моменту написания документа последние версии программ которые я использовал это BIND-9.2.1 и bind-sdb-ldap-0.9, и я надеюсь разработчики BIND обратят внимание на такую возможность и включат ее в свой пакет в дальнейшем.
Распаковываем архивы.
Все ниже приведенные действия описаны в файле bin-sdb-ldap/INSTALL.

Копируем файлы ldapdb.c в дирректории bin/named и ldapdb.h в bin/named/include исходников BIND.
Редактируем файл bin/named/Makefile.in добавляем строки:

 DBDRIVER_OBJS = ldapdb.@O@
 DBDRIVER_SRCS = ldapdb.c
 DBDRIVER_INCLUDES = -I/usr/local/include
 DBDRIVER_LIBS = -L/usr/local/lib -lldap -llber -lresolv
 
Редактируем файл bin/named/main.c:
- находим строку #include "xxdb.h" добавляем #include<ldapdb.h>
- находим строку xxdb_init() добавляем ldapdb_init();
- находим строку xxdb_clear() добавляем ldapdb_clear();

Все. Дальше конфигурируем и компилируем BIND так как нам это надо. Так же если выше приведенные действия Вам кажутся сложными, то уже готовый патч для версии BIND-9.2.1 лежит здесь.

Часть 2.
Следующий этап - настройка файла named.conf и заполнение дирректорий LDAP.
Для понимания LDAP сервером необходимых значений dns зон - копируем схему dnszone.schema в дирректорию схем LDAP сервера.

Разберем на примере небольшую зону (sgb мой внутренний домен):

 @	IN	SOA	book.sgb. root.book.sgb. ( 1 8H 2H 1W 1D)
		NS	book.sgb.
 
 localhost	A	127.0.0.1
 book		A	192.168.2.1
 boss		A	192.168.2.11
 
Создаем группу DNS в дирректории LDAP (dc=sgb это root_ldap дирректория и это никак не связано с доменом sgb, просто совпадения :)
 dn: ou=DNS,dc=sgb
 objectClass: top
 objectClass: organizationalUnit
 ou: DNS
 
dns
Описание самой зоны sgb:
 dn: zoneName=sgb,ou=DNS,dc=sgb
 objectClass: top
 objectClass: dNSZone
 zoneName: sgb
 relativeDomainName: sgb
 
dns
 dn: relativeDomainName=@,zoneName=sgb,ou=DNS,dc=sgb
 objectClass: top
 objectClass: dNSZone
 zoneName: sgb
 relativeDomainName: @
 nSRecord: book.sgb.
 sOARecord: book.sgb. root.book.sgb. 1 8H 2H 1W 1D
 
dns
Описание записи A для localhost:
 dn: relativeDomainName=localhost,zoneName=sgb,
                                 ou=DNS,dc=sgb
 objectClass: top
 objectClass: dNSZone
 zoneName: sgb
 relativeDomainName: localhost
 dNSClass: IN
 aRecord: 127.0.0.1
 
dns
Описание записи A для book и boss аналогична:
 dn: relativeDomainName=book,zoneName=sgb,
                            ou=DNS,dc=sgb
 objectClass: top
 objectClass: dNSZone
 zoneName: sgb
 relativeDomainName: book
 dNSClass: IN
 aRecord: 192.168.2.1
 
dns
 dn: relativeDomainName=boss,zoneName=sgb,
                            ou=DNS,dc=sgb
 objectClass: top
 objectClass: dNSZone
 zoneName: sgb
 relativeDomainName: boss
 dNSClass: IN
 aRecord: 192.168.2.11
 
dns
Записываем в ldif файл и добавляем в директорию командой ldapadd. Так же для управления директориями можно установить программу с графическим интерфейсом.

Разберем обратную зону 2.168.192.in-addr.arpa:

 @	IN	SOA	book.sgb. root.book.sgb. ( 1 8H 2H 1W 1D)
		NS	book.sgb.
 
 1		PTR	book.sgb.
 11		PTR	boss.sgb.
 
Описание зоны 2.168.192.in-addr.arpa:
 dn: zoneName=2.168.192.in-addr.arpa,ou=DNS,dc=sgb
 objectClass: top
 objectClass: dNSZone
 zoneName: 2.168.192.in-addr.arpa
 relativeDomainName: 2.168.192.in-addr.arpa
 
dns
 dn: relativeDomainName=@,zoneName=2.168.192.in-addr.
                                  arpa,ou=DNS,dc=sgb
 objectClass: top
 objectClass: dNSZone
 zoneName: 2.168.192.in-addr.arpa
 relativeDomainName: @
 nSRecord: book.sgb.
 sOARecord: book.sgb. root.book.sgb. 1 8H 2H 1W 1D
 
dns
Описание записи PTR для book и boss:
 dn: relativeDomainName=1,zoneName=2.168.192.in-addr.
                                  arpa,ou=DNS,dc=sgb
 objectClass: top
 objectClass: dNSZone
 zoneName: 2.168.192.in-addr.arpa
 relativeDomainName: 1
 pTRRecord: book.sgb.
 
dns
 dn: relativeDomainName=11,zoneName=2.168.192.in-addr.
                                   arpa,ou=DNS,dc=sgb
 objectClass: top
 objectClass: dNSZone
 zoneName: 2.168.192.in-addr.arpa
 relativeDomainName: 11
 pTRRecord: boss.sgb.
 
dns
Все просто. Полный HOWTO по заполнению dns зон в LDAP с примерами здесь.

Осталось заменить запись зон в named.conf.
Если раньше было так:

 zone "sgb" in {
    type master;
    files "db.sgb";
 };
 zone "2.168.192.in-addr.arpa" in {
    type master;
    files "db.2.168.192";
 };
 
Заменяем:
 zone "sgb" in {
    type master;
    database "ldap ldap://127.0.0.1/zoneName=sgb,ou=DNS,dc=sgb 178600";
 };
 zone "2.168.192.in-addr.arpa" in {
    type master;
    database "ldap ldap://127.0.0.1/zoneName=2.168.192.in-addr.arpa,ou=DNS,dc=sgb 178600";
 };
 
Число 178600 это TTL для всех записей где неопределен dNSTTL.

Заключение.
Большинство из источников этого документа было придумано другими людьми, однако почти все примеры взяты из моей головы и протестированы на моем ноутбуке с дистрибутивом RedHat-7.2 и openldap-2.0.11. Если кому нибудь придет в голову написать более обширный документ по централизованному администрированию сетей на базе дирректорий LDAP и воспользоваться данным источником, то я невозражаю, с условием сохранения ниже перечисленных ссылок на исходную документацию.

Ссылки на использованную документацию и программы.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру