我在 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 模块。sshd
system
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 服务器在启动之前尝试查询自身的情况。
一些解决方案:
指向
ldap2
,ldap1
反之亦然/etc/ldap.conf
您的系统的主机名是ldap2
,所以我假设还有一个ldap1
around。
如果您将系统配置为相互查询,那么只要您一次只重新启动一个,您就始终至少有一台服务器可以启动另一台。确保已
nss_initgroups_ignoreusers
正确设置/etc/ldap.conf
无论如何,这是一个很好的通用做法——启动期间引用的用户(例如 LDAP 服务器用户)不需要 LDAP 启动并运行,也不应该启动 LDAP 查询来查找组成员身份。该nss_initgroups_ignoreusers
选项会抑制指定用户(通常是系统/服务帐户)的 LDAP 组成员身份查询。
这通常会消除“服务器不可用”的情况,因为 LDAP 服务器(和其他核心系统服务)可以启动而无需查询 LDAP 服务器。到事情做需要 LDAP 服务器来查询它,LDAP 服务器应该已经启动并正在运行。