Я пытаюсь настроить сервер LDAP с репликой, но у меня возникают проблемы. У меня 2 сервера - ldap1.example.com (главный) и ldap2.example.com (реплика). Выполнение поискового запроса, например ldapsearch -D "cn=reader,dc=example,dc=com" -w -h ldap1.example.com -b "dc=example,dc=com "uid=testuser"
Возвращает данные, как ожидалось. Однако выполнение того же запроса с -h ldap2.example.com
заканчивается
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: uid=testuser
# requesting: ALL
#
# search result
search: 2
result: 32 No such object
# numResponses: 1
Хотя репликация определенно работает, потому что запущенная slapcat
на реплике возвращает все данные.
Мой syncrepl.ldif:
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncrepl: rid=1
provider=ldap://ldap1.example.com
type=refreshAndPersist
retry="30 10 600 10"
interval=00:00:05:00
searchbase=dc=example,dc=com
scope=sub
schemachecking=on
binddn="cn=admin,dc=example,dc=com"
credentials="supersecretpassword"
starttls=yes
tls_reqcert=allow
Ваш ACL не позволяет dn, к которому вы привязываете доступ для чтения.
В настоящее время:
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write
by dn="cn=admin,dc=example,dc=com" write
by anonymous auth
by * none
olcAccess: {1}to *
by self write
by dn="cn=admin,dc=example,dc=com" write
by * none
Предлагается:
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write
by dn="cn=admin,dc=example,dc=com" write
by anonymous auth
by * none
olcAccess: {1}to *
by self write
by dn="cn=admin,dc=example,dc=com" write
by users read
by * none