Go to main content
Oracle® Solaris 11.3 ディレクトリサービスとネームサービスでの作業: LDAP

印刷ビューの終了

更新: 2016 年 11 月
 
 

NIS から LDAP への移行のトラブルシューティング

このセクションでは、次の分野のトラブルシューティングについて説明します。

よくある LDAP エラーメッセージ

N2L サーバーは、LDAP 内部の問題に関連するエラーをログに記録し、LDAP 関連のエラーメッセージを表示する場合があります。エラーは致命的なものではありませんが、問題を調査する必要があることを示しています。N2L サーバーは動作を継続していても、返される結果が古かったり、不完全な場合があります。

このセクションでは、N2L サービスを実装するときに発生する可能性のある、よくある LDAP エラーメッセージをいくつか示します。エラーの説明、エラーの考えられる原因と解決方法も含みます。

Administrative limit exceeded

エラー番号: 11

Cause: LDAP 検索が、ディレクトリサーバーの nsslapd-sizelimit 属性で許可されている限度を超えました。検索で返される情報は不完全です。

解決策: nsslapd-sizelimit 属性の値を増やすか、または失敗した検索のための VLV インデックスを実装します。

Invalid DN Syntax

エラー番号: 34

Cause: 不正な文字を含む DN で LDAP エントリを書き込もうとする試みが行われました。N2L サーバーは、DN 内で生成される + 記号などの不正な文字のエスケープを試みます。

解決策: LDAP サーバーのエラーログをチェックして、どの不正な DN が書き込まれたかを見つけ、不正な DN を生成した NISLDAPmapping ファイルを変更します。

Object class violation

エラー番号: 65

Cause: 無効な LDAP エントリを書き込もうとする試みが行われました。一般に、このエラーは、次のいずれかの状況で起こる可能性のある MUST 属性の欠落のために発生します。

  • 見つからない属性のエントリを作成する NISLDAPmapping ファイルのバグ

  • 存在しないオブジェクトへの AUXILIARY 属性の追加の試み

    たとえば、ユーザー名がまだ passwd.byxxx マップから作成されていない場合、そのユーザーに対する補足情報の追加の試みは失敗します。

解決策: NISLDAPmapping ファイル内のバグについて、サーバーエラーログ内の情報を調べ、問題の性質を判断します。

Can't contact LDAP server

エラー番号: 81

Cause: ypserv ファイルが、間違った LDAP ディレクトリサーバーを指し示すように誤って構成されている可能性があります。または、ディレクトリサーバーが稼働していません。

解決策: 次のアクションを実行して問題を解決します。

  • ypserv ファイルを再構成して、正しい LDAP ディレクトリサーバーを指定します。

  • 次のコマンドを入力して、LDAP サーバーが実行していることを確認します。

    % ping hostname 5 | grep "no answer" || \
             (ldapsearch -h hostname -s base -b ""  \
             "objectclass=*" >/dev/null && echo Directory accessible)

    サーバーが使用できない場合は、次のメッセージが表示されます。

    no answer from hostname

    LDAP サーバーに問題がある場合は、次のメッセージが表示されます。

    ldap_search: Can't connect to the LDAP server - Connection refused

    すべて正常に機能している場合は、次のメッセージが表示されます。

    Directory accessible

Timeout

エラー番号: 85

Cause: DIT からのマップの更新中に、LDAP 操作がタイムアウトしました。古い情報がマップに含まれている可能性があります。

解決策: ypserv 構成ファイル内の nisLDAPxxxTimeout 属性の値を増やします。

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/domain-name
    # makedbm -u test.byname

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

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

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

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

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

NIS マップの処理順序

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

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

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


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

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

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

Cause: N2L サーバーがマップをリフレッシュすると、その結果、大きな LDAP ディレクトリへの単一の長いアクセスが必要になることがあります。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 サーバー上で次のコマンドを入力します。

  1. NIS サーバーを停止します。

    # svcadm disable network/nis/server:default
  2. ロックファイルを削除します。

    # rm /var/run/yp_maplock /var/run/yp_mapupdate
  3. NIS サーバーを再起動します。

    # 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 サーバーのどちらかのアドレスを変更するには、さらに少し作業が必要となります。