Назад | Перейти на главную страницу

OpenLAP olc (cn = config) и цепочка - нужна помощь

Итак, после множества разочаровывающих поисков в Google мне может показаться, что мой гугл-фу не на высоте - специфика цепочки мне не ближе.

Я частично использовал ответ Вот, но это не помогает, когда я пытаюсь добавить фактическую цепочку:

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f chain_conf.ldif

chain_conf.ldif содержит:

#dn: olcOverlay={0}chain
#objectClass: olcOverlayConfig
#objectClass: olcChainConfig
#olcOverlay: {0}chain
#olcChainCacheURI: FALSE
#olcChainMaxReferralDepth: 1
#olcChainReturnError: TRUE
#structuralObjectClass: olcChainConfig

dn: olcDatabase={0}config
objectClass: olcLDAPConfig
objectClass: olcChainDatabase
olcDatabase: {0}ldap
olcDbStartTLS: none  starttls=no
olcDbRebindAsUser: FALSE
olcDbChaseReferrals: TRUE
olcDbTFSupport: no
olcDbProxyWhoAmI: FALSE
olcDbProtocolVersion: 3
olcDbSingleConn: FALSE
olcDbCancel: abandon
olcDbUseTemporaryConn: FALSE
olcDbConnectionPoolMax: 16
olcDbSessionTrackingRequest: FALSE
olcDbNoRefs: FALSE
olcDbNoUndefFilter: FALSE
structuralObjectClass: olcLDAPConfig

dn: olcDatabase={1}mdb
objectClass: olcLDAPConfig
objectClass: olcChainDatabase
olcDatabase: {1}ldap
olcDbURI: "ldap://provider.example.com"
olcDbStartTLS: none  starttls=no
olcDbIDAssertBind: mode=self flags=prescriptive,proxy-authz-non-critical bindm
 ethod=simple timeout=0 network-timeout=0 binddn="cn=manager,o=example,c=com”
 credentials="VerySecret" keepalive=0:0:0
olcDbRebindAsUser: FALSE olcDbChaseReferrals: TRUE olcDbTFSupport: no
olcDbProxyWhoAmI: FALSE
olcDbProtocolVersion: 3
olcDbSingleConn: FALSE
olcDbCancel: abandon
olcDbUseTemporaryConn: FALSE
olcDbConnectionPoolMax: 16
olcDbSessionTrackingRequest: FALSE
olcDbNoRefs: FALSE
olcDbNoUndefFilter: FALSE
structuralObjectClass: olcLDAPConfig

Попытка добавить это дает следующий ответ:

root@consumer:~# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f chain_conf.ldif
adding new entry "olcDatabase={0}config"
ldap_add: Server is unwilling to perform (53)
        additional info: no global superior knowledge

... а теперь я довольно застрял.

Общая идея состоит в том, чтобы иметь один главный ldap-сервер, который синхронизируется с несколькими серверами, доступными только для чтения, которые, в свою очередь, обеспечивают обратную связь с основным сервером для обновлений и иным образом обеспечивают поиск.

Мне уже удалось запустить syncrepl, и он отлично работает.

Информация об OpenLDAP:

Package: slapd
Version: 2.4.45+dfsg-1ubuntu1

ОПЕРАЦИОННЫЕ СИСТЕМЫ:

Ubuntu 17.10

Может ли кто-нибудь помочь с этим?

Ах! - В заключение! - Поразило просветление :)

Итак, сначала мне пришло в голову, что различные dn: olcDatabase={N}ldap,olcOverlay={0}chain,olcDatabase={-1}frontend,cn=config строфы должны соответствовать фактическим olcDatabase={N}mdb,cn=config атрибуты (?) в cn=configи, во-вторых, вырезание и вставка ужасных веб-страниц, в которых используются левая и правая кавычки Unicode, а не красивые двойные кавычки ascii, как правило, приводят к головной боли в будущем.

Судя по опубликованному вами LDIF, отличительные имена неверны. Это должно выглядеть примерно так:

dn: olcOverlay={0}chain,olcDatabase={-1}frontend,cn=config
objectClass: olcOverlayConfig
objectClass: olcChainConfig
olcOverlay: {0}chain
olcChainCacheURI: FALSE
olcChainMaxReferralDepth: 1
olcChainReturnError: TRUE

dn: olcDatabase={0}ldap,olcOverlay={0}chain,olcDatabase={-1}frontend,cn=config
objectClass: olcLDAPConfig
objectClass: olcChainDatabase
olcDatabase: {0}ldap
olcDbStartTLS: none  starttls=no
olcDbRebindAsUser: FALSE
olcDbChaseReferrals: TRUE
olcDbTFSupport: no
olcDbProxyWhoAmI: FALSE
olcDbProtocolVersion: 3
olcDbSingleConn: FALSE
olcDbCancel: abandon
olcDbUseTemporaryConn: FALSE
olcDbConnectionPoolMax: 16
olcDbSessionTrackingRequest: FALSE
olcDbNoRefs: FALSE
olcDbNoUndefFilter: FALSE

dn: olcDatabase={1}ldap,olcOverlay={0}chain,olcDatabase={-1}frontend,cn=config
objectClass: olcLDAPConfig
objectClass: olcChainDatabase
olcDatabase: {1}ldap
olcDbURI: "ldap://provider.example.com"
olcDbStartTLS: none  starttls=no
olcDbIDAssertBind: mode=self flags=prescriptive,proxy-authz-non-critical bindmethod=simple timeout=0 network-timeout=0 binddn="cn=manager,o=example,c=com” credentials="VerySecret" keepalive=0:0:0
olcDbRebindAsUser: FALSE
olcDbChaseReferrals: TRUE
olcDbTFSupport: no
olcDbProxyWhoAmI: FALSE
olcDbProtocolVersion: 3
olcDbSingleConn: FALSE
olcDbCancel: abandon
olcDbUseTemporaryConn: FALSE
olcDbConnectionPoolMax: 16
olcDbSessionTrackingRequest: FALSE
olcDbNoRefs: FALSE
olcDbNoUndefFilter: FALSE

Обратите внимание dn: линии изменены.

Предполагается, что вы также загрузили back_ldap модуль также