Asteriskがユーザーに関する情報を保存できるようにOpenLDAPを設定するのに苦労しています。いくつかのハウツーに従おうとしましたが、残念ながら正しく設定できません。
ユーザーをインポートするまで、ほとんどの手順は順調に進んでいるようです。
OpenLDAPのインストール:
yum install openldap-servers openldap-clients
mkdir /var/lib/ldap
chown -R ldap:ldap /var/lib/ldap
cd /usr/local/src/certified-asterisk-13.1-cert1/contrib/scripts
アスタリスクLDAPスキームをコピーします:
cp asterisk.ldap-schema /etc/openldap/schema/
systemctl restart slapd.service
asterisk.ldifをインポート:
ldapadd -Y EXTERNAL -H ldapi:/// -f ./asterisk.ldif
ここでインポートはうまくいくようです:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=asterisk,cn=schema,cn=config"
「/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif」の設定を確認すると、次の設定が生成されていることがわかります。
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=my-domain,dc=com
olcRootDN: cn=Manager,dc=my-domain,dc=com
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: c11a9b72-7170-1034-8245-599798aeacb0
creatorsName: cn=config
createTimestamp: 20150407125255Z
entryCSN: 20150407125255.397631Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20150407125255Z
次に、既存のユーザー(createduser.ldif)のインポートをシミュレートするために次のファイルを作成しました。
dn: cn=1000,ou=sip,dc=digium,dc=internal
objectClass: AsteriskAccount
objectClass: AsteriskExtension
objectClass: AsteriskSIPUser
objectClass: top
AstAccountName: sip user
cn: 1000
AstAccountDefaultUser: 0
AstAccountExpirationTimestamp: 0
AstAccountFullContact: 0
AstAccountHost: dynamic
AstAccountIPAddress: 0
AstAccountLastQualifyMilliseconds: 0
AstAccountPort: 0
AstAccountRegistrationServer: 0
AstAccountType: 0
AstAccountUserAgent: 0
AstExtension: 1000
最後に、インポートを開始します...
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=Manager,dc=my-domain,dc=com" -f createduser.ldif
しかし、それは「グローバルな優れた知識はありません」を返します。
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=1000,ou=sip,dc=digium,dc=internal"
ldap_add: Server is unwilling to perform (53)
additional info: no global superior knowledge
RootCDNとして「cn = asterisk、cn = schema、cn = config」を使用する必要がありますか?私はここで何が間違っているのですか?
LDAPデータベースには次のサフィックスがあります。
dc=my-domain,dc=com
Dnでエントリを追加しようとしています:
cn=1000,ou=sip,dc=digium,dc=internal
LDAPは階層型データベースであるため、階層のニーズに合わせるには、DBサフィックスまたはエントリDNを修正する必要があります。
次のコマンドでエントリdnを変更して実行できます。
cn=1000,ou=sip,dc=my-domain,dc=com
ただし、組織単位ou = sip、dc = my-domain、dc = comがない場合は、次のようにLDIFを使用して作成できます。
dn: ou=sip,dc=my-domain,dc=com
ou: sip
objectClass: organizationalUnit
これで、階層はエントリを受け入れる準備ができましたcn = 1000、ou = sip、dc = my-domain、dc = com