1 台か 2 台のクライアントだけで、NIS のバインドに関する問題を示す症状が発生している場合は、そのクライアントに問題があると考えられます。複数のクライアントが正しくバインドできない場合は、1 台以上の NIS サーバーに問題があると考えられます。「複数のクライアントに影響する NIS の問題」を参照してください。
1 台のクライアントに問題があっても、同じサブネット上のほかのクライアントは正常に機能しています。問題のあるクライアント上で、ls -l をたとえば /usr のような、多くのユーザーが所有するファイル (クライアント /etc/passwd ファイルにはないものも含む) を持つディレクトリで実行します。この結果の表示に、ローカルの /etc/passwd には、名前ではなく番号として入ってないファイルの所有者が含まれる場合には、NIS サービスがクライアントで機能していないことを示します。
通常これらの症状は、クライアント ypbind プロセスが実行されていないことを示します。NIS クライアントサービスが実行されているかを確認してください。
client# svcs network/nis/client STATE STIME FMRI disabled Sep_01 svc:/network/nis/client:default |
クライアントが無効である場合、スーパーユーザーとしてログインするか、同等の役割になり、NIS クライアントサービスを開始します。
client# svcadm enable network/nis/client |
あるクライアントに問題があり、ほかのクライアントは正常に機能していますが、ypbind は問題のあるクライアント上で実行されています。クライアントのドメインの設定が間違っている可能性があります。
クライアント上で domainname コマンドを実行して、どのドメイン名が設定されているのかを調べます。
client7# domainname neverland.com |
NIS のマスターサーバー上の /var/yp 内の実際のドメイン名と、出力を比較します。実際の NIS ドメインは、/var/yp ディレクトリ内のサブディレクトリとして表示されます。
Client7# ls /var/yp... -rwxr-xr-x 1 root Makefile drwxr-xr-x 2 root binding drwx------ 2 root doc.com ... |
マシン上での domainname の実行によって得たドメイン名が、/var/yp 内のディレクトリとして示されたサーバードメイン名と同じではない場合には、マシンの /etc/defaultdomain ファイルで指定されたドメイン名が間違っています。スーパーユーザーとしてログインするか、同等の役割になり、マシンの /etc/defaultdomain ファイルでクライアントのドメイン名を修正します。これによって、マシンを起動するたびに、ドメイン名が正しいかどうかが確認されます。ここでマシンをリブートします。
ドメイン名では大文字と小文字を区別します。
ドメイン名が正しく設定されていて ypbind が実行中でもコマンドがまだハングする場合には、ypwhich コマンドを実行してクライアントがサーバーにバインドされていることを確認してください。ypbind を起動したばかりのときは、ypwhich を数回実行します。通常、1 回目ではドメインがバインドされていないことが通知され、2 回目は成功します。
ドメイン名が正しく設定されていて ypbind が実行中のときに、クライアントがサーバーと通信できないというメッセージを受け取った場合には、いくつかの問題が考えられます。
バインドするサーバーのリストを含む /var/yp/binding/domainname/ypservers ファイルがクライアントにあるかどうかを確認します。ない場合には、ypinit -c を実行して、設定の順番にクライアントのバインド先のサーバーを指定します。
クライアントに /var/yp/binding/domainname/ypservers ファイルがあり、1 つ以上のサーバーが使用できない場合には、十分な数のサーバーがあるかどうかを調べます。ない場合には、ypinit -c を実行して、リストにサーバーを追加します。
クライアントの ypservers ファイルにリストされたサーバーが、/etc/hosts ファイルにエントリを持っているかどうかを確認します。持っていない場合には、NIS マップホストの入力ファイルにサーバーを追加して、Working With NIS Mapsで説明しているように、-yppinit c または -ypinit 「NIS マップに関する作業」 を実行してマップを再構築します。
/etc/nsswitch.conf ファイルが設定されていて、NIS の他にマシンのローカルの hosts ファイルを参照できるかどうかを確認します。スイッチについての詳細は、第 2 章ネームサービススイッチ (概要)を参照してください。
/etc/nsswitch.conf ファイルが設定されていて、services と rpc に対して files を参照できるかどうかを確認します。スイッチについての詳細は、第 2 章ネームサービススイッチ (概要)を参照してください。
ypwhich を同じクライアントで数回使うと、NIS サーバーが変わるので結果の表示も変わります。これは正常な状態です。NIS クライアントから NIS サーバーへのバインドは、ネットワークや NIS サーバーを使用中の場合は時間の経過に伴って変化します。ネットワークは、すべてのクライアントが受け入れ可能な応答時間を NIS サーバーから得られる点で安定した状態になります。クライアントのマシンが NIS サービスを得ている限りは、サービスの供給元は問題にはなりません。たとえば、NIS サーバーマシンがそれ自体の NIS サービスを、ネットワーク上の別の NIS サーバーから受けることもあります。
ローカルなサーバーのバインドが不可能な場合には ypset コマンドを使用すると、別のネットワークまたはサブネットの別のサーバーが使用可能な場合には、そのサーバーへのバインドが一時的に可能になります。ただし、-ypset オプションを使用するためには、ypbind を -ypset または -ypsetme オプションのどちらかを指定して、実行する必要があります。詳細は、ypbind(1M) のマニュアルページを参照してください。
# /usr/lib/netsvc/yp/ypbind -ypset |
別の方法については、「特定の NIS サーバーへのバインド」を参照してください。
セキュリティーの目的のために、-ypset と -ypsetme のオプションの使用は、制御された状態でのデバッグだけに限定してください。-ypset と -ypsetme のオプションを使用すると、セキュリティーが侵害される恐れがあります。これらのデーモンの実行中はサーバーのバインドをだれでも変更できるため、ほかのユーザーの作業に問題が生じたり重要なデータへの未承認のアクセスが認められたりするためです。これらのオプションで ypbind を起動する場合には、いったん問題を修正したら ypbind を終了して、これらのオプションを指定しないで再起動してください。
ypbind を再起動するには、サービス管理機能 (SMF) を使用します。
# svcadm enable -r svc:/network/nis/client:default |
ypbind が、起動するたびにすぐにクラッシュする場合には、システムのほかの部分で問題を調べます。次のように入力して、rpcbind デーモンが存在するかどうか確認します。
% ps -e | grep rpcbind |
rpcbind が存在しない、安定しない、あるいは動作に異常がある場合には、RPC のマニュアルを参照してください。
正常に機能しているマシンから、問題のあるクライアント上の rpcbind と通信ができる場合があります。正常に機能しているマシンから、次のように入力してください。
% rpcinfo client |
問題のあるクライアント上の rpcbind に問題がない場合には、rpcinfo によって次のように出力されます。
program version netid address service owner ... 100007 2 udp 0.0.0.0.2.219 ypbind superuser 100007 1 udp 0.0.0.0.2.219 ypbind superuser 100007 1 tcp 0.0.0.0.2.220 ypbind superuser 100007 2 tcp 0.0.0.0.128.4 ypbind superuser 100007 2 ticotsord \000\000\020H ypbind superuser 100007 2 ticots \000\000\020K ypbind superuser ... |
使用中のマシンには異なる複数のアドレスがあります。それらのアドレスが表示されない場合は、ypbind によってそのサービスが登録できていません。マシンをリブートして再度 rpcinfo を実行します。ypbind プロセスがあり、NIS サービスを再起動するたびに変更される場合は、rpcbind デーモンが実行中であってもシステムをリブートしてください。