我在FreeBSD 8.x上安装了OpenLDAP服务器。 我得到这个错误:
Mar 25 16:11:45 ldap2 slapd[1268]: nss_ldap: could not search LDAP server - Server is unavailable
我在下面列出了我的LDAPconfiguration信息。 此外,为sshd和system服务启用了pam_ldap PAM模块。
ldap.conf :
# # 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
正如@ChrisS所说的,这似乎是您的LDAP服务器在启动之前尝试查询自己的情况。
一些解决scheme
在/etc/ldap.conf ldap2 ldap1 ,反之亦然
你系统的主机名是ldap2 ,所以我认为还有一个ldap1 。
如果您将系统configuration为相互查询,那么只要您一次只重新启动一个系统,您将始终至less有一台服务器来引导另一台服务器。
确保在/etc/ldap.conf正确设置了nss_initgroups_ignoreusers
无论如何,这是一个很好的通用实践 – 启动过程中引用的用户(例如,LDAP服务器用户)不需要启动和运行LDAP,也不应启动LDAP查询来查找组成员资格。 nss_initgroups_ignoreusers选项会禁止指定用户(通常是系统/服务帐户)的LDAP组成员身份查询。
这通常会消除“服务器不可用”的情况,因为LDAP服务器(和其他核心系统服务)可以启动而无需查询LDAP服务器。 在需要LDAP服务器查询的时候,LDAP服务器应该已经启动并正在运行。