5.3-RELEASE ではまっているネタ
RADIUS サーバのディスクがイカレそうなので、どうせなら 5.3-RELEASE で... と思ったのが運の尽き。覚え書き代わりに書いておきます。そのうち解消しナイト。
- BIND8 -> BIND9 に。その為かどうか、jail を使った named の起動が上手くできなくなった。仕方ないので chroot でガマンする...
- network 関連の API が変わったのか、openldap のライブラリを使ったプログラムの挙動がおかしくなった。5.2.x 系のマシンだと真っ当に動くので、どう考えても base system のライブラリで何か変更が加わっているとしか思えない --;)
特に 2. は死亡... 14台の RADIUS サーバ + 3台の LDAP サーバの冗長構成にした認証システムがあるのだが、C で書いてあるプログラムの挙動が変。3台の LDAP サーバに順に接続し、認証処理が実施できれば OK、接続不可など処理そのものがアウトだった際には次のサーバに接続を試みるために LDAP 接続のタイムアウトを以下のようなコードで書いてある。
/* LDAP サーバへの接続タイムアウト = CONNECTTIMEOUT 秒に設定 */ if(ldap_set_option(NULL, LDAP_OPT_NETWORK_TIMEOUT, &CONNECTTIMEOUT) != LDAP_ OPT_SUCCESS) { perror("ldap_set_option"); free(dn); return AUTH_FAILURE; }
ところがこれを 5.3-RELEASE マシンでコンパイルすると、どういうわけかあっという間に接続失敗し、3台全てで認証処理そのものが失敗してしまう。コメントアウトすれば問題ないのだが、そうすると 1台でも接続できないマシンがあると、デフォルトのタイムアウト(5.3-RELESE だと 90秒?)待たされてしまう。これでは洒落にならん orz。
とりあえず 5.2.1-RELEASE-pX なマシンでコンパイルしたバイナリを使えば大丈夫だけど、何とかならないかなぁ? FreeBSD 側の問題なのか OpenLDAP 側の問題なのかすら分からんです --;)...