bind9 + openldap, не видна зона

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

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

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
viy
проходил мимо
Сообщения: 5
Зарегистрирован: 2010-04-14 9:43:31

bind9 + openldap, не видна зона

Непрочитанное сообщение viy » 2010-04-14 10:03:23

Доброго времени суток! Уже голову сломал. Настроил связку OpenLDAP и Samba. Пытаюсь прикрутить DNS с хранением зоны в LDAP. Но bind не видит зон. Помогите разобратся, пожалуйста.
FreeBSD 8.0
bind9-sdb-ldap-base-9.4.3.1
openldap-server-2.4.21

DNS зона: alternix.local
локальная сеть: 192.168.2.0/24
хосты:
gw 192.168.2.100
viybook 192.168.2.2

Вот что я вижу в /var/log/messages

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

Apr 14 10:32:35 gw named[94227]: starting BIND 9.4.3-P1 -t /var/named -u bind
Apr 14 10:32:35 gw named[94227]: command channel listening on 127.0.0.1#953
Apr 14 10:32:35 gw named[94227]: command channel listening on ::1#953
Apr 14 10:32:35 gw named[94227]: the working directory is not writable
Apr 14 10:32:35 gw named[94227]: zone 2.168.192.in-addr.arpa/IN: could not find NS and/or SOA records
Apr 14 10:32:35 gw named[94227]: zone 2.168.192.in-addr.arpa/IN: has 0 SOA records
Apr 14 10:32:35 gw named[94227]: zone 2.168.192.in-addr.arpa/IN: has no NS records
Apr 14 10:32:35 gw named[94227]: zone alternix.local/IN: could not find NS and/or SOA records
Apr 14 10:32:35 gw named[94227]: zone alternix.local/IN: has 0 SOA records
Apr 14 10:32:35 gw named[94227]: zone alternix.local/IN: has no NS records
Apr 14 10:32:35 gw named[94227]: running
Вот вывод ldapsearch:

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

# dns, alternix.local
dn: ou=dns,dc=alternix,dc=local
objectClass: top
objectClass: organizationalUnit
description: domain zones

# alternix.local, dns, alternix.local
dn: zoneName=alternix.local,ou=dns,dc=alternix,dc=local
objectClass: top
objectClass: dNSZone

# @, alternix.local, dns, alternix.local
dn: relativeDomainName=@,zoneName=alternix.local,ou=dns,dc=alternix,dc=local
objectClass: top
objectClass: dNSZone

# gw, alternix.local, dns, alternix.local
dn: relativeDomainName=gw,zoneName=alternix.local,ou=dns,dc=alternix,dc=local
objectClass: top
objectClass: dNSZone

# viybook, alternix.local, dns, alternix.local
dn: relativeDomainName=viybook,zoneName=alternix.local,ou=dns,dc=alternix,dc=l
 ocal
objectClass: top
objectClass: dNSZone

# 2.168.192.in-addr.arpa, dns, alternix.local
dn: zoneName=2.168.192.in-addr.arpa,ou=dns,dc=alternix,dc=local
objectClass: top
objectClass: dNSZone

# @, 2.168.192.in-addr.arpa, dns, alternix.local
dn: relativeDomainName=@,zoneName=2.168.192.in-addr.arpa,ou=dns,dc=alternix,dc
 =local
objectClass: top
objectClass: dNSZone

# 100, 2.168.192.in-addr.arpa, dns, alternix.local
dn: relativeDomainName=100,zoneName=2.168.192.in-addr.arpa,ou=dns,dc=alternix,
 dc=local
objectClass: top
objectClass: dNSZone

# 2, 2.168.192.in-addr.arpa, dns, alternix.local
dn: relativeDomainName=2,zoneName=2.168.192.in-addr.arpa,ou=dns,dc=alternix,dc
 =local
objectClass: top
objectClass: dNSZone
Вот конфиг /etc/named/named.conf:

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

options {
        directory       "/etc/namedb";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";

        listen-on       { 127.0.0.1; 192.168.2.100; };

        disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
        disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
        disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";

//      forward only;
        forwarders {
                81.28.160.1;
                81.28.160.111;
        };
};

zone "alternix.local" in {
        type master;
        database "ldap ldap://127.0.0.1/zoneName=alternix.local,ou=dns,dc=alternix,dc=local 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=alternix,dc=local 178600";
};
zone "." { type hint; file "named.root"; };
/etc/rc.conf:

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

named_enable="YES"
named_program="/usr/sbin/named"

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

viy
проходил мимо
Сообщения: 5
Зарегистрирован: 2010-04-14 9:43:31

Re: bind9 + openldap, не видна зона

Непрочитанное сообщение viy » 2010-04-14 10:09:56

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

# sockstat | grep slapd
ldap     slapd      1334  3  dgram  -> /var/run/logpriv
ldap     slapd      1334  6  stream /var/run/openldap/ldapi
ldap     slapd      1334  7  tcp4   127.0.0.1:389         *:*
ldap     slapd      1334  8  tcp4   192.168.2.100:389     *:*

viy
проходил мимо
Сообщения: 5
Зарегистрирован: 2010-04-14 9:43:31

Re: bind9 + openldap, не видна зона

Непрочитанное сообщение viy » 2010-04-14 10:13:10

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

# cat /usr/local/etc/openldap/slapd.conf

# Конфигурационный файл slapd.conf
#
# Схемы предоставляют классы атрибутов и объектов,
# которые могут использоваться деревом LDAP.
# Подключаем базовые схемы:
include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/collective.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/openldap.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/authldap.schema

# Подключаем дополнительные схемы
include         /usr/local/etc/openldap/schema/samba.schema
include         /usr/local/etc/openldap/schema/rfc2739.schema
include         /usr/local/etc/openldap/schema/horde.schema
include         /usr/local/etc/openldap/schema/dnszone.schema
include         /usr/local/etc/openldap/schema/dhcp.schema

# Определяем глобальные параметры:

pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args

loglevel        256
password-hash   {CRYPT}

# Загружаем динамические модули для хранилища даных:
modulepath      /usr/local/libexec/openldap
moduleload      back_bdb

# rootdn can always read and write EVERYTHING!

#######################################################################
# Параметры базы данных BDB
#######################################################################

database        bdb
suffix          "dc=alternix,dc=local"
rootdn          "cn=admin,dc=alternix,dc=local"
# Использование пароля в открытом виде не рекомендуется.
# Посмотрите slappasswd(8) и slapd.conf(5) для дополнительной информации.
# Используйте slappasswd для получения хэша пароля.
# slappasswd -s пароль
rootpw          {SSHA}Q3oBTu2cDTWv1Z04Tg4GYKiDClCf5y9v
# Директория базы данных должна существовать до запуска сервера.
# Рекомендуемые права на директорию 700.
directory       /var/db/openldap-alternix
# Indices to maintain
index   objectClass                                     eq
index   uidNumber,gidNumber                             eq
index   cn,sn,uid,displayName                           pres,sub,eq
index   memberUid,mail,givenname                        eq,subinitial
index   sambaSID,sambaPrimaryGroupSID,sambaDomainName   eq
index   dhcpHWAddress                                   eq
index   dhcpClassData                                   eq
index   dhcpPrimaryDN                                   eq
index   dhcpSecondaryDN                                 eq
index   zoneName                                        eq
index   relativeDomainName                              eq
index   default                                         sub

# Определяем политку доступа к данным службы каталогов

# any users can authenticate and change his password
access to attrs=userPassword,sambaLMPassword,sambaNTPassword,sambaPwdLastSet,sambaPwdMustChange
        by dn="cn=admin,dc=alternix,dc=local" write
        by self write
        by anonymous auth
        by * none
# some attributes need to be readable anonymously so that 'id user' can answer correctly
access to attrs=objectClass,entry,homeDirectory,uid,uidNumber,gidNumber,memberUid
        by dn="cn=admin,dc=alternix,dc=local" write
        by * read
# somme attributes can be writable by users themselves
access to attrs=description,telephoneNumber,roomNumber,homePhone,loginShell,gecos,cn,sn,givenname
        by dn="cn=admin,dc=alternix,dc=local" write
        by self write
        by * read
# some attributes need to be writable for samba
access to attrs=cn,sambaLMPassword,sambaNTPassword,sambaPwdLastSet,sambaLogonTime,sambaLogoffTime,sambaKickoffTime,sambaPwdCanChange,sambaPwdMustChange,sambaAcctFlags,displayName,sambaHomePath,sambaHomeDrive,sambaLogonScript,sambaProfilePath,description,sambaUserWorkstations,sambaPrimaryGroupSID,sambaDomainName,sambaMungedDial,sambaBadPasswordCount,sambaBadPasswordTime,sambaPasswordHistory,sambaLogonHours,sambaSID,sambaSIDList,sambaTrustFlags,sambaGroupType,sambaNextRid,sambaNextGroupRid,sambaNextUserRid,sambaAlgorithmicRidBase,sambaShareName,sambaOptionName,sambaBoolOption,sambaIntegerOption,sambaStringOption,sambaStringListoption
        by dn="cn=admin,dc=alternix,dc=local" write
        by self read
        by * none
# samba need to be able to create the samba domain account
access to dn.base="dc=alternix,dc=local"
        by dn="cn=admin,dc=alternix,dc=local" write
        by * none
# samba need to be able to create new users accounts
access to dn="ou=Users,dc=alternix,dc=local"
        by dn="cn=admin,dc=alternix,dc=local" write
        by * none
# samba need to be able to create new groups accounts
access to dn="ou=Groups,dc=alternix,dc=local"
        by dn="cn=admin,dc=alternix,dc=local" write
        by * none
# samba need to be able to create new computers accounts
access to dn="ou=Computers,dc=alternix,dc=local"
        by dn="cn=admin,dc=alternix,dc=local" write
        by * none
# user access to addressbook
access to dn.sub="ou=personal_addressbook,dc=alternix,dc=local"
        by dn="uid=$1,dc=alternix,dc=local" write
        by * none
# this can be omitted but we let it stay because there could be other branches in the directory
access to *
        by self read
        by * none

viy
проходил мимо
Сообщения: 5
Зарегистрирован: 2010-04-14 9:43:31

Re: bind9 + openldap, не видна зона

Непрочитанное сообщение viy » 2010-04-14 10:17:23

При запуске bind вот что получаю в логе slapd:

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

Apr 14 11:14:54 gw slapd[1334]: conn=1901 op=2 UNBIND
Apr 14 11:14:54 gw slapd[1334]: conn=1901 fd=42 closed
Apr 14 11:14:54 gw slapd[1334]: conn=1900 op=2 UNBIND
Apr 14 11:14:54 gw slapd[1334]: conn=1900 fd=41 closed
Apr 14 11:14:54 gw slapd[1334]: conn=1899 fd=38 closed (connection lost)
Apr 14 11:14:57 gw slapd[1334]: conn=1920 fd=38 ACCEPT from IP=127.0.0.1:44694 (IP=127.0.0.1:389)
Apr 14 11:14:57 gw slapd[1334]: conn=1920 op=0 BIND dn="cn=admin,dc=alternix,dc=local" method=128
Apr 14 11:14:57 gw slapd[1334]: conn=1920 op=0 BIND dn="cn=admin,dc=alternix,dc=local" mech=SIMPLE ssf=0
Apr 14 11:14:57 gw slapd[1334]: conn=1920 op=0 RESULT tag=97 err=0 text=
Apr 14 11:14:57 gw slapd[1334]: conn=1920 op=1 SRCH base="ou=Groups,dc=alternix,dc=local" scope=1 deref=0 filter="(&(objectClass=posixGroup))"
Apr 14 11:14:57 gw slapd[1334]: conn=1920 op=1 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
Apr 14 11:14:57 gw slapd[1334]: conn=1920 op=1 SEARCH RESULT tag=101 err=0 nentries=9 text=
Apr 14 11:14:57 gw slapd[1334]: conn=1921 fd=41 ACCEPT from IP=127.0.0.1:42977 (IP=127.0.0.1:389)
Apr 14 11:14:57 gw slapd[1334]: conn=1921 op=0 BIND dn="" method=128
Apr 14 11:14:57 gw slapd[1334]: conn=1921 op=0 RESULT tag=97 err=0 text=
Apr 14 11:14:57 gw slapd[1334]: conn=1921 op=1 SRCH base="zoneName=2.168.192.in-addr.arpa,ou=dns,dc=alternix,dc=local" scope=2 deref=0 filter="(&(zoneName=2.168.192.in-addr.arpa)(relativeDomainName=@))"
Apr 14 11:14:57 gw slapd[1334]: conn=1921 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
Apr 14 11:14:57 gw slapd[1334]: conn=1922 fd=42 ACCEPT from IP=127.0.0.1:43933 (IP=127.0.0.1:389)
Apr 14 11:14:57 gw slapd[1334]: conn=1922 op=0 BIND dn="" method=128
Apr 14 11:14:57 gw slapd[1334]: conn=1922 op=0 RESULT tag=97 err=0 text=
Apr 14 11:14:57 gw slapd[1334]: conn=1922 op=1 SRCH base="zoneName=alternix.local,ou=dns,dc=alternix,dc=local" scope=2 deref=0 filter="(&(zoneName=alternix.local)(relativeDomainName=@))"
Apr 14 11:14:57 gw slapd[1334]: conn=1922 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
Apr 14 11:15:01 gw slapd[1334]: conn=1923 fd=43 ACCEPT from IP=127.0.0.1:24502 (IP=127.0.0.1:389)
Apr 14 11:15:01 gw slapd[1334]: conn=1923 op=0 BIND dn="cn=admin,dc=alternix,dc=local" method=128
Apr 14 11:15:01 gw slapd[1334]: conn=1923 op=0 BIND dn="cn=admin,dc=alternix,dc=local" mech=SIMPLE ssf=0
Apr 14 11:15:01 gw slapd[1334]: conn=1923 op=0 RESULT tag=97 err=0 text=
Apr 14 11:15:01 gw slapd[1334]: conn=1923 op=1 SRCH base="ou=Groups,dc=alternix,dc=local" scope=1 deref=0 filter="(&(objectClass=posixGroup))"
Apr 14 11:15:01 gw slapd[1334]: conn=1923 op=1 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
Apr 14 11:15:01 gw slapd[1334]: conn=1923 op=1 SEARCH RESULT tag=101 err=0 nentries=9 text=
Apr 14 11:15:01 gw slapd[1334]: conn=1923 fd=43 closed (connection lost)

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

Re: bind9 + openldap, не видна зона

Непрочитанное сообщение x6e6564 » 2010-04-14 12:50:59

Попробуй индексы выставить в slapd.conf:

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

index	relativeDomainName,zoneName	eq,pres
Перебрать индексы:

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

/usr/local/etc/rc.d/slapd stop
slapindex
chown -R ldap:ldap /var/db/openldap-data
/usr/local/etc/rc.d/slapd start

viy
проходил мимо
Сообщения: 5
Зарегистрирован: 2010-04-14 9:43:31

Re: bind9 + openldap, не видна зона

Непрочитанное сообщение viy » 2010-04-15 9:20:13

x6e6564 писал(а):Попробуй индексы выставить в slapd.conf:

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

index	relativeDomainName,zoneName	eq,pres
Индексы стоят.

Я разобрался в чем проблема. Дело было в правах доступа к данным LDAP.
Заменил

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

# this can be omitted but we let it stay because there could be other branches in the directory
access to *
        by self read
        by * none
на

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

access to *
        by * read
И все заработало.

Вот теперь вопрос - как правильно написать ACL для доступа к DNS записям в LDAP?

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

Re: bind9 + openldap, не видна зона

Непрочитанное сообщение g1itch » 2011-08-01 17:03:38

viy писал(а): Я разобрался в чем проблема. Дело было в правах доступа к данным LDAP.
Заменил

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

# this can be omitted but we let it stay because there could be other branches in the directory
access to *
        by self read
        by * none
на

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

access to *
        by * read
И все заработало.

Вот теперь вопрос - как правильно написать ACL для доступа к DNS записям в LDAP?
А меня больше интересует ответ на другой вопрос: как объяснить bind'у с каким bind dn ходить в LDAP?

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

Re: bind9 + openldap, не видна зона

Непрочитанное сообщение g1itch » 2011-08-01 17:35:31

g1itch писал(а):
А меня больше интересует ответ на другой вопрос: как объяснить bind'у с каким bind dn ходить в LDAP?
Сам и отвечу. Для приведенного выше:

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

database "ldap ldap://127.0.0.1/zoneName=alternix.local,ou=dns,dc=alternix,dc=local????!bindname=cn=admin%2cdc=alternix%2cdc=local,!x-bindpw=secret 178600";
Вместо rootdn можно использовать другого пользователя, которому дать права на чтение дерева. secret - пароль открытым текстом. Смущает то, что такую простыню нужно писать для каждой зоны.