14.6. 使用持久性搜索
持久性搜索是一个 ldapsearch,即使返回初始搜索结果,也会保持打开状态。
重要
Red Hat Enterprise Linux 的 OpenLDAP 客户端工具不支持持久性搜索。但是,服务器本身具有。必须使用其他 LDAP 客户端来执行持久性搜索。
持久性搜索的目的是为目录条目以及完整的条目本身提供持续的更改列表,如混合搜索和更改日志。因此,search 命令必须指定要返回的条目(搜索参数),以及导致条目返回的更改(条目更改参数)。
持久性搜索对于访问目录服务器的应用程序或客户端特别有用,并提供两个重要的优点:
- 保持一致和当前的本地缓存。任何客户端都会在尝试连接和查询目录前查询本地缓存。持久性搜索提供了提高这些客户端性能所需的本地缓存。
- 自动启动目录操作。持久性缓存可以在修改条目时自动更新,持久性搜索结果可显示在条目上执行哪些修改类型。另一个应用可以使用该输出自动更新条目,例如为新用户在邮件服务器上自动创建电子邮件帐户或生成唯一用户 ID 号。
运行持久性搜索时也有一些性能注意事项,也有一些性能注意事项:
- 当客户端断开连接时,ldapsearch 不会发送通知,在搜索断开连接时,不会发送针对任何更改的更改通知。这意味着,如果客户端缓存断开连接,且没有使用任何新的、修改或删除条目进行更新缓存,则不会更新它。
- 攻击者可以打开大量持久性搜索来启动拒绝服务攻击。
- 持久性搜索需要在 Directory 服务器和客户端之间打开 TCP 连接。只有在服务器被配置为允许许多客户端连接且有关闭闲置连接时,才应这样做。
在访问日志中,使用标签 options=persistent 标识持久搜索。
[12/Jan/2009:12:51:54.899423510 -0500] conn=19636710736396323 op=0 SRCH base="dc=example,dc=com" scope=2 filter="(objectClass=person)" attrs=ALL options=persistent