Es posible que la replicación de Open Directory no funcione; el mensaje "Se excedió el límite de tamaño" aparece en slapd.log

Es posible que la replicación de Open Directory no funcione; cuando esto sucede, en /var/log/slapd.log aparecen entradas como la siguiente:

slapd[209]: do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (4) Size limit exceeded
slapd[209]: do_syncrep2: rid=001 (4) Size limit exceeded

Esto puede ocurrir si un servidor de Open Directory estuvo apagado durante un período de tiempo extenso o si se crea una réplica cuando hay más de 11 000 objetos en el almacén de datos de LDAP. 11 000 es la cantidad máxima predeterminada de objetos que pueden obtenerse en una búsqueda.

Permite que el usuario _ldap_replicator omita el límite de la búsqueda. Esto puede realizarse al cambiar la configuración del servidor LDAP en todos los servidores Open Directory. Esto implica la autenticación como administrador de directorios y la ejecución de algunos comandos de LDAP en Terminal. Además, debe conocerse la base de búsqueda del servidor LDAP, también conocida como contexto de nomenclatura.

Puedes usar los siguientes pasos para lograr esto.

Primero, encuentra la base de búsqueda para el servidor LDAP

Encuentra la base de búsqueda del servidor LDAP. Normalmente, este es el nombre del dominio completo del servidor con dc= pegado a cada etiqueta y con los puntos cambiados por comas.

Por ejemplo, un servidor con el nombre de host server.example.com tendría la base de búsqueda predeterminada “dc=server,dc=example,dc=com”. La base de búsqueda puede verificarse consultando en el mismo servidor LDAP con el siguiente comando de Terminal:

ldapsearch -x -LLL -b “” -s base namingContexts

Busca la línea que contiene namingContexts y la base de búsqueda aparecerá después de los dos puntos, como en el ejemplo que aparece a continuación:

dn:
namingContexts: dc=server,dc=example,dc=com

Luego, obtén las credenciales de Kerberos para el administrador de directorios

El nombre predeterminado para este usuario es diradmin, pero es posible que el nombre se haya cambiado cuando se creó el usuario principal de Open Directory. Esto se realiza al usar el comando kinit en Terminal. Ejecuta el siguiente comando, sustituye el nombre correcto del administrador de directorios con diradmin si es necesario, e introduce la contraseña cuando se te solicite. No hay resultados.

kinit diradmin

A continuación, usa ldapmodify en modo interactivo en Terminal para realizar los cambios. Solo debes ejecutar lo siguiente en Terminal=:

ldapmodify

Nota: Esto dará como resultado algunos mensajes SASL y luego deberás escribir más comandos. En el caso de que funcione correctamente, el resultado de SASL debería verse similar a este:

SASL/GSSAPI authentication started
SASL username: diradmin@REALM
SASL SSF: 56
SASL data security layer installed.

Modifica la configuración

Por último, realiza las modificaciones en la configuración. Esto requerirá que escribas todo el texto que aparece a continuación en la ventana de Terminal en respuesta al comando ldapmodify. Debes sustituir la base de búsquedas por la [search base] a continuación. También debes eliminar los corchetes.

dn: olcDatabase={1}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

Ahora, presiona Control-D.

Si todo funciona correctamente, verás mensajes como el siguiente:

modifying entry "olcDatabase={1}bdb,cn=config"
modifying entry "olcDatabase={2}bdb,cn=config"

Más información

   

Script de shell alternativo

A continuación aparece el texto de un script de shell que puede usarse para automatizar este proceso. Solo debes usar el comando kinit para el administrador de directorios como se mostró anteriormente y ejecutar este script. Consulta este artículo para obtener sugerencias del editor de texto.

#!/bin/sh
nc=`ldapsearch -x -LLL -b "" -s base namingContexts | awk '/namingContexts/ {print $2}'`
ldapmodify  <<EOF
dn: olcDatabase={1}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,$nc" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,$nc" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

EOF
#end of script

Este documento se actualizará a medida que se disponga de más información.

Fecha de publicación: