OpenLDAP 通过代理推送复制 - syncrepl 设置指南

OpenLDAP 通过代理推送复制 - syncrepl 设置指南

我具有与 OpenLDAP 以及 389-ds 交互和排除故障的一些基本经验,但是我没有太多设置它们或配置 OpenLDAP 服务器的经验。

我的目标是设置从受信任网络内的主服务器向外到不受信任网络内的副本服务器的复制,并且由于防火墙流量和网络要求,不允许副本服务器直接访问主服务器。即使是初始连接也是如此,因此简单的 RefreshAndPersist 配置不起作用。

我已经读到可以使用代理设置基于推送的复制,例如:

  • 代理服务器作为“隐藏”数据库安装在与主服务器相同的服务器上
  • 代理使用 RefreshAndPersist 与主服务器建立复制
  • 然后代理就可以将数据从副本中推送出去

我浏览并重读了这份文件的很多部分:https://www.openldap.org/doc/admin24/replication.html 我还遵循了这个基本指南来设置具有复制功能的主服务器:https://ubuntu.com/server/docs/service-ldap-replication

我遇到的问题是找到一个有用的指南,它可以引导我完成如上所述的设置和配置代理的过程。

在我的调查和尝试设置过程中,我学会了如何加载和启用模块、打开日志记录以及设置 TLS 支持。

我目前在 Ubuntu 20.04 上从 Ubuntu 存储库(使用 apt 安装的 slapd 和 ldap-utils)运行 OpenLDAP 2.4。

以下是当前启用的模块:

root@davidw-ldap-provider-with-proxy:~# slapcat -n 0 | grep olcModuleLoad
olcModuleLoad: {0}back_mdb
olcModuleLoad: {1}pcache
olcModuleLoad: {2}back_ldap
olcModuleLoad: {3}syncprov
olcModuleLoad: {4}back_monitor
olcModuleLoad: {5}rwm

这是日志设置:

root@davidw-ldap-provider-with-proxy:~# ldapsearch -Y EXTERNAL -H ldapi:/// -b 'cn=config' -D 'cn=config' -s base -LLL -W olcLoglevel
Enter LDAP Password: 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: cn=config
olcLogLevel: Sync
olcLogLevel: stats

我们可以在上面的输出中看到,我已加载back_ldap(OpenLDAP 的后端)和syncprov(覆盖)模块。我现在正在尝试按照以下指南进行操作https://www.pixelstech.net/article/1509263631-OpenLDAP-Proxy----slapd-conf设置代理。我已将以下内容添加到 /etc/ldap/ldap.conf:

modulepath /usr/lib/ldap
moduleload back_bdb.la

database               ldap
readonly               yes
protocol-version       3
rebind-as-user
uri:                    "ldapi:///"
suffix                  "dc=ma,dc=us,dc=example,dc=com"
overlay                 rwm

我尝试使用以下命令将其转换为 ldif,但产生了一个错误,提示“ldap”是无法识别的数据库类型:

root@davidw-ldap-provider-with-proxy:~# slaptest -f /etc/ldap/ldap.conf -F /etc/ldap/slapd.d/
Unrecognized database type (ldap)
61ccaacf /etc/ldap/ldap.conf: line 21: <database> failed init (ldap)
slaptest: bad configuration directory!

问题

  1. 为什么我会收到此Unrecognized database type错误消息,即使我们可以证明 ldap 后端已加载?
  2. 一旦我设置了代理,我可以在哪里找到有关满足项目其余要求的有用说明?我已向 openldap 邮件列表发送了几封电子邮件,网址为https://lists.openldap.org/hyperkitty/list/[电子邮件保护]/线程/UDTYKW6AEDR2ALY43V2DQZSL7AVTG5GB/,因为我陷入了困境,真的不知道该如何继续。有一段时间,我尝试从源代码编译 v2.5,但无法使用该配置获得与使用 Ubuntu 软件包一样多的结果,所以我又回到尝试使用 apt 中的标准软件包进行设置。

答案1

我第一个问题的答案是我犯了一个愚蠢的错误。在 ldap.conf 文件中,我有以下内容:

modulepath /usr/lib/ldap
moduleload back_bdb.la

database               ldap

我正在加载back_bdb模块,而不是back_ldap模块。我需要将moduleload值更改为back_ldap.la

愚蠢的错误,可能是由于盯着这些配置文件太久而造成的。

答案2

没有答案...

嗨,David。想知道你成功了吗?我还想在受信任的网络中设置一个 ldap 代理,这样就可以将更改的内容推送到不受信任的网络中的 ldap。如果你有任何更新,非常感谢您能与我们分享。非常感谢。

相关内容