openldap / slapd 返回错误:“守护进程:listen(ldap://my.server1.org, 5)失败 errno=98(地址已在使用中)”

openldap / slapd 返回错误:“守护进程:listen(ldap://my.server1.org, 5)失败 errno=98(地址已在使用中)”

我正在尝试在两个 openldap 服务器之间设置主主复制。为此,第一步让我配置这两个文件:

  • /etc/hosts,需要包含服务器(本身和第二台服务器)的 baseDN 的 DNS:
192.168.150.1 my.server1.org
192.168.150.2 my.server2.org
  • /etc/default/slapd,需要包含服务器自己的FQDN,以便将未来的serverID与URI匹配:
SLAPD_SERVICES="ldap:/// ldapi:/// ldap://my.server1.org"

配置 SLAPD_SERVICES 变量并重新启动 slapd 服务后,出现以下错误:daemon: listen(ldap://my.server1.org, 5) failed errno=98 (address already un use)。注意:服务处于活动状态(未处于失败状态)

所有 LDAP 命令(例如“ldapsearch -x”)都返回相同的错误:ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

我尝试通过列出服务器上正在运行的所有使用该地址的进程来查找原因my.server1.org

lsof -i |grep my.server1.org
nmdb  377 root  25u IPv4 17535    0t0 UDP my.server1.org:netbios-ns
nmdb  377 root  27u IPv4 17537    0t0 UDP my.server1.org:netbios-dgm

注意:杀死 netbios 的 PID 并不能解决问题

如您所见,没有第二个 slapd/openldap 服务正在运行。

我自己或在互联网上都找不到解决方案,因此我在这里发布了我的问题。

编辑1:根据@naxto asenjo 的请求,以下是该命令的结果ss --listening --processes --numeric |egrep "389|636"

Netid  State  Recv-Q  Send-Q    Local Address:Port                            Peer Address:Port
u_str  LISTEN 0       128       /run/containerd/containerd.sock.ttrpc 14758   users:(("containerd",pid=389, fd=6)) *O
u_str  LISTEN 0       128       /run/containerd/containerd.sock.ttrpc 14758   users:(("containerd",pid=389, fd=7)) *O

编辑 2:我尝试将 SLAPD_SERVICES 和 /etc/hosts 中的值更改为我从未使用过的新 FQDN(ldap 数据库仍为 my.server1.org)。重新启动 slapd 后,我收到相同的错误,“地址已被使用”(对于新的 FQDN)。/etc/hosts 和 SLAPD_SERVICES 似乎遇到冲突?如果我不编辑 /etc/hosts 文件,我会收到错误“名称解析暂时失败”。

答案1

离开该项目一段时间后我找到了解决方案。

在我的 SLAPD_SERVICES 变量中,使用了两个 FQDN 地址:ldap:///并且ldap://my.server1.org/都使用了:389端口。

SLAPD_SERVICES="ldap:/// ldapi:/// ldap://my.server1.org"

如果您想解决冲突,您可以删除其中一个地址或更改其中一个的端口。

SLAPD_SERVICES="ldap://:3389/ ldapi:/// ldap://my.server1.org"
or 
SLAPD_SERVICES="ldapi:/// ldap://my.server1.org"

相关内容