OpenLDAP链覆盖configuration

我试图让OpenLDAP的链覆盖工作,但不幸的是,文档相当稀疏。

我使用RHEL 6附带的OpenLDAP版本2.4.39软件包,LDAP主站和从站正在使用TLS进行通信。 TLS证书和密钥与Mozilla NSS一起存储,因此下面的tls_certdirtls_cert语句应该是正确的(它们肯定以这种forms用于复制)。

我的configuration(在slapd.confforms,我使用之前转换为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到主,而不是本地存储)。 为了这个目的,我在configuration文件中设置了ppolicy_forward_updates。

我已经testing了这一点,并且在从机上进行更改时,没有看到任何stream向LDAP主机的stream量。

有谁知道我在这里做错了吗?

您需要确保在frontend数据库上configuration了chain覆盖,而不是在hdb / mdb / bdb数据库上configuration。 所以在你的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数据库上configuration了叠加层,并且在从设备到主设备之间没有stream量的情况下出现相同的症状。 只要我将覆盖层及其数据库重新发送到frontend数据库,它就开始工作。

您可能还需要在主服务器上configurationolcAuthzPolicy属性。