我正在尝试运行本地 LDAP 代理缓存。这个想法是这样的:
- 当前计算机
(A)
正在将所有 LDAP 请求发送到远程 LDAP 服务器(L)
- 相反,应该有一个运行的代理缓存“服务器”
A
来充当A
和之间的中间人L
。缓存将存储所有查询及其所有属性(直到它被填满,然后开始“回收”)。
OpenLDAP 的代理缓存引擎看起来不错,但关于如何设置的信息不多。有一个示例配置文件,但我无法让它工作。
由于这应该只是代理缓存,因此我不需要设置本地数据库。所以配置文件看起来像这样:
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
moduleload pcache.la
database ldap
suffix "dc=int,dc=somedomain,dc=com"
rootdn "dc=int,dc=somedomain,dc=com"
uri ldap://dc-04.int.somedomain.com:389
overlay pcache
pcache hdb 100000 1 1000 100
pcacheAttrset 0 *
pcacheTemplate (sn=) 0 3600
cachesize 20
directory /var/lib/ldap
index objectClass eq
index cn eq,sub
现在,我希望任何对 ldap://localhost 的请求都会镜像到远程 LDAP(如果不在缓存中)。
我使用此命令来测试远程服务器上的身份验证:
ldapwhoami -vvv -h dc-04.int.somedomain.com -p 389 -D [email protected] -x -w <passwd>
效果很好,我得到了授权。
但是,当我尝试在本地主机上运行相同的命令时:
ldapwhoami -vvv -h localhost -p 389 -D [email protected] -x -w <passwd>
它失败了,说
ldap_initialize( ldap://localhost:389 )
ldap_bind: Invalid DN syntax (34)
additional info: invalid DN
Slapd 正在本地主机上侦听,netstat 包含此行:
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 10352/slapd
我有什么遗漏的吗?谢谢
答案1
ldap_bind:无效的 DN 语法 (34) 附加信息:无效的 DN
这意味着使用了无效的专有名称。请注意,[email protected]
在简单绑定请求中使用诸如绑定 DN 之类的内容仅适用于 MS Active Directory,不适用于其他 LDAP 服务器。因此,您的本地 LDAP 代理会拒绝此请求,而不执行其他操作。