Всем привет!
Было у меня 2 виртуальных OpenLDAP-сервера, скажем, 10.3.3.3 и 10.4.4.4. Сервер 10.4.4.4 раз в минуту успешно синхронизировался (вытягивал обновления LDAP) с сервера 10.3.3.3. Сервер 10.3.3.3 погиб, но сохранилась его старая копия. Я запустил старую копию сервера 10.3.3.3 и обновил на копии базу LDAP синхронизацией данных (syncrepl) с сервера 10.4.4.4 (в этот момент на сетевом уровне было специально сделано так, что сервер 10.4.4.4 не мог обращаться по LDAP к копии 10.3.3.3).
Я хотел снова использовать обновлённую копию 10.3.3.3 как сервер, с которого синхронизируется (вытягивает данные) сервер 10.4.4.4. Обратно поменял под это конфигурацию на сервере 10.3.3.3 и открыл необходимый сетевой доступ, а на сервере 10.4.4.4 уже стоял syncrepl, чтобы вытягивать данные с 10.3.3.3. По логам вижу, что 10.4.4.4 обращается к 10.3.3.3. Сервер 10.3.3.3 пишет в логах, что принимает подключения от 10.4.4.4, явных проблем с репликацией не вижу. Для меня ещё проблема в том, что оба сервера используются и там в логах ещё масса сообщений, которые не относятся к репликации. При этом добавляю пользователя в LDAP-базу сервера 10.3.3.3, а он никак не появляется на 10.4.4.4, хотя интервал обновления syncrepl стоит 1 минута.
Ещё момент. Мы запустили ещё один OpenLDAP-сервер, скажем, 10.5.5.5, который успешно синхронизируется с 10.3.3.3. Получается, что проблема именно в комбинации серверов 10.3.3.3 и 10.4.4.4.
Вот конфигурации slapd.conf серверов 10.3.3.3 и 10.4.4.4 (пароли и хэши заменены словом «Stub»; имя «mylab» используется вместо реального, чтобы не позорить организацию).
# 10.3.3.3
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema
include /usr/local/etc/openldap/schema/samba.schema
include /usr/local/etc/openldap/schema/radius.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/local/libexec/openldap
moduleload back_bdb
database bdb
suffix "dc=book,dc=mylab"
rootdn "cn=admin,dc=book,dc=mylab"
rootpw {SSHA}Stub
index objectclass eq
## serverID used in case of replication
serverID 0
# The following 3 lines are to configure this server as synchronization provider
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
loglevel 0
access to attrs=userPassword,sambaNTPassword,sambaPwdLastSet
by self read
by anonymous auth
by dn="cn=read,dc=book,dc=mylab" read
by * none
access to *
by self read
by anonymous read
by dn="cn=read,dc=book,dc=mylab" read
by * none
directory /var/db/openldap-data
loglevel Stats Conns
# 10.4.4.4
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /etc/openldap/schema/core.schema
# mylab customization of schemas.
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/samba.schema
include /etc/openldap/schema/radius.schema
# Define global ACLs to disable default read access.
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.org
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
# Load dynamic backend modules:
# modulepath /usr/lib64/openldap/openldap
# moduleload back_sock.so
# moduleload back_shell.so
# moduleload back_relay.so
# moduleload back_passwd.so
# moduleload back_null.so
# moduleload back_monitor.so
# moduleload back_meta.so
# moduleload back_ldap.so
# moduleload back_dnssrv.so
# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64
# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn. (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!
#######################################################################
# BDB database definitions
#######################################################################
database hdb
# mylab sync ldap DB.
suffix "dc=book,dc=mylab"
checkpoint 32 30
rootdn "cn=admin,dc=book,dc=mylab"
rootpw {SSHA}Stub
directory /var/lib/openldap-data
index objectClass eq
serverID 1
## ## Synchronisation (pull from other LDAP server)
syncrepl rid=000
provider=ldap://10.3.3.3
type=refreshAndPersist
interval=00:00:01:00
retry="5 5 300 +"
searchbase="dc=book,dc=mylab"
attrs="*,+"
bindmethod="simple"
binddn="cn=admin,dc=book,dc=mylab"
credentials="Stub"
overlay syncprov
syncprov-checkpoint 100 10
logfile /var/log/slapd.log
loglevel 16640
access to attrs=userPassword,sambaNTPassword,sambaPwdLastSet
by self read
by anonymous auth
by dn="cn=read,dc=book,dc=mylab" read
by * none
access to *
by self read
by anonymous read
by dn="cn=read,dc=book,dc=mylab" read
by * none
Прошу помочь заставить 10.4.4.4 синхронизироваться (вытягивать изменения LDAP) с 10.3.3.3.