[Sysadmins] p6, bind9.8-sdb и ldap

Alex Moskalenko mav на elserv.msk.su
Ср Авг 17 05:53:58 UTC 2011


Здравствуйте!

Возникло желание хранить статические DNS-зоны в ldap. В p6 нашелся пакет 
bind9.8-sdb-9.8.0-alt0.2, согласно описанию собранный с поддержкой sdb. Но 
при попытке использовать зону в ldap ничего, кроме падения bind, получить так 
и не удалось. При этом если запретить соединения с ldap, указать неправильный 
адрес ldap-сервера или остановить ldap-сервер, bind не падает. Bind и slapd 
находятся в разных OpenVZ контейнерах.

Версии установленных пакетов:
VE с bind
libbind9.8-9.8.0-alt0.2
bind9.8-9.8.0-alt0.2
bind9.8-utils-9.8.0-alt0.2
bind9.8-doc-9.8.0-alt0.2
bind-control-1.1-alt1
bind9.8-sdb-9.8.0-alt0.2
libldap2.4-2.4.24-alt5

VE с LDAP
openldap2.4-2.4.24-alt5
openldap2.4-clients-2.4.24-alt5
libldap2.4-2.4.24-alt5
openldap2.4-servers-2.4.24-alt5


Описание sdb-зоны в bind:
zone "test.local" IN {
	type master;
	database "ldap 
ldap://192.168.0.3/zoneName=test.local.,ou=DnsZones,o=test????!bindname=cn=named%2cou=Daemons%2co=test,!x-bindpw=secretpassword 
86400";
};

LDAP-сервер использует схему dnszone, соответствующие записи в 
ou=DnsZones,o=test имеются.

Протокол slapd при запуске bind (LogLevel=-1):
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on 1 descriptor 
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on:
Aug 17 09:40:42 ldap slapd[18626]:  
Aug 17 09:40:42 ldap slapd[18626]: slap_listener_activate(7):  
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=7 busy 
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=8 active_threads=0 
tvp=NULL 
Aug 17 09:40:42 ldap slapd[18626]: >>> slap_listener(ldap:///) 
Aug 17 09:40:42 ldap slapd[18626]: daemon: listen=7, new connection on 12 
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on 1 descriptor 
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on:
Aug 17 09:40:42 ldap slapd[18626]:  
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=7 active_threads=0 
tvp=NULL 
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=8 active_threads=0 
tvp=NULL 
Aug 17 09:40:42 ldap slapd[18626]: daemon: added 12r (active) listener=(nil) 
Aug 17 09:40:42 ldap slapd[18626]: conn=1000 fd=12 ACCEPT from 
IP=192.168.244.20:38472 (IP=0.0.0.0:389) 
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on 1 descriptor 
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on:
Aug 17 09:40:42 ldap slapd[18626]:  12r
Aug 17 09:40:42 ldap slapd[18626]:  
Aug 17 09:40:42 ldap slapd[18626]: daemon: read active on 12 
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=7 active_threads=0 
tvp=NULL 
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=8 active_threads=0 
tvp=NULL 
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on 1 descriptor 
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on:
Aug 17 09:40:42 ldap slapd[18626]:  
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=7 active_threads=0 
tvp=NULL 
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=8 active_threads=0 
tvp=NULL 
Aug 17 09:40:42 ldap slapd[18626]: connection_get(12) 
Aug 17 09:40:42 ldap slapd[18626]: connection_get(12): got connid=1000 
Aug 17 09:40:42 ldap slapd[18626]: connection_read(12): checking for input on 
id=1000 
Aug 17 09:40:42 ldap slapd[18626]: ber_get_next on fd 12 failed errno=0 
(Success) 
Aug 17 09:40:42 ldap slapd[18626]: connection_read(12): input error=-2 
id=1000, closing. 
Aug 17 09:40:42 ldap slapd[18626]: connection_closing: readying conn=1000 
sd=12 for close 
Aug 17 09:40:42 ldap slapd[18626]: connection_close: conn=1000 sd=12 
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on 1 descriptor 
Aug 17 09:40:42 ldap slapd[18626]: daemon: activity on:
Aug 17 09:40:42 ldap slapd[18626]:  
Aug 17 09:40:42 ldap slapd[18626]: daemon: removing 12 
Aug 17 09:40:42 ldap slapd[18626]: conn=1000 fd=12 closed (connection lost) 
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=7 active_threads=0 
tvp=NULL 
Aug 17 09:40:42 ldap slapd[18626]: daemon: epoll: listen=8 active_threads=0 
tvp=NULL 

Конец вывода strace -f bind-sdb:
[pid 17518] open("/etc/host.conf", O_RDONLY) = -1 ENOENT (No such file or 
directory)
[pid 17518] futex(0x7feed1e89584, FUTEX_WAKE_PRIVATE, 2147483647) = 0
[pid 17518] open("/etc/hosts", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file 
or directory)
[pid 17518] open("/etc/ld.so.cache", O_RDONLY) = -1 ENOENT (No such file or 
directory)
[pid 17518] open("/lib64/tls/x86_64/libnss_dns.so.2", O_RDONLY) = -1 ENOENT 
(No such file or directory)
[pid 17518] stat("/lib64/tls/x86_64", 0x7fffe2343050) = -1 ENOENT (No such 
file or directory)
[pid 17518] open("/lib64/tls/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such 
file or directory)
[pid 17518] stat("/lib64/tls", 0x7fffe2343050) = -1 ENOENT (No such file or 
directory)
[pid 17518] open("/lib64/x86_64/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No 
such file or directory)
[pid 17518] stat("/lib64/x86_64", 0x7fffe2343050) = -1 ENOENT (No such file or 
directory)
[pid 17518] open("/lib64/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file 
or directory)
[pid 17518] stat("/lib64", 0x7fffe2343050) = -1 ENOENT (No such file or 
directory)
[pid 17518] open("/usr/lib64/tls/x86_64/libnss_dns.so.2", O_RDONLY) = -1 
ENOENT (No such file or directory)
[pid 17518] stat("/usr/lib64/tls/x86_64", 0x7fffe2343050) = -1 ENOENT (No such 
file or directory)
[pid 17518] open("/usr/lib64/tls/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No 
such file or directory)
[pid 17518] stat("/usr/lib64/tls", 0x7fffe2343050) = -1 ENOENT (No such file 
or directory)
[pid 17518] open("/usr/lib64/x86_64/libnss_dns.so.2", O_RDONLY) = -1 ENOENT 
(No such file or directory)
[pid 17518] stat("/usr/lib64/x86_64", 0x7fffe2343050) = -1 ENOENT (No such 
file or directory)
[pid 17518] open("/usr/lib64/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such 
file or directory)
[pid 17518] stat("/usr/lib64", 0x7fffe2343050) = -1 ENOENT (No such file or 
directory)
[pid 17518] open("/etc/openldap/ldap.conf", O_RDONLY) = -1 ENOENT (No such 
file or directory)
[pid 17518] geteuid()                   = 25
[pid 17518] getuid()                    = 25
[pid 17518] open("/root/ldaprc", O_RDONLY) = -1 ENOENT (No such file or 
directory)
[pid 17518] open("/root/.ldaprc", O_RDONLY) = -1 ENOENT (No such file or 
directory)
[pid 17518] open("ldaprc", O_RDONLY)    = -1 ENOENT (No such file or 
directory)
[pid 17518] socket(PF_NETLINK, SOCK_RAW, 0) = 5
[pid 17518] bind(5, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
[pid 17518] getsockname(5, {sa_family=AF_NETLINK, pid=17518, groups=00000000}, 
[12]) = 0
[pid 17518] sendto(5, "\24\0\0\0\26\0\1\3ZTKN\0\0\0\0\0\0\0\0", 20, 0, 
{sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
[pid 17518] recvmsg(5, {msg_name(12)={sa_family=AF_NETLINK, pid=0, 
groups=00000000}, 
msg_iov(1)=[{"0\0\0\0\24\0\2\0ZTKNnD\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 
4096}], msg_controllen=0, msg_flags=0}, 0) = 104
[pid 17518] recvmsg(5, {msg_name(12)={sa_family=AF_NETLINK, pid=0, 
groups=00000000}, 
msg_iov(1)=[{"@\0\0\0\24\0\2\0ZTKNnD\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 
4096}], msg_controllen=0, msg_flags=0}, 0) = 64
[pid 17518] recvmsg(5, {msg_name(12)={sa_family=AF_NETLINK, pid=0, 
groups=00000000}, 
msg_iov(1)=[{"\24\0\0\0\3\0\2\0ZTKNnD\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"..., 
4096}], msg_controllen=0, msg_flags=0}, 0) = 20
[pid 17518] close(5)                    = 0
[pid 17518] socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 5
[pid 17518] fcntl(5, F_SETFD, FD_CLOEXEC) = 0
[pid 17518] setsockopt(5, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
[pid 17518] setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid 17518] connect(5, {sa_family=AF_INET, sin_port=htons(389), 
sin_addr=inet_addr("192.168.244.30")}, 16) = 0
[pid 17518] --- {si_signo=SIGSEGV, si_code=SEGV_MAPERR, 
si_addr=0xffffffffd5b32160} (Segmentation fault) ---
Process 17518 detached

Прошу помощи у сообщества - работоспособна ли текущая сборка bind 9.8 в p6 в 
случае использования sdb?

PS Возможно, в chroot bind не хватает нужных библиотек?

-- 
WBR, Alex Moskalenko


Подробная информация о списке рассылки Sysadmins