N2L サーバーの実行中に、次の問題が発生する場合があります。考えられる原因と対策を説明します。
マッピングファイル NISLDAPmapping は複雑なファイルです。多くの潜在的なエラーによって、マッピングが予期しない動作をする場合があります。次の方法を用いて、この問題を解決してください。
ypserv -ir (または -Ir) を実行したときのコンソールメッセージの表示
問題 : コンソールに簡単なメッセージが表示され、サーバーが終了します (詳細な説明は、syslog に書き込まれます)。
原因 : マッピングファイルの構文が間違っている場合があります。
対策 : NISLDAPmapping ファイルの構文をチェックして修正します。
起動時に NIS デーモンが終了する
問題 : ypserv またはその他の NIS デーモンを実行すると、LDAP 関連のエラーメッセージがログに記録され、デーモンが終了します。
原因 : 原因は次のいずれかが考えられます。
LDAP サーバーと通信できない
NIS マップまたは DIT 内のエントリが、指定されたマッピングと互換性がない
LDAP サーバーへの読み書きの試みがエラーを返す
対策 : LDAP サーバーのエラーログを調査します。「よくある LDAP エラーメッセージ」にリストされた LDAP エラーを参照してください。
NIS 動作からの予期しない結果
問題 : NIS 動作が予期した結果を返さず、エラーはログに記録されません。
原因 : 間違ったエントリが LDAP または NIS マップに存在する場合があります。この結果、マッピングが期待したとおりに完了しません。
対策 : LDAP DIT と NIS マップの N2L バージョンのエントリをチェックして、修正します。
LDAP DIT に正しいエントリが存在するかをチェックしてから、必要に応じてエントリを修正します。
Sun Java System Directory Server を使用している場合は、directoryserver startconsole を実行して管理コンソールを起動します。
新しく生成されたマップと元のマップを比較して、/var/yp ディレクトリの N2L バージョンの NIS マップに期待どおりのエントリが含まれていることをチェックします。必要に応じてエントリを修正します。
# cd /var/yp/domainname # makedbm -u test.byname # makedbm -u LDAP_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 ディレクトリアクセスが行われる場合があります。Sun Java System Directory Server が正しく構成されていない場合、この動作は完了前にタイムアウトになることがあります。
対策: ディレクトリサーバーのタイムアウトを防止するには、Sun Java System Directory Server の属性を手動で修正するか、idsconfig コマンドを実行します。詳細は、「よくある LDAP エラーメッセージ」と「Sun Java System Directory Server を使用した NIS から LDAP への移行の最良の実践原則」を参照してください。
問題 : ypserv コマンドは起動しますが、NIS リクエストに応答しません。
原因 : N2L サーバーのロックファイルが、NIS マップへのアクセスと正しく同期していません。このような状況が発生してはなりません。
# 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 サーバーは、ypserv から LDAP サーバーの名前を取得してから、libldap を使用して検索を実行します。
libldap は、ネームサービススイッチを呼び出して、LDAP サーバー名の IP アドレスへの変換を試みます。
ネームサービススイッチの設定に基づき、N2L サーバーへの NIS 呼び出しを行い、デッドロックが発生します。
対策 : N2L マスターサーバー上の hosts ファイルまたは ipnodes ファイルに N2L マスターサーバーと LDAP サーバーのアドレスをリストします。hosts ファイルおよび ipnodes ファイルがローカルホスト名を解決するためにどのようにして構成されているかに応じて、サーバーアドレスは、各ファイルに、またはその両方にリストされなければなりません。また、nsswitch.conf ファイルの hosts および ipnodes エントリで、検索順序として nis の前に files をリストしていることをチェックしてください。
別の方法として、このデッドロックに対して、ypserv ファイルでホスト名ではなく LDAP サーバーアドレスを記述する方法もあります。これは、LDAP サーバーアドレスが別の場所に記述されていることを意味しています。したがって、LDAP サーバーと N2L サーバーのどちらかでアドレスを変更する場合には、さらに少し作業が必要になります。