[PHP-users 28555] Re: ldap_bindのところでワーニングになります。

kondo nobuaki3.kondo @ toshiba.co.jp
2006年 2月 23日 (木) 21:11:43 JST


近藤です。

お世話になります。
> 動く環境と動かない環境で slapd.conf の内容に差はないのでしょうか?

差はあるかないかといったら、あります。
VMWare(Player)の方は、RedHat9のRPM版のOpenLDAP2.0で、
問題の環境の方は、ソースから構築したOpenLDAP2.3.11のため
スキーマが違います。また、アクセス権制御部分とレプリカの
設定部分で多少違いがあります。
アクセス権制御の部分は、VMWareの方でつけてますが、OpenLDAP
2.3.11の方ではOpenLDAP2.0のときにつけてたアクセス権設定が
何故か使えなかった(エラーになる)のではずしています。
(後で調べようと思ってて今日まで忘れてました。)
suffix、rootdn、index、databaseなどは同じです。

> slapd のログには何か出ていませんか? (手がかりとなるものが出ていなけれ
> ば slapd の loglevel を調整してみるとか)
>
> LDAP_OPT_PROTOCOL_VERSION ってのはデフォルトで何になっているのかな?

echo LDAP_OPT_PROTOCOL_VERSION."\n";
という行を追加してみました。
どちらの環境でも17と出てきました。(使い方と値は正しのでしょうか?)

loglevelを256で比べてみました。

<問題のある方>
Feb 23 20:10:28 hostname slapd[31135]: conn=11 fd=18 ACCEPT from 
IP=127.0.0.1:60726 (IP=0.0.0.0:389)
Feb 23 20:10:28 hostname slapd[31135]: conn=11 op=0 BIND dn="" method=128
Feb 23 20:10:28 hostname slapd[31135]: conn=11 op=0 RESULT tag=97 err=2 
text=historical protocol version requested, use LDAPv3 instead
Feb 23 20:10:28 hostname slapd[31135]: conn=11 op=1 UNBIND
Feb 23 20:10:28 hostname slapd[31135]: conn=11 fd=18 closed

<VMWarePlayer>
Feb 23 20:09:30 hostname slapd[2035]: daemon: conn=1 fd=7 connection from 
IP=127.0.0.1:32771 (IP=0.0.0.0:389) accepted.
Feb 23 20:09:30 hostname slapd[2035]: conn=1 op=0 BIND dn="" method=128
Feb 23 20:09:30 hostname slapd[2035]: conn=1 op=0 RESULT tag=97 err=0 text=
Feb 23 20:09:30 hostname slapd[2035]: conn=1 op=1 UNBIND
Feb 23 20:09:30 hostname slapd[2035]: conn=-1 fd=7 closed

そして、問題のある環境は、実運用している関係上あまり大量のログが
出ようにするわけにもいかないので、VMWarePlayerの方のloglevelを9
にしてみたところ、

Feb 23 20:15:08 hostname slapd[2162]: do_bind: version=2 dn="" method=128
Feb 23 20:15:08 hostname slapd[2162]: daemon: select: listen=6 
active_threads=1                                            tvp=NULL
Feb 23 20:15:08 hostname slapd[2162]: send_ldap_result: conn=0 op=0 p=2
Feb 23 20:15:08 hostname slapd[2162]: send_ldap_response: msgid=1 tag=97 
err=0
Feb 23 20:15:08 hostname slapd[2162]: do_bind: v2 anonymous bind

というのがあり、LDAPはVersion2のようでした。
ということは、「err=2 text=historical protocol version requested,
use LDAPv3 instead」というのがあったので、問題のある方では
クライアントがLDAPv3を使っていたということでしょうか。VMWarePlayer
では,LDAPv2だったということでしょうか。
少々原因が見えてきたっぽいですが、どう対処していいのかまだ
ちょっとわからないので、もうすこし助言をいただけたらと思います。 



PHP-users メーリングリストの案内