Oracle® Solaris 11.2 ディレクトリサービスとネームサービスでの作業: LDAP

印刷ビューの終了

更新: 2014 年 7 月
 
 

NIS から LDAP への移行に関する問題

N2L サーバーの実行中に、次の問題が発生する場合があります。考えられる原因と対策を説明します。

NISLDAPmapping ファイルのデバッグ

マッピングファイル NISLDAPmapping は複雑なファイルです。多くの潜在的なエラーによって、マッピングが予期しない動作をする場合があります。次の方法を用いて、この問題を解決してください。

ypserv -ir (または –Ir) を実行するとコンソールメッセージが表示される

説明: コンソールに簡単なメッセージが表示され、サーバーが終了します (詳細な説明は syslog に書き込まれます)。

Cause: マッピングファイルの構文が正しくない可能性があります。

解決策: NISLDAPmapping ファイル内の構文をチェックして修正します。

起動時に NIS デーモンが終了する

説明: ypserv またはその他の NIS デーモンを実行すると、LDAP 関連のエラーメッセージがログに記録され、デーモンが終了します。

Cause: 次のいずれかの原因が考えられます。

  • LDAP サーバーと通信できない

  • NIS マップまたは DIT 内のエントリが、指定されたマッピングと互換性がない

  • LDAP サーバーへの読み書きの試みがエラーを返す

解決策: LDAP サーバー上のエラーログを調べます。よくある LDAP エラーメッセージで LDAP エラーの説明を参照してください。

NIS 動作からの予期しない結果

説明: NIS 操作が予期された結果を返しませんが、ログにエラーは記録されていません。

Cause: LDAP または NIS マップ内に正しくないエントリが存在する可能性があります。これにより、マッピングが意図したように完了しません。

解決策: LDAP DIT および N2L バージョンの NIS マップ内のエントリをチェックして修正します。

  1. LDAP DIT に正しいエントリが存在するかをチェックしてから、必要に応じてエントリを修正します。

    Oracle Directory Server Enterprise Edition を使用している場合は、dsadm startconsole コマンドを実行して管理コンソールを起動します。

  2. 新しく生成されたマップを元のマップと比較することによって、/var/yp ディレクトリ内の N2L バージョンの NIS マップに予期されたエントリが含まれていることを確認します。必要に応じてエントリを修正します。

    # cd /var/yp/domainname
    # makedbm -u test.byname
    # makedbm -u test.byname

    マップの出力をチェックする場合は、次のことに注意してください。

    • 両方のファイルでのエントリの順序が異なる可能性

      出力を比較する前に、sort コマンドを使用します。

    • 両方のファイルでの空白の使い方が異なる可能性

      出力を比較するときは diff -b コマンドを使用します。

NIS マップの処理順序

説明: オブジェクトクラス違反が発生しました。

Cause: ypserv -i コマンドを実行すると、各 NIS マップが読み取られ、その内容が DIT に書き込まれます。複数のマップが、同一の DIT オブジェクトに属性を提供する場合もあります。通常、オブジェクトは、1 つのマップによってそのオブジェクトの MUST 属性のすべてを含む大部分を生成されます。ほかのマップは、ほかの MAY 属性を提供します。マップは、NISLDAPmapping ファイルに定義されている nisLDAPobjectDN 属性と同じ順序で処理されます。MAY 属性を含むマップが MUST 属性を含むマップより先に処理されると、オブジェクトクラス違反が発生します。このエラーについての詳細は、よくある LDAP エラーメッセージのエラー 65 を参照してください。

解決策: マップが正しい順序で処理されるように、nisLDAPobjectDN 属性の順序を変更します。一時的な解決として、ypserv -i コマンドを何回か再実行します。コマンドが実行されるたびに、LDAP エントリは完全な状態になります。


注 - 1 つのマップからオブジェクトのすべての MUST 属性を作成できないマッピングはサポートされていません。

N2L サーバーのタイムアウトの問題

サーバーがタイムアウトします。

Cause: N2L サーバーがマップをリフレッシュした結果、大規模な LDAP ディレクトリの 1 回のアクセスが行われる場合があります。Oracle Directory Server Enterprise Edition が正しく構成されていない場合、この動作は完了前にタイムアウトになることがあります。

解決策: ディレクトリサーバーのタイムアウトを回避するには、Oracle Directory Server Enterprise Edition 属性を手動で、または idsconfig コマンドを実行することで変更します。詳細は、よくある LDAP エラーメッセージおよび Oracle Directory Server Enterprise Edition での NIS から LDAP への移行のベストプラクティスを参照してください。

N2L のロックファイルの問題

ypserv コマンドは起動しますが、NIS リクエストに対して応答しません。

Cause: N2L サーバーのロックファイルが、NIS マップへのアクセスを正しく同期していません。このような状況が発生してはなりません。

解決策: N2L サーバーで次のコマンドを入力して、アクションを記述します。

# svcadm disable network/nis/server:default
# rm /var/run/yp_maplock /var/run/yp_mapupdate
# svcadm enable network/nis/server:default

N2L のデッドロックの問題

N2L サーバーがデッドロックします。

Cause: N2L マスターサーバーと LDAP サーバーのアドレスが hostsipnodes、または ypserv ファイル内に正しくリストされていないと、デッドロックが発生する可能性があります。N2L の正しいアドレス構成についての詳細は、NIS から LDAP への移行のための前提条件を参照してください。

    デッドロックの発生する例として、次の一連の事柄を考えてみてください。

  1. NIS クライアントが IP アドレスの検索を試みます。

  2. N2L サーバーが、hosts エントリは最新ではないことを検出します。

  3. N2L サーバーが LDAP からの hosts エントリの更新を試みます。

  4. N2L サーバーは、その LDAP サーバーの名前を ypserv から取得したあと、libldap を使用して検索を実行します。

  5. libldap は、ネームサービススイッチを呼び出して、LDAP サーバー名の IP アドレスへの変換を試みます。

  6. ネームサービススイッチの設定に基づき、N2L サーバーへの NIS 呼び出しを行い、デッドロックが発生します。

解決策: N2L マスターサーバーと LDAP サーバーのアドレスを N2L マスターサーバー上の hosts または ipnodes ファイル内にリストします。hosts ファイルおよび ipnodes ファイルがローカルホスト名を解決するためにどのようにして構成されているかに応じて、サーバーアドレスは、各ファイルに、またはその両方にリストされなければなりません。また、svc:/network/name-service/switch サービスの config/hosts プロパティーの検索順序で、filesnis の前に指定されていることも確認してください。 このデッドロックの問題に対する別の解決方法として、ypserv ファイル内にホスト名ではなく、LDAP サーバーアドレスをリストする方法があります。LDAP サーバーのアドレスが別の場所にもリストされているため、LDAP サーバーと N2L サーバーのどちらかのアドレスを変更するには、さらに少し作業が必要となります。