nss_ldap:无法搜索 LDAP 服务器 - 服务器不可用

nss_ldap:无法搜索 LDAP 服务器 - 服务器不可用

我在 FreeBSD 8.x 上安装了 OpenLDAP 服务器。我收到以下错误:
Mar 25 16:11:45 ldap2 slapd[1268]: nss_ldap: could not search LDAP server - Server is unavailable

我已将我的 LDAP 配置信息包含在下面。此外,和服务pam_ldap均启用了 PAM 模块。sshdsystem


ldap配置文件

#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE   dc=example,dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never
base      dc=albiruni,dc=com
uri       ldap://localhost/
rootbinddn cn=admin,dc=albiruni,dc=com
#bind_policy soft
ssl start_tls
TLS_REQCERT allow
pam_login_attribute uid

nsswitch.conf

# nsswitch.conf(5) - name service switch configuration file
# $FreeBSD: src/etc/nsswitch.conf,v 1.1.10.1.6.1 2010/12/21 17:09:25 kensmith Exp $
#

group: files cache ldap
passwd: files cache ldap
sudoers: files cache ldap


#group: compat
#group_compat: nis
hosts: files dns
networks: files
#passwd: compat
#passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files

答案1

正如 @ChrisS 所说,这似乎是您的 LDAP 服务器在启动之前尝试查询自身的情况。

一些解决方案:

  1. 指向ldap2ldap1反之亦然/etc/ldap.conf
    您的系统的主机名是ldap2,所以我假设还有一个ldap1around。
    如果您将系统配置为相互查询,那么只要您一次只重新启动一个,您就始终至少有一台服务器可以启动另一台。

  2. 确保已nss_initgroups_ignoreusers正确设置/etc/ldap.conf
    无论如何,这是一个很好的通用做法——启动期间引用的用户(例如 LDAP 服务器用户)不需要 LDAP 启动并运行,也不应该启动 LDAP 查询来查找组成员身份。该nss_initgroups_ignoreusers选项会抑制指定用户(通常是系统/服务帐户)的 LDAP 组成员身份查询。
    这通常会消除“服务器不可用”的情况,因为 LDAP 服务器(和其他核心系统服务)可以启动而无需查询 LDAP 服务器。到事情需要 LDAP 服务器来查询它,LDAP 服务器应该已经启动并正在运行。

相关内容