LDAP の設定と構成

付録 B 構成に関する問題の解決

この付録では、LDAP の構成で発生する問題とその解決方法を示します。

構成で発生する問題とその解決法

LDAP の構成で発生する問題とそれらの解決方法について説明します。

未解決のホスト名

Solaris LDAP クライアントのバックエンドは、ホスト検索時に、gethostbyname(3N)getipnodebyname(3N) によって返されるホスト名と同様に、完全指定ホスト名を返すように設計されています。ディレクトリに格納されている名前が完全指定されている場合 (つまり 1 つ以上のドットが含まれている場合)、クライアントはその名前をそのまま返します。たとえば、格納されている名前が hostB.eng であれば、返される名前も hostB.eng です。

LDAP ディレクトリに格納されている名前が完全指定されていない場合 (ドットが 1 つも含まれない場合)、クライアントのバックエンドは、その名前にドメイン部分を追加します。たとえば、格納されている名前が hostA であれば、返される名前は hostA.domainname となります。

LDAP ドメイン内のシステムにリモートからアクセスできない

DNS ドメイン名が LDAP ドメイン名と異なる場合は、nsswitch.conf ファイルを変更してください。ホストエントリ行に dns を指定するか、ldap の前に dns を追加します。

sendmail がリモートユーザーとのメールの送受信に失敗する

メールドメイン (通常は DNS ドメイン) が LDAP ドメインと異なると、メールの転送に失敗することがあります。sendmail(1M) は、メールドメインを、gethostname(3N) が返すホスト名のドメイン部分から取り出します。つまり、返されるアドレスは LDAP ドメインになります。メール/DNS ドメインは LDAP ドメインとは異なるため、外部ユーザーはこのようなメールに返信できません。この問題を解決するには、nsswitch.conf ファイル内の当該ホストエントリを dns に変更するか、ldap の前に dns を追加します。

ログインできない

LDAP クライアントは、ログイン時のユーザー認証に PAM(3) モジュールを使用します。UNIX 標準の PAM モジュールでは、パスワードをサーバーから読み込み、クライアント側で検査します。これは、次のいずれかの理由で失敗する場合があります。

  1. ldap が、/etc/nsswitch.conf ファイル内に情報源として存在しない。

  2. サーバー上のパスワードをプロキシエージェントから読むことができないようになっている。プロキシエージェントが比較のためにパスワードをクライアントに返すので、少なくともプロキシエージェントはパスワードを読めなければならない。

  3. プロキシエージェントの設定が間違っていると、認証を実行できない。

  4. 当該エントリに shadowAccount オブジェクトクラスが定義されていない。

検索が遅い

LDAP データベースは、インデックスを使用することによって検索パフォーマンスが向上します。インデックスが正しく作成されていない場合、大幅にパフォーマンスが低下することがあります。このマニュアルの第 2 章「サーバーの設定」に、インデックス付けが必要な一連の属性をまとめてあります。また、独自のインデックスを追加して、パフォーマンスの向上を図ることができます。

ldapclient がサーバーにバインドできない

-P プロファイルオプションを使用しているときに、ldapclient がクライアントの初期化に失敗したと考えられます。次のいずれかが原因である可能性があります。

  1. ldap_cachemgr が動作していることを確認する。ps -ef |grep ldap とすれば、確認できます。

  2. ldapclient -l を実行して、LDAP クライアントのキャッシュファイルの内容を検査する。


    注 –

    構成ファイルや資格ファイルは必ずしも ASCII 形式とは限らないので、これらを直接表示しないでください。


  3. 指定されたクライアントドメインのエントリポイントを表す nisDomain 属性が DIT (ディレクトリ情報ツリー) 内に設定されていない。

  4. サーバー上で仮想リスト表示のインデックス付けが正しく行われていない。

  5. サーバー上でアクセス制御情報が正しく設定されていないため、anonymous (匿名) ユーザーが LDAP データベースを検索できない。

  6. ldapclient コマンドに渡されたサーバーアドレスが間違っている。ldapsearch(1) を使用してサーバーのアドレスを確認します。

  7. ldapclient コマンドに渡されたプロファイル名が間違っている。ldapsearch(1) を使用して、DIT 内のプロファイル名を確認します。

  8. クライアントのネットワークインタフェースに対して snoop(1M) を実行して、外向きのトラフィックを検査し、どのサーバーとやり取りしているかを確認します。