我正在尝试让 OpenLDAP 的链覆盖发挥作用,但不幸的是,文档相当稀少。
我使用的是 RHEL 6 附带的 OpenLDAP 版本 2.4.39 软件包,LDAP 主服务器和从服务器使用 TLS 进行通信。TLS 证书和密钥存储在 Mozilla NSS 中,因此下面的tls_certdir
和tls_cert
语句应该是正确的(它们肯定可以以这种形式进行复制)。
我的配置(slapd.conf
形式上,使用前我将其转换为 OLC 符号)是:
overlay chain
chain-uri ldap://my.ldap.master.example.com
chain-rebind-as-user FALSE
chain-idassert-bind bindmethod="simple"
binddn="cn=Manager,dc=example,dc=com"
credentials="xxxxxxxxxxxxxxxx"
mode="self"
starttls=yes
tls_reqcert=demand
tls_cacertdir=/etc/openldap/certs
tls_cert=my.ldap.slave.example.com
chain-tls start tls_reqcert=demand tls_cacertdir=/etc/openldap/certs tls_cert=my.ldap.slave.example.com
chain-return-error TRUE
[...syncrepl...]
updateref ldap://my.ldap.master.example.com
我希望它能正常工作,以便将策略更新转发到主服务器(例如,当某人输错密码五次或更多次时,从服务器将把 pwdAccountLockedTime 发送给主服务器,而不是将其存储在本地)。为此,我在配置文件中设置了 ppolicy_forward_updates。
我已对此进行了测试,并且当我在从属服务器上进行更改时没有看到任何流向 LDAP 主服务器的流量。
有人知道我在这里做错了什么吗?
答案1
您需要确保chain
覆盖是在frontend
数据库上配置的,而不是在//hdb
数据库上配置的。因此,在您的数据库中,您最终应该得到以下条目:mdb
bdb
cn=config
olcDatabase={-1}frontend,cn=config
olcOverlay={0}chain,olcDatabase={-1}frontend,cn=config
olcDatabase={0}ldap,olcOverlay={0}chain,olcDatabase={-1}frontend,cn=config
我遇到了同样的问题,我在主数据库上配置了覆盖hdb
,并且出现了同样的症状,即从从服务器到主服务器没有流量。一旦我将覆盖及其数据库重新设置为数据库,frontend
它就开始工作了。
您可能还需要olcAuthzPolicy
在主服务器上配置属性。