Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)

パート I ネームサービスとディレクトリサービスについて

ここでは、Solaris オペレーティング環境用のネームサービスとディレクトリサービスついて概要を説明します。また、異なるサービスと組み合わせて使用する際に利用する nsswitch.conf ファイルについても説明します。

第 1 章 ネームサービスとディレクトリサービス (概要)

この章では、名前空間とネームサービスの概要および機能について説明します。また、Solaris のネームサービスであるDNS 、NIS 、NIS+、および LDAP ネームサービスについても 簡潔に説明します。NIS+ および FNS の詳細については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』を参照してください。

ネームサービスとは

「ネームサービス」は、ユーザー、マシン、およびアプリケーションがネットワーク経由で通信するための情報を集中管理することを可能にします。格納される情報には、以下が含まれます。

集中化されたネームサービスが存在しない場合、マシンごとに、これらの情報のコピーを管理する必要があります。ネームサービス情報はファイルまたはマップ、データベーステーブルの形で格納できます。これらのデータを 1 カ所で管理すれば、大規模なネットワークの管理がより簡単になります。

ネームサービスは、どのようなコンピュータネットワークにも欠かせないものです。ネームサービスは、他の機能に加え、次の機能を提供します。

ネットワーク情報サービスを使用すると、数値アドレスの代わりに一般的な名前でマシンを識別できます。これにより、ユーザーは 192.168.00.00 のような扱いにくい数値アドレスを記憶して入力する必要がなくなるため、通信がより簡単になります。

たとえば、pineelmoak という 3 台のマシンで構成されるネットワークを考えてみましょう。pineelm または oak にメッセージを送信するには、それら 2 台のネットワークアドレスを知る必要があります。そのため pine は、自分自身を含めたネットワーク内のすべてのマシンのネットワークアドレスを格納する /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを保持しています。

この図は、pine、elm、および oak マシンと、pine 上に登録されているそれぞれの IPアドレスを示しています。

同様に、elmoakpine と通信したり、お互いに通信するためには、上記のようなファイルを保持している必要があります。

この図は、ネットワーク上に存在するマシンの全 IP アドレスを /etc/hosts ファイルに記録しているマシンを示しています。

マシンは、アドレスに加え、セキュリティ情報、メールデータ、Ethernet インタフェースについての情報、ネットワークサービスについての情報、ネットワークの使用を許可されたユーザーグループについての情報、ネットワーク上で提供されるサービスについての情報なども格納します。ネットワークによって提供されるサービスが増えるにつれて、格納する情報の種類も増えていきます。その結果、各マシンで /etc/hosts/etc/inet/ipnodes のようなファイルのセット全部を保持する必要がでてくる可能性があります。

この情報が変更されるたびに、管理者はネットワーク内の各マシン上の情報を最新のものにしなければなりません。小規模なネットワークでは、これは時間のかかる面倒な作業です。中規模または大規模なネットワークでは、これは時間がかかるだけではなく、ほとんど管理不可能な作業となります。

ネットワーク情報サービスがこの問題を解決します。ネットワーク情報サービスは、サーバー上にネットワーク情報を格納し、このサーバーが照会を実行するマシンに情報を提供します。

照会を実行するマシンは、サーバーの「クライアント」と呼ばれます。次の図に、クライアントとサーバーの関係を示します。ネットワークについての情報が変更されるたびに、各クライアントのローカルファイルを変更する代わりに、管理者はネットワーク情報サービスが格納する情報だけを更新します。これによって、エラー、クライアント間の不一致、そして作業量を減らすことができます。

この図は、クライアント/サーバーコンピューティングの関係にあるサーバーとクライアントを示しています。

このように、サーバーがネットワークを通してサービスをまとめてクライアントに提供する方法を「クライアントサーバーコンピューティング」と呼びます。

ネットワーク情報サービスの第一の目的は情報の一元管理ですが、もう 1 つの目的はネットワーク名の簡素化です。たとえば、ある会社がネットワークを設定して、インターネットに接続したと仮定します。インターネットはその会社に 192.68.0.0 というネットワーク番号と、doc.com というドメインネームを割り当てました。会社には「営業 (Sales)」と「製造 (Manf)」という 2 つの部門があるため、このネットワークは 1 つのメインネットと、各部門に 1 つずつ、合計 2 つのサブネットに分割されます。各ネットには独自のアドレスがあります。

この図は、doc.com と 2 つのサブネットの IP アドレスを示しています。

上に示すように、各部はネットワークアドレスで識別することもできますが、ネームサービスによって使用可能となる説明的な名前の方が便利です。

この図は、doc.com と 2 つのサブネットを示し、各サブネットを説明的な名前で指定しています。

メールやその他のネットワーク通信の送信先を 129.44.1.0 というアドレスで指定する代わりに、単に doc と指定できます。また、192.68.2.0192.68.3.0 と指定する代わりに、sales.docmanf.doc と指定できます。

名前はまた、物理アドレスよりもはるかに柔軟です。物理的なネットワークはめったに変更されませんが、ネットワークを使用する組織はよく変化します。ネットワーク情報サービスは、組織と物理ネットワーク間のバッファーとして機能します。これは、ネットワーク情報サービスが物理的ネットワークに実際に接続されているのではなく、対応づけられているためです。

次の例でこれを説明します。この doc.com ネットワークが、S1、S2、S3 の 3 台のサーバーによってサポートされ、これらのうち 2 台のサーバー (S1 と S3) がクライアントをサポートしていると仮定します。

この図は、doc.com ドメインに 3 台のサーバーが存在し、そのうちの 2 台がそれぞれ 3 台のクライアントをサポートしている状況を示しています。

クライアント C1、C2、C3 はネットワーク情報をサーバー S1 から入手します。クライアント C4、C5、C6 はこれをサーバー S3 から入手します。結果として構成されるネットワークの概要を、次の表に示します(表は、前記のネットワークを一般化して表現したもので、実際のネットワーク情報マップとは異なります)。

表 1–1 doc.com ネットワークの構成

ネットワークアドレス 

ネットワーク名 

サーバ 

クライアント 

192.68.1.0 

doc 

S1 

 

192.68.2.0 

sales.doc 

S2 

C1、C2、C3 

192.68.3.0 

manf.doc 

S3 

C4、C5、C6 

2 つの部門からある人数の人材を借りて第 3 の部門 Test を新設し、第 3 のサブネットは開設しなかったとします。その結果、物理ネットワークは、企業の組織とは対応しなくなります。

この図は、第 3 のサブネットを追加することなく第 3 の部門 Test を追加する場合を示しています。

Test 部門のトラフィックには専用のサブネットがなく、192.68.2.0192.68.3.0 に分割されます。ここで、ネットワーク情報サービスを使用することにより、Test 部門のトラフィックにも専用のネットワークを備えることができます。

この図は、専用のネットワークを持つ Test 部門を示しています。

このように、組織が変更された場合、そのネットワーク情報サービスでは以下に示すようにマッピングを変更できます。

この図は、ネットワークのマッピングを変更して一部のクライアントをサーバー間で移動させた状況を示しています。

この変更の結果、クライアント C1 と C2 はサーバー S2 から、C3、C4、C5 はサーバー S3 から情報を入手するようになります。

各組織で行われる変更に対しては、ハードウェアのネットワーク構造を再編成することなく、「ソフト」ウェアのネットワーク情報構造を変更することにより対応できます。

Solaris のネームサービス

Solaris オペレーティング環境は、以下のネームサービスを提供します。

最近のほとんどのネットワークでは、これらのサービスを 2 つ、またはそれ以上組み合わせて使用します。複数のサービスを使用するときは、nsswitch.conf ファイルで調整します。nsswitch.conf ファイルについては第 2 章「ネームサービススイッチ (概要)」で説明します。

DNS

DNS は TCP/IP ネットワーク用にインターネットが提供するネームサービスです。ネットワーク上のマシンがインターネットアドレスではなく、普通の名前で識別できるように開発されたものです。DNS は、ローカルの管理ドメイン内と、複数の管理ドメインの間でホスト名の管理を行います。

DNS を使用する、ネットワークに接続されたマシンの集合のことを「DNS 名前空間」と呼びます。DNS 名前空間は階層になった複数の「ドメイン」に分けることができます。DNS ドメインは、複数のマシンからなるグループです。各ドメインは複数の「ネームサーバー」、つまり、1 つの主サーバーと 1 つまたは複数の副サーバーよってサポートされます。各サーバーは in.named と呼ばれるデーモンを実行することによって DNS を実装しています。クライアント側は、「リゾルバ」によって DNS を実装します。リゾルバの機能は、ユーザーによる参照を解決することです。リゾルバがネームサーバーに照会すると、ネームサーバーは要求された情報か、または他のサーバーに照会する旨を返します。

/etc ファイル

ホストを基本とした初期の UNIX のネームシステムは、スタンドアロンの UNIX マシン用に開発された後、ネットワークで使用されるようになりました。UNIX オペレーティングシステムの旧版の多くや UNIX マシンでは、現在でもこのシステムが使用されていますが、大規模で複雑なネットワークにはあまり適切ではありません。

NIS

ネットワーク情報サービス (NIS) は DNS とは独立して開発され、目的はやや異なっています。DNS が数値 IP アドレスの代わりにマシン名を使うことによって、通信を簡略化することに焦点を当てているのに対して、NIS は、多様なネットワーク情報を集中管理することによりネットワーク管理機能を高めることに焦点を当てています。NIS には、マシンの名前とアドレス、ユーザー、ネットワークそのもの、ネットワークサービスについての情報も格納されます。このようなネットワーク情報の集合体を、「NIS 名前空間」と呼びます。

NIS 名前空間情報は NIS マップに格納されています。NIS マップは、UNIX の /etc ファイルおよび他の構成ファイルを置換するように設計されているので、名前およびアドレスよりはるかに多くの情報を保存できます。その結果、NIS 名前空間には非常に大きなマップの集合が含まれることになります。詳細については、NIS マップに関する作業を参照してください。

NIS は DNS に似たクライアントサーバーの配列を持っています。複製された NIS サーバーは NIS クライアントへサービスを提供します。主サーバーは「マスター」サーバーと呼ばれ、信頼性を保証するためにバックアップつまり「スレーブ」サーバーを持っています。どちらのサーバーも NIS 情報検索ソフトウェアを使用し、NIS マップを格納します。NIS アーキテクチャおよび NIS の管理方法の詳細については、第 8 章「NIS サービスの設定と構成」および第 9 章「NIS の管理 (手順)」を参照してください。

NIS+

ネットワーク情報サービスプラス (NIS+) は、NIS によく似たネットワークネームサービスですが、より多くの機能を備えています。NIS+ は、NIS の拡張機能ではなく、異なるソフトウェアプログラムです。

NIS+ ネームサービスは、ほとんどすべてのネットワーク構成に対して、インストールを実行する組織の形態に適合するように設計されています。NIS とは異なり、NIS+ の名前空間は動的な構成で、正規ユーザーであればいつでも更新できます。

NIS+ はマシンのアドレス、セキュリティ情報、メール情報、Ethernet インタフェース、ネットワークサービスなどの情報を 1 カ所に格納して、ネットワーク上のすべてのマシンからアクセスできるようにします。このように構成されたネットワーク情報を、NIS+「名前空間」と呼びます。

NIS+ 名前空間は階層構造となっていて、UNIX のディレクトリファイルシステムによく似ています。階層構造になっていることから、NIS+ 名前空間を企業組織の階層に合わせて構成できます。名前空間における情報の配置は、物理的な配置とは関係ありません。したがって、NIS+ 名前空間は、独立して管理できる複数のドメインに分割できます。クライアントは、適切なアクセス権があれば、自分のドメインだけではなくほかのドメインの情報にもアクセスできます。

NIS+ では、NIS+ 名前空間への情報の保存やその情報へのアクセスにクライアントサーバーモデルを使用します。各ドメインは複数のサーバーによってサポートされます。メインのサーバーは「主」サーバーと呼ばれ、バックアップサーバーは「副」サーバーと呼ばれます。ネットワーク情報は、NIS+ 内部のデータベースにある 16 個の標準 NIS+ テーブルに格納されます。主サーバーと副サーバーの両方で NIS+ サーバーソフトウェアが動作しており、NIS+ テーブルのコピーを管理しています。マスターサーバー上の NIS+ データの変更は、副サーバーにも自動的に伝達されます。

NIS+ では高機能のセキュリティシステムによって、名前空間の構造と保存されている情報が保護されます。このシステムは、情報にアクセスしようとしているクライアントが正当なものであるかどうかを認証と承認によって確認します。「認証」とは、情報の要求者がネットワークの正当なユーザーであるかどうかを判定することです。「承認」では、特定のユーザーが情報を所有したり修正したりできるかどうかを確認します。NIS+ のセキュリティおよびその管理方法の詳細については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』を参照してください。

NIS+ から LDAP への移行の詳細については、 第 19 章「NIS+ から LDAP への移行」を参照してください。

FNS

FNS の詳細については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』 を参照してください。

LDAP ネームサービス

Solaris 9 は、Sun ONETM Directory Server 5.1 および他の LDAP Directory Server を使用する場合、LDAP (Lightweight Directory Access Protocol) をサポートします。

詳細については、第 12 章「LDAP ネームサービスの紹介 (概要/リファレンス)」を参照してください。

ネームサービスの比較一覧

 

DNS 

NIS 

NIS+ 

FNS 

LDAP 

名前空間 

階層 

フラット 

階層 

階層 

階層 

データ記憶領域 

ファイル/リソースレコード 

2 列のマップ 

複数列のテーブル 

マップ 

ディレクトリ (可変) 

サーバー名 

マスター/スレーブ 

マスター/スレーブ 

ルートマスター/非ルートマスター 主/副 キャッシュ/スタブ 

なし 

マスター/複製 

セキュリティ 

SSL 

なし (root またはなし) 

DES 認証 

なし (root または、なし) 

SSL 

トランスポート 

TCP/IP 

LAN 

LAN 

LAN 

TCP/IP 

スケール 

グローバル 

LAN 

LAN 

グローバル (DNS 付)/LAN 

グローバル 

第 2 章 ネームサービススイッチ (概要)

この章では、ネームサービススイッチ、その機能、およびこのスイッチを使用してクライアントが 1 つまたは複数のソースからネーミング情報を入手する方法について説明します。ネームサービススイッチは、異なるネームサービスの使用方法を調整するために使います。

ネームサービススイッチについて

ネームサービススイッチは nsswitch.conf (4) という名前のファイルで、クライアントのマシンやアプリケーションがネットワーク情報を得る方法を管理します。 ネームサービススイッチは、次のような getXbyY() インタフェースのいずれかを呼び出すクライアントアプリケーションによって使用されます。

各マシンの /etc ディレクトリには、スイッチファイルがあります。ファイルの各行は、host、passwd、group などの特定タイプのネットワーク情報を識別します。その後には、クライアントがネットワーク情報を探すための 1 つまたは複数のソースが続きます。

クライアントは、1 つまたは複数のスイッチのソースからネーミング情報を入手できます。たとえば、NIS+ のクライアントは、NIS+ テーブルからホスト情報を、ローカルの /etc ファイルからパスワード情報をそれぞれ入手できます。さらに、スイッチが各ソースを使用する条件を指定することもできます。表 2–1 を参照してください。

Solaris オペレーティング環境では、インストールの過程で、各マシンの /etc ディレクトリに nsswitch.conf ファイルが自動的にロードされます。LDAP、NIS、NIS+ またはローカルファイル用にスイッチファイルの 4 つの代替 (テンプレート) バージョンも /etc にロードされます。nsswitch.conf テンプレートファイル を参照してください。

これら 4 つのファイルは、代替デフォルトスイッチファイルです。各ファイルはそれぞれ /etc ファイル、NIS、NIS+ 、LDAP という異なる主要なネームサービス用に設計されています。 Solaris ソフトウェアをマシンに最初にインストールする時に、インストール担当者はマシンのデフォルトのネームサービス (NIS+、NIS、ローカルファイル、または LDAP) を選択します。(NIS+、NIS、ローカルファイル、または LDAP) を選択します。インストール中に、対応するテンプレートファイルが nsswitch.conf ファイルにコピーされます。たとえば、LDAP を使用するクライアントマシンでは、インストールの過程で nsswitch.ldapnsswitch.conf にコピーされます。特殊な名前空間を持っている場合を除き、通常の操作には nsswitch.conf にコピーされるデフォルトのテンプレートファイルを使用できます。

DNS または IPv6 用のデフォルトファイルは提供されませんが、これら 4 つのファイルを編集して DNS または IPv6 用に使用できます。DNS とインターネットでのアクセスまたはIPv6 と Solaris ネームサービスを参照してください。

マシンの主要なネームサービスを後から変更する場合は、該当する代替スイッチファイルを nsswitch.conf にコピーします。nsswitch.conf テンプレートファイルを参照してください。NIS 管理者はまた、/etc/nsswitch.conf ファイルの該当行を編集することによって、クライアントで使用する特定タイプのネットワーク情報のソースを変更できます。この操作を行うための構文について、以下に説明します。詳細については、ネームサービススイッチの変更 を参照してください。

nsswitch.conf ファイルのフォーマット

nsswitch.conf ファイルは、基本的には 16 種類の情報とそのソース (getXXbyYY() 関数の情報検索先) のリストです。16 種類の情報は次のとおりです (順序は、必ずしも次のとおりではありません)。

次の表に、上記の情報タイプのスイッチファイルの中に表示できるソースの種類とその説明を示します。

表 2–1 スイッチファイルの情報ソース

ソース 

説明 

files

クライアントの /etc ディレクトリに格納されているローカルファイル (/etc/passwd など)

nisplus

NIS+ テーブル (hosts テーブルなど)

nis

NIS マップ (hosts マップなど)

compat

パスワードとグループ情報を対象に、/etc/passwd/etc/shadow/etc/group ファイルで旧形式の「+」または「-」構文をサポートする

dns

ホスト情報を DNS から入手するように指定する  

ldap

エントリを LDAP ディレクトリから入手するように指定する 

検索規準

「単一ソース」。nisplus のような情報のソースが 1 つだけの場合、スイッチを使用している関数は、そのソースだけで情報を検索します。情報が見つかった場合、success という状態メッセージが渡されます。情報が見つからない場合は、検索が停止され「success」 以外の状態メッセージが返されます。状態メッセージに基づいて何をするかは、関数によって異なります。

「複数ソース」。テーブルに複数のソースがある場合、スイッチは最初のソースから情報検索を始めるように関数に指示します。情報が見つかれば success という状態メッセージが返されます。情報が見つからない場合は、次のソースが検索されます。 関数は必要な情報が見つかるか、return 処理によって中止されるまで全ソースの検索を続けます。必要な情報がどのソースにもなかった場合、関数は検索を停止し、「non-success」 という状態メッセージを返します。

スイッチ状態メッセージ

関数は情報を見つけると、「success」 という状態メッセージを返します。探している情報が見つからない場合は、その理由によって、3 種類の状態メッセージのいずれかを返します。表示される状態メッセージを次の表に示します。

表 2–2 スイッチ状態メッセージ

状態メッセージ 

意味 

SUCCESS

要求されたエントリがソース内で発見された 

UNAVAIL

ソースが応答しない、または使用不可。つまり、NIS+ テーブル、NIS マップ、または /etc ディレクトリのファイルが見つからなかったかアクセスできなかった

NOTFOUND

ソースが「エントリなし」と応答した。テーブル、マップ、ファイルにアクセスしたが、必要な情報は見つからなかった 

TRYAGAIN

ソース使用中のため再検索の必要あり。テーブル、マップ、ファイルは見つかったが、照会に対して応答しなかった 

スイッチの動作に関するオプション

次の表に示すように、状態メッセージに対して 2 つの「動作」のどちらかで応答するようにスイッチに指示できます。

表 2–3 スイッチ状態メッセージへの応答

作業 

意味 

return

情報の検索を停止する 

continue

次のソースがあれば、それを検索する 

デフォルト検索基準

nsswitch.conf ファイルの状態メッセージと動作オプションの組み合わせによって、関数の各ステップでの動作が決まります。この状態と動作の組み合わせのことを、「検索基準」と呼びます。

スイッチのデフォルト検索規準は、どのソースについても同じです。これらを上記の状態メッセージに基づいて説明すると、次のようになります。

これらはデフォルトの検索基準であるため、自動的に表示されます。つまり、スイッチファイルで、明示的に指定する必要はありません。ほかの検索基準を明示的に指定してデフォルトの検索基準を変更するには、上記の STATUS=action という構文を使用します。たとえば、NOTFOUND 状態に対し、デフォルトの動作では次のソースに対する検索を続行します。networks など特定のタイプの情報を設定して検索すると、検索は NOTFOUND 状態で中止されます。スイッチファイルの networks の行は、次のように編集されていると考えられます。


networks: nis [NOTFOUND=return] files

networks: nis [NOTFOUND=return] files 行は、NOTFOUND 状態に関してデフォルトでない検索基準を設定するものです。デフォルト以外の設定をするときは [ ] を使用します。

この例では、検索関数は次のような働きをします。

構文が正しくない場合の処理

クライアントのライブラリ関数には、nsswitch.conf ファイルにおいて「必要なエントリがない」、「エントリの構文が誤っている」といった場合に使用される、コンパイル時に組み込まれるデフォルトエントリがあります。これらのエントリは nsswitch.conf ファイルのデフォルトエントリと同じものです。

ネームサービススイッチは、テーブル名やソース名のスペルが正しいものとして処理をします。テーブル名やソース名のスペルが正しくない場合は、デフォルト値が使用されます。

Auto_homeAuto_master

auto_home テーブル、auto_master テーブルとマップのスイッチ検索基準は、automount と呼ばれる1つのカテゴリに統合されます。

Timezone とスイッチファイル

timezone テーブルはスイッチを使用しないため、スイッチファイルのリストには含まれていません。

nsswitch.conf ファイル中のコメント

nsswitch.conf ファイル中の行のうち、コメント文字 (#) で始まっているものはコメント行として解釈され、ファイルを検索する関数では無視されます。

行の途中にコメント文字 (#) が含まれる場合、コメント文字の前の文字列は nsswitch.conf ファイルを検索する関数によって解釈されます。コメント文字よりあとの文字列は、コメントとして解釈され、無視されます。

表 2–4 スイッチファイルのコメント例

行の種類 

コメント例 

コメント行 (無視される) 

#hosts: nisplus [NOTFOUND=return] files 

完全に解釈される行 

hosts: nisplus [NOTFOUND=return] file 

部分的に解釈される行 (「files」の部分は解釈されない)

hosts: nisplus [NOTFOUND=return] # files 

スイッチファイルのキーサーバーと publickey エントリ


注意 – 注意 –

nsswitch.conf に変更を加えた後は、キーサーバーを再起動する必要があります。


キーサーバーは、起動時にだけネームサービススイッチ構成ファイルの publickey エントリを参照します。つまり、スイッチ構成ファイルを更新しても再起動しない限り、キーサーバーは publickey への変更を認識しないということになります。

nsswitch.conf テンプレートファイル

Solaris オペレーティング環境では、さまざまなネームサービスに対応できるように、nsswitch.conf(4) テンプレートファイルが 4 つ用意されています。各ファイルでは、デフォルトの情報ソース (一次ソース、および二次以降のソース) として、それぞれ異なる内容が指定されています。

4 つのテンプレートファイルは、次のとおりです。

要件に一番近いテンプレートファイルを nsswitch.conf 構成ファイルにコピーして、必要に応じてファイルを変更します。

たとえば、LDAP テンプレートファイルを使用する場合は、次のコマンドを入力します。

mymachine# cp nsswitch.ldap nsswitch.conf

デフォルトスイッチテンプレートファイル

Solaris オペレーティング環境で用意されている 4 つのスイッチファイルは、次のとおりです。


例 2–1 NIS+ スイッチファイルテンプレート (nsswitch.nisplus)


#
# /etc/nsswitch.nisplus:
# 
# An example file that could be copied over to /etc/nsswitch.conf;
# it uses NIS+ (NIS Version 3) in conjunction with files.
# 
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet"
# transports.
# the following two lines obviate the "+" entry in /etc/passwd
# and /etc/group.
passwd: files nisplus
group: files nisplus
# consult /etc "files" only if nisplus is down.
hosts: nisplus [NOTFOUND=return] files
# Uncomment the following line, and comment out the above, to use
# both DNS and NIS+. You must also set up the /etc/resolv.conf
# file for DNS name server lookup. See resolv.conf(4).
# hosts: nisplus dns [NOTFOUND=return] files
services: nisplus [NOTFOUND=return] files
networks: nisplus [NOTFOUND=return] files
protocols: nisplus [NOTFOUND=return] files
rpc: nisplus [NOTFOUND=return] files
ethers: nisplus [NOTFOUND=return] files
netmasks: nisplus [NOTFOUND=return] files
bootparams: nisplus [NOTFOUND=return] files
publickey: nisplus
netgroup: nisplus
automount: files nisplus
aliases: files nisplus
sendmailvars: files nisplus


例 2–2 NIS スイッチファイルテンプレート


# 
# /etc/nsswitch.nis:
#
# An example file that could be copied over to /etc/nsswitch.conf;
# it uses NIS (YP) in conjunction with files.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet"
# transports.
#
# the following two lines obviate the "+" entry in /etc/passwd
# and /etc/group.
passwd: files nis
group: files nis
# consult /etc "files" only if nis is down.
hosts: nis [NOTFOUND=return] files
networks: nis [NOTFOUND=return] files
protocols: nis [NOTFOUND=return] files
rpc: nis [NOTFOUND=return] files
ethers: nis [NOTFOUND=return] files
netmasks: nis [NOTFOUND=return] files
bootparams: nis [NOTFOUND=return] files
publickey: nis [NOTFOUND=return] files
netgroup: nis
automount: files nis
aliases: files nis 
# for efficient getservbyname() avoid nis 
services: files nis 
sendmailvars: files


例 2–3 Files スイッチファイルテンプレート


#
# /etc/nsswitch.files:
#
# An example file that could be copied over to /etc/nsswitch.conf;
# it does not use any naming service.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet"
# transports.
passwd: files
group: files
hosts: files
networks: files
protocols: files
rpc: files
ethers: files
netmasks: files	
bootparams: files
publickey: files
# At present there isn't a 'files' backend for netgroup;
# the system will figure it out pretty quickly, and will notuse
# netgroups at all.
netgroup: files
automount: files
aliases: files
services: files
sendmailvars: files


例 2–4 LDAP スイッチファイルテンプレート


#
# /etc/nsswitch.ldap:
#
# An example file that could be copied over to /etc/nsswitch.conf; it
# uses LDAP in conjunction with files.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports.

# the following two lines obviate the "+" entry in /etc/passwd 
and /etc/group.
passwd:     files ldap
group:      files ldap

hosts:      ldap [NOTFOUND=return] files

networks:   ldap [NOTFOUND=return] files
protocols:  ldap [NOTFOUND=return] files
rpc:        ldap [NOTFOUND=return] files
ethers:     ldap [NOTFOUND=return] files
netmasks:   ldap [NOTFOUND=return] files
bootparams: ldap [NOTFOUND=return] files
publickey:  ldap [NOTFOUND=return] files

netgroup:   ldap

automount:  files ldap
aliases:    files ldap

# for efficient getservbyname() avoid ldap
services:   files ldap
sendmailvars:   files

nsswitch.conf ファイル

Solaris オペレーティング環境を初めてインストールするときのデフォルトの nsswitch.conf ファイルは、Solaris のソフトウェアをインストールする際に選択したネームサービスで決まります。このファイルの各行は、ネットワーク情報の種類 (ホスト、パスワード、グループなど) と、それに対する 1 つ以上の情報ソース (NIS+ テーブル、NIS マップ、DNS ホストテーブル、同一マシン上の /etc など) を対応させています。クライアントは、この情報ソースから各情報を検索します。ネームサービスを選択すると、そのサービスのスイッチテンプレートファイルがコピーされ新しい nsswitch.conf ファイルが作成されます。たとえば、NIS+ を選択した場合は、nsswitch.nisplus ファイルがコピーされ新しい nsswitch.conf ファイルが作成されます。

/etc/nsswitch.conf ファイルは、Solaris 9 リリースをインストールすると各マシンの /etc ディレクトリに自動的に作成されます。また、次の 4 つの代替テンプレートファイルも作成されます。

これらの 4 つの代替テンプレートファイルには、それぞれネットワーク情報の情報ソースとして NIS+、NIS、ローカルファイル、 または LDAP を使用する標準的なスイッチ構成が設定されています。DNS 用のデフォルトファイルは提供されませんが、これら 4 つのファイルのどれでも編集して DNS 用に使用できます。第 5 章「DNS の管理 (参照情報)」を参照してください。Solaris オペレーティング環境をマシンに最初にインストールするときに、インストール担当者はマシンのデフォルトのネームサービス (NIS+、NIS、ローカルファイル、または LDAP) を選択します。インストール中に、選択されたネームサービスに対応するテンプレートファイルが /etc/nsswitch.conf にコピーされます。たとえば、NIS+ を使用しているクライアントマシンでは、インストールの過程で nsswitch.nisplusnsswitch.conf にコピーされます。

ネットワークがインターネットに接続されており、ユーザーが DNS を使用してインターネット上のホストにアクセスできるようにする場合は、DNS 転送を有効にする必要があります。

特殊な名前空間を持っている場合を除き、通常の操作には nsswitch.conf にコピーされるデフォルトのテンプレートファイルを使用します。

構成ファイルの変更

マシンのネームサービスを変更するときは、そのマシンのスイッチファイルを新しいネームサービスに対応させて変更する必要があります。たとえば、マシンのネームサービスを NIS から NIS+ に変更する場合、スイッチファイルを NIS+ に対応したものに変更する必要があります。スイッチファイルを変更するには、対応するテンプレートファイルを nsswitch.conf にコピーします。

NIS+ インストールスクリプトを使って NIS+ をマシンにインストールすると、NIS+ テンプレートファイルが自動的に nsswitch.conf にコピーされます。この場合、特にスイッチファイルをカスタマイズしたいというのでなければ、スイッチファイルを明示的に変更する必要はありません。

スイッチファイルを変更する前に、ファイルに列挙されている情報ソースが正しく設定されていることを確認してください。たとえば、NIS+ 用スイッチファイルに変更するのであれば、ワークステーションには NIS+ サービスへのアクセス権が必要になり、ローカルファイル用スイッチファイルに変更するのであれば、それらのローカルファイルがワークステーション上に正しく設定されている必要があります。

ネームサービススイッチの変更

スイッチファイルを変更する場合は、次の手順に従います。

  1. スーパーユーザーになります。

  2. 使用するネームサービス用のテンプレートファイルを nsswitch.conf にコピーします。

    「NIS+ 用」(NIS+ スクリプトにより自動的にコピーされる)

    client1# cd /etc

    client1# cp nsswitch.nisplus nsswitch.conf

    「NIS 用」

    client1# cd /etc

    client1# cp nsswitch.nis nsswitch.conf

    「ローカルの /etc ファイル用」

    client# cd /etc

    client# cp nsswitch.files nsswitch.conf

  3. マシンをリブートします。

    nscd ネームサービスキャッシュデーモンによってスイッチ情報がキャッシュに書き込まれます。ライブラリ関数の中には、nsswitch.conf ファイルが変更されたかどうかを定期的にチェックしないものがあります。このため、マシンをリブートして、nscd とこれらのライブラリ関数が確実に最新スイッチの情報を持つようにする必要があります。


注 –

LDAP ネームサービスを使用するには、すべての LDAP クライアントマシンを正しく設定し、nsswitch.conf を変更する必要があります。詳細については、第 16 章「クライアントの設定手順 (手順)」を参照してください。


DNS とインターネットでのアクセス

nsswitch.conf ファイルでは、以下の節で説明しているように、クライアントの DNS 転送も制御しています。DNS 転送によって、クライアントへのインターネットでのアクセスが可能になります。NIS と NIS+ 用に DNS 転送を設定する方法については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』を参照してください。

IPv6 と Solaris ネームサービス


注 –

DNS と LDAP は、IPv6 アドレスを格納できるという点で IPv6 との互換性があります。 ただし、Solaris 9 では、クライアントサーバーの DNS または LDAP トラフィックに IPv6 トランスポートを使用できません。LDAP ネームサービスは、IPv6 専用のネットワークではまだ機能しません。


NIS と NIS+ では、IPv6 データを格納できるだけでなく、NIS/NIS+ プロトコルのトラフィックに IPv6 トランスポートを使用することもできます。

nsswitch.conf ファイルは、IPv6 アドレスの検索基準を制御します。IPv6 は、32 ビットから 128 ビットまで IP アドレスサイズを大きくして、より多くのアドレス階層をサポートし、より多くのノードにアドレス指定できるようにします。IPv6 の構成と実装の詳細については、『Solaris のシステム管理 (IP サービス)』を参照してください。

IPv6 アドレスには、新しい ipnodes ソースを使用してください。/etc/inet/ipnodes ファイルには、IPv4 と IPv6 のアドレスが格納されています。/etc/inet/ipnodes ファイルは、/etc/hosts ファイルと同じフォーマットを使用します。

IPv6 のネームサービスでは、 検索用に新しい ipnodes ソースを使用しています。たとえば、LDAP で IPv6 アドレスを認識させる場合は、次のように指定します。


ipnodes: ldap [NOTFOUND=return] files

注意 – 注意 –

ipnodes は、デフォルトでは files です。 IPv4 から IPv6 への変更中には、すべてのネームサービスが、IPv6 アドレスを認識できるわけではないので、デフォルトの files を使用します。このデフォルトを使用しない場合には、アドレスの解決中に不必要な遅延が生じることがあります (ブート時の遅延など)。



注意 – 注意 –

アプリケーションは、IPv4 アドレスを ipnodes データベースで検索してから、hosts データベースを検索します。ipnodes を指定する前に、IPv4 アドレスの両方のデータベースを検索する時間を考慮にいれる必要があります。


+/- 構文との互換性を追加する

/etc/passwd/etc/shadow/etc/group の各ファイルで +/- 構文を使用する場合は、nsswitch.conf ファイルを変更して互換性を確保する必要があります。


注 –

NIS+ サーバーが NIS 互換モードで動作している場合、クライアントマシンでは netgroup テーブルに対して ypcat を実行できません。実行すると、エントリの有無に関わらず「テーブルが空である」という結果が返されます。


スイッチファイルとパスワード情報


注意 – 注意 –

passwd 情報の nsswitch.conf ファイルでは、files を 1 番目のソースにしてください。files が 1 番目のソースでない場合は、ネットワークセキュリティが低くなり、ログの扱いが難しくなります。


たとえば、NIS+ の環境では、nsswitch.conf ファイルの passwd 行は次のようになります。


passwd: files nisplus

NIS の環境では、nsswitch.conf ファイルの passwd 行は次のようになります。


passwd: files nis