ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 でのネームサービスおよびディレクトリサービスの作業 Oracle Solaris 11.1 Information Library (日本語) |
4. Oracle Solaris Active Directory クライアントの設定 (タスク)
11. LDAP クライアントと Oracle Directory Server Enterprise Edition の設定 (タスク)
13. LDAP のトラブルシューティング (リファレンス)
NIS から LDAP への移行サービスがユーザーに与える影響
NIS から LDAP への移行コマンド、ファイル、およびマップ
カスタムマッピングまたは非標準マッピングを使用して N2L サービスを設定する方法
Oracle Directory Server Enterprise Edition を使用した NIS から LDAP への移行の最良の実践原則
Oracle Directory Server Enterprise Edition を使用した仮想リスト表示インデックスの作成
Oracle Directory Server Enterprise Edition によるサーバーのタイムアウトの防止
Oracle Directory Server Enterprise Edition 使用時のバッファーオーバーランの防止
このセクションでは、トラブルシューティングの 2 つの領域を説明します。
N2L サーバーが LDAP 内部の問題に関連するエラーをログに記録して、LDAP 関連のエラーメッセージが表示される場合があります。エラーは致命的なものではありませんが、調査すべき問題を示しています。たとえば、N2L サーバーは動作を継続していても、返される結果が古かったり、不完全になる場合があります。
次のリストに、N2L サービスを実装するときに発生する可能性のある、よくある LDAP エラーメッセージをいくつか示します。エラーの説明、考えられる原因、およびエラーの対策も含みます。
Administrative limit exceeded
エラー番号: 11
原因: ディレクトリサーバーの nsslapd-sizelimit 属性で許可されているものより大きな LDAP 検索が実行されました。情報の一部だけが返されます。
対処方法: nsslapd-sizelimit 属性の値を増やすか、または失敗した検索のための VLV インデックスを実装します。
Invalid DN Syntax
エラー番号: 34
原因: 不正な文字を含む DN で LDAP エントリを書き込もうとする試みが行われました。N2L サーバーは、DN 内で生成される + 記号などの不正な文字のエスケープを試みます。
対処方法: LDAP サーバーのエラーログをチェックして、どの不正な DN が書き込まれたかを見つけたあと、不正な DN を生成した NISLDAPmapping ファイルを変更します。
Object class violation
エラー番号: 65
原因: 無効な LDAP エントリを書き込もうとする試みが行われました。一般に、このエラーは、次のいずれかの状況で起こる可能性のある MUST 属性の欠落のために発生します。
見つからない属性のエントリを作成する NISLDAPmapping ファイルのバグ
存在しないオブジェクトへの AUXILIARY 属性の追加の試み
たとえば、ユーザー名がまだ passwd.byxxx マップから作成されていない場合、そのユーザーに対する補足情報の追加の試みは失敗します。
対処方法: NISLDAPmapping ファイル内のバグの場合は、サーバーのエラーログに書き込まれた内容をチェックして問題の本質を特定します。
Can't contact LDAP server
エラー番号: 81
原因: 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
原因: LDAP 操作がタイムアウトしました。通常は、DIT からのマップの更新中に発生します。古い情報がマップに含まれている可能性があります。
対処方法: ypserv 構成ファイル内の nisLDAPxxxTimeout 属性の値を増やします。
N2L サーバーの実行中に、次の問題が発生する場合があります。考えられる原因と対策を説明します。
マッピングファイル NISLDAPmapping は複雑なファイルです。多くの潜在的なエラーによって、マッピングが予期しない動作をする場合があります。次の方法を用いて、この問題を解決してください。
ypserv -ir (または -Ir) を実行するとコンソールメッセージが表示される
説明: コンソールに簡単なメッセージが表示され、サーバーが終了します (詳細な説明は syslog に書き込まれます)。
原因: マッピングファイルの構文が正しくない可能性があります。
対処方法: NISLDAPmapping ファイル内の構文をチェックして修正します。
起動時に NIS デーモンが終了する
説明: ypserv またはその他の NIS デーモンを実行すると、LDAP 関連のエラーメッセージがログに記録され、デーモンが終了します。
原因: 次のいずれかの原因が考えられます。
LDAP サーバーと通信できない
NIS マップまたは DIT 内のエントリが、指定されたマッピングと互換性がない
LDAP サーバーへの読み書きの試みがエラーを返す
対処方法: LDAP サーバー上のエラーログを調べます。「よくある LDAP エラーメッセージ」にリストされた LDAP エラーを参照してください。
NIS 動作からの予期しない結果
説明: NIS 操作が予期された結果を返しませんが、ログにエラーは記録されていません。
原因: LDAP または NIS マップ内に正しくないエントリが存在する可能性があります。これにより、マッピングが意図したように完了しません。
対処方法: LDAP DIT および N2L バージョンの NIS マップ内のエントリをチェックして修正します。
LDAP DIT に正しいエントリが存在するかをチェックしてから、必要に応じてエントリを修正します。
Oracle Directory Server Enterprise Edition を使用している場合は、dsadm startconsole コマンドを実行することによって管理コンソールを起動します。
新しく生成されたマップを元のマップと比較することによって、/var/yp ディレクトリ内の N2L バージョンの NIS マップに予期されたエントリが含まれていることを確認します。必要に応じてエントリを修正します。
# cd /var/yp/domainname # makedbm -u test.byname # makedbm -u test.byname
マップの出力をチェックする場合は、次のことに注意してください。
両方のファイルでのエントリの順序が異なる可能性
出力を比較する前に、sort コマンドを使用します。
両方のファイルでの空白の使い方が異なる可能性
出力を比較するときは diff -b コマンドを使用します。
NIS マップの処理順序
説明: オブジェクトクラス違反が発生しました。
原因: ypserv -i コマンドを実行すると、各 NIS マップが読み取られ、その内容が DIT に書き込まれます。複数のマップが、同一の DIT オブジェクトに属性を提供する場合もあります。一般に、1 つのマップによって、すべてのオブジェクトの MUST 属性を含むほとんどのオブジェクトが作成されます。ほかのマップは、ほかの MAY 属性を提供します。
マップは、NISLDAPmapping ファイル内で nisLDAPobjectDN 属性が現れるのと同じ順序で処理されます。MAY 属性を含むマップが MUST 属性を含むマップより先に処理されると、オブジェクトクラス違反が発生します。このエラーについての詳細は、「よくある LDAP エラーメッセージ」のエラー 65 を参照してください。
対処方法: マップが正しい順序で処理されるように、nisLDAPobjectDN 属性の順序を変更します。
一時的な解決として、ypserv -i コマンドを何回か再実行します。コマンドを実行するたびに、より多くの LDAP エントリが作られます。
注 - 1 つのマップからオブジェクトのすべての MUST 属性を作成できないマッピングはサポートされていません。
サーバーがタイムアウトします。
原因: N2L サーバーがマップをリフレッシュすると、その結果、大規模な LDAP ディレクトリアクセスが行われる場合があります。Oracle Directory Server Enterprise Edition が正しく構成されていない場合、この動作は完了前にタイムアウトになることがあります。
対処方法: ディレクトリサーバーのタイムアウトを防止するには、Oracle Directory Server Enterprise Edition 属性を手動で、または idsconfig コマンドを実行することによって変更します。詳細は、「よくある LDAP エラーメッセージ」および 「Oracle Directory Server Enterprise Edition を使用した NIS から LDAP への移行の最良の実践原則」を参照してください。
ypserv コマンドは起動しますが、NIS リクエストに対して応答しません。
原因: 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 マスターサーバーと LDAP サーバーのアドレスが hosts、ipnodes、または ypserv ファイル内に正しくリストされていないと、デッドロックが発生する可能性があります。N2L の正しいアドレス構成についての詳細は、「NIS から LDAP への移行のための前提条件」を参照してください。
デッドロックの発生する例として、次の一連の事柄を考えてみてください。
NIS クライアントが IP アドレスの検索を試みます。
N2L サーバーが、hosts エントリは最新ではないことを検出します。
N2L サーバーが LDAP からの hosts エントリの更新を試みます。
N2L サーバーは、その LDAP サーバーの名前を ypserv から取得したあと、libldap を使用して検索を実行します。
libldap は、ネームサービススイッチを呼び出して、LDAP サーバー名の IP アドレスへの変換を試みます。
ネームサービススイッチの設定に基づき、N2L サーバーへの NIS 呼び出しを行い、デッドロックが発生します。
対処方法: N2L マスターサーバーと LDAP サーバーのアドレスを N2L マスターサーバー上の hosts または ipnodes ファイル内にリストします。サーバーアドレスを hosts、ipnodes、またはこの両方のファイル内にリストする必要があるかどうかは、これらのファイルがローカルホスト名を解決するためにどのように構成されているかによって異なります。また、svc:/network/name-service/switch サービスの config/hosts プロパティーの検索順序で、files が nis の前に指定されていることも確認してください。
このデッドロックの問題に対する別の方法として、ypserv ファイル内にホスト名ではなく、LDAP サーバーアドレスをリストする方法があります。これは、LDAP サーバーアドレスが別の場所に記述されていることを意味しています。したがって、LDAP サーバーと N2L サーバーのどちらかでアドレスを変更する場合には、さらに少し作業が必要になります。