Solaris のシステム管理 (IP サービス)

第 10 章 TCP/IP と IPv4 の詳細 (リファレンス)

この章では、ネットワーク構成ファイルの種類、目的、ファイルエントリのフォーマットなど、TCP/IP ネットワークの参照情報を提供します。また、既存のネットワークデータベースについても詳しく説明します。さらにこの章では、定義されているネットワーククラスとサブネット番号に基づいて、IPv4 アドレスが構成される仕組みについても説明します。

この章では、次の内容について説明します。

TCP/IP と IPv4 の新機能の詳細

Solaris 10 7/07 では、/etc/inet/ipnodes ファイルは廃止されました。個々の手順で説明されているとおり、/etc/inet/ipnodes は以前の Oracle Solaris 10 リリースにのみ使用してください。

TCP/IP 構成ファイル

ネットワーク上の各システムは、次の TCP/IP 構成ファイルとネットワークデータベースから TCP/IP 構成情報を取得します。

Oracle Solaris インストールプログラムは、インストール処理の一環として上記のファイルを作成します。これらのファイルは、この「TCP/IP 構成ファイル」の節の説明に従って手作業で編集することもできます。hosts データベースと netmasks データベースは、Oracle Solaris ネットワークで使用できるネームサービスによって読み取られるネットワークデータベースのうちの 2 つです。ネットワークデータベースの概念についての詳細は、「ネットワークデータベースと nsswitch.conf ファイル」を参照してください。Solaris 10 11/06 以前のリリースの ipnodes ファイルについては、ipnodes データベース」を参照してください。

/etc/hostname.interface ファイル

このファイルは、ローカルホストの物理ネットワークインタフェースを定義します。ローカルシステムには、少なくとも 1 つの /etc/hostname.interface ファイルが存在する必要があります。Oracle Solaris インストールプログラムは、インストールプロセス中に検出された最初のインタフェースに対して /etc/hostname.interface ファイルを作成します。このインタフェースは通常、一番小さなデバイス番号 (たとえば、eri0) を持っており、「一次ネットワークインタフェース」と呼ばれます。インストールプログラムが追加インタフェースを検出した場合は、インストールプロセスの一環としてそれらも任意で構成できます。


注 –

同じインタフェース用に別のホスト名ファイルを作成する場合、そのホスト名ファイルの名前も hostname.[0–9]* の形式 (hostname.qfe0.a123など) にする必要があります。hostname.qfe0.bak hostname.qfe0.old のような名前は無効であり、システムの起動中にスクリプトに無視されます。

また、特定のインタフェースに対応するホスト名ファイルは 1 つだけにする必要があります。/etc/hostname.qfe/etc/hostname.qfe.a123 のように、インタフェースの代替ホスト名ファイルを有効なファイル名で作成した場合、ブートスクリプトは両方のホスト名ファイルの内容を参照することによって構成を試みるため、エラーが発生します。これらのエラーを回避するには、特定の構成で使用したくないホスト名ファイルに無効なファイル名を付けます。


インストール後、新しいネットワークインタフェースをシステムに追加した場合は、そのインタフェースに対して、/etc/hostname.interface ファイルを作成する必要があります (「システムインストール後に物理インタフェースを構成する方法」を参照)。また、Oracle Solaris ソフトウェアが新しいネットワークインタフェースを認識し、使用できるようにするには、インタフェースのデバイスドライバが適切なディレクトリに読み込まれるようにする必要があります。新しいネットワークインタフェースに付属しているマニュアルを参照し、正しいインタフェース名とデバイスドライバの使用方法を確認してください。

基本的な /etc/hostname.interface ファイルにはエントリが 1 つだけ含まれます。 それは、ネットワークインタフェースに関連付けられた、ホスト名または IPv4 アドレスのどちらかです。IPv4 アドレスは、一般的な 10 進ドット表記または CIDR 表記で表現できます。/etc/hostname.interface ファイルのエントリとしてホスト名を使用する場合は、そのホスト名が /etc/inet/hosts ファイルにも存在している必要があります。

たとえば、tenere というシステムの一次ネットワークインタフェースが smc0 であるとします。この場合、/etc/hostname.smc0 ファイルのエントリとして、10 進ドット表記または CIDR 表記の IPv4 アドレス、あるいはホスト名 tenere を使用できます。


注 –

IPv6 は /etc/hostname6.interface ファイルを使用して、ネットワークインタフェースを定義します。詳細は、「IPv6 インタフェース設定ファイル」を参照してください。


/etc/nodename ファイル

このファイルにはエントリが 1 つ含まれます。 つまり、ローカルシステムのホスト名です。たとえば、timbuktu というシステムでは、/etc/nodename ファイルに timbuktu というエントリが入ります。

/etc/defaultdomain ファイル

このファイルにはエントリが 1 つ含まれます。 このエントリは、ローカルホストのネットワークが属する管理ドメインの完全に修飾されたドメイン名です。ネットワーク管理者は、この名前を Oracle Solaris インストールプログラムに指示したり、また後日、このファイルを編集できます。ネットワークドメインについての詳細は、『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照してください。

/etc/defaultrouter ファイル

このファイルには、ネットワークに直接接続されている各ルーターのエントリを含めることができます。このエントリは、ネットワーク間のルーターとして機能するネットワークインタフェースの名前です。/etc/defaultrouter ファイルがあるということは、システムが静的経路選択をサポートする構成であることを示します。

hosts データベース

hosts データベースには、ネットワーク上のシステムの IPv4 アドレスとホスト名が含まれています。NIS、DNS、または LDAP ネームサービスを使用している場合、hosts データベースは、ホスト情報用として指定されているデータベースに格納されます。たとえば、NIS を実行するネットワークでは、hosts データベースは hostsbyname ファイルに格納されます。

ネームサービス用にローカルファイルを使用する場合、hosts データベースは /etc/inet/hosts ファイルに格納されます。このファイルには、一次ネットワークインタフェースのホスト名と IPv4 アドレス、システムに備わっているほかのネットワークインタフェース、このシステムが検査する必要があるほかのネットワークアドレスが含まれています。


注 –

BSD ベースのオペレーティングシステムとの互換性を保つため、/etc/hosts ファイルは /etc/inet/hosts へのシンボリックリンクとなっています。


/etc/inet/hosts ファイルの形式

/etc/inet/hosts ファイルは、次のような基本的な構文を使用します。構文についての詳細は、hosts(4) のマニュアルページを参照してください。

IPv4-address hostname [nicknames] [#comment]

IPv4-address

ローカルホストが認識する必要のある各インタフェースの IPv4 アドレスが含まれます。

hostname

設定時にシステムに割り当てたホスト名と、ローカルホストが認識しなければならない増設ネットワークインタフェースに割り当てたホスト名が含まれます。

[nickname]

ホストのニックネームが含まれます (省略可能)。

[#comment]

コメント用のフィールドです (省略可能)。

初期 /etc/inet/hosts ファイル

Oracle Solaris インストールプログラムをシステムで実行すると、このプログラムは初期 /etc/inet/hosts ファイルを構成します。このファイルには、ローカルホストにとって必要最小限のエントリが含まれています。エントリには、ループバックアドレス、ホストの IPv4 アドレス、ホスト名が入っています。

たとえば、図 5–1 のシステム tenere に対して、Oracle Solaris インストールプログラムは次のような /etc/inet/hosts ファイルを作成します。


例 10–1 システム tenere 用の /etc/inet/hosts ファイル


127.0.0.1     localhost         loghost    #loopback address
192.168.200.3   tenere                      #host name

ループバックアドレス

例 10–1では、IPv4 アドレス 127.0.0.1 は「ループバックアドレス」です。ループバックアドレスは、ローカルシステムがプロセス間通信するために使用する予約済みネットワークインタフェースです。このアドレスを使用して、ホストは自分自身にパケットを送信できます。ifconfig コマンドは、ループバックアドレスを使用して、構成と検査を行います (ifconfig コマンドによるインタフェース構成の監視」を参照)。TCP/IP ネットワークのシステムはすべて、ローカルホスト上での IPv4 ループバックに IP アドレス 127.0.0.1 を使用する必要があります。

ホスト名

IPv4 アドレス 192.168.200.1 と名前 tenere は、ローカルシステムのアドレスとホスト名です。これらは、システムの一次ネットワークインタフェースに割り当てられます。

複数のネットワークインタフェース

システムには複数のネットワークインタフェースを持つものがあり、これらはルーターまたはマルチホームホストとなります。システムに接続されるネットワークインタフェースごとに、専用の IP アドレスとそれに割り当てる名前が必要です。インストール時には、一次ネットワークインタフェースを構成する必要があります。特定のシステムがインストール時に複数のインタフェースを持っている場合は、Oracle Solaris インストールプログラムも増設インタフェースに関するプロンプトを表示します。1 つ以上の増設インタフェースをこの時点で構成したり、あとで手動構成を行うことができます。

Oracle Solaris のインストール後、インタフェース情報をシステムの /etc/inet/hosts ファイルに追加することで、ルーターまたはマルチホームホストの増設インタフェースを構成できます。ルーターとマルチホームホストを構成する方法については、「IPv4 ルーターの構成」「マルチホームホストの構成」を参照してください。

例 10–2 は、図 5–1 のシステム timbuktu 用の /etc/inet/hosts ファイルを示しています。


例 10–2 システム timbuktu 用の /etc/inet/hosts ファイル


127.0.0.1        localhost     loghost
192.168.200.70   timbuktu      #This is the local host name
192.168.201.10   timbuktu-201  #Interface to network 192.9.201

これらの 2 つのインタフェースを使用して、timbuktu はルーターとしてネットワーク 192.168.200192.168.201 に接続します。

ネームサービスの hosts データベースに対する影響

NIS と DNS ネームサービス、および LDAP ディレクトリサービスは、ホスト名とアドレスを 1 つまたは複数のサーバーに格納します。これらのサーバーは、各サーバーのネットワーク上のすべてのホストとルーター (もしあれば) に関する情報を含む hosts データベースを保持しています。これらのサービスの詳細については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照してください。

ローカルファイルがネームサービスを提供する場合

ローカルファイルをネームサービスに使用するネットワークでは、ローカルファイルモードで実行されるシステムは、そのネットワークのほかのシステムの IPv4 アドレスとホスト名を調べるときに、それぞれの /etc/inet/hosts ファイルを参照します。したがって、これらのシステムの /etc/inet/hosts ファイルには、次の情報が含まれている必要があります。

図 10–1 は、システム tenere/etc/inet/hosts ファイルを示しています。このシステムはローカルファイルモードで実行されます。このファイルには、192.9.200 ネットワーク上のすべてのシステムの IPv4 アドレスとホスト名が含まれています。また、このファイルにはインタフェース名 timbuktu-201 とその IPv4 アドレスが含まれています。このインタフェースは 192.9.200 ネットワークを 192.9.201 ネットワークに接続しています。

ネットワーククライアントとして構成されたシステムは、そのループバックアドレスと IPv4 アドレス用にローカルの /etc/inet/hosts ファイルを使用します。

図 10–1 ローカルファイルモードで実行されるシステム用の /etc/inet/hosts ファイル

この図では、ローカルファイルモードで実行されるシステム用のホストファイルの内容を示しています。

ipnodes データベース


注 –

Solaris 10 11/06 よりあとのリリースには、ipnodes データベースは含まれなくなりました。これらの後続のリリースでは、ipnodes の IPv6 機能は hosts データベースに移行されます。


/etc/inet/ipnodes ファイルは IPv4 アドレスと IPv6 アドレスの両方を格納します。また、IPv4 アドレスは、一般的な 10 進ドット表記または CIDR 表記として保存できます。このファイルはローカルデータベースとして、ホスト名を IPv4 アドレスや IPv6 アドレスに関連付けます。ホスト名やそのアドレスは、/etc/inet/ipnodes などの静的ファイルには保存しないでください。ただし、テスト目的の場合は IPv4 アドレスを /etc/inet/hosts に保存するのと同じ方法で IPv6 アドレスを保存します。ipnodes ファイルでは、hosts ファイルと同じフォーマット変換を使用します。/etc/inet/hosts の詳細については、hosts データベース」を参照してください。ipnodes ファイルについては、ipnodes(4) のマニュアルページを参照してください。

IPv6 が有効なアプリケーションは /etc/inet/ipnodes データベースを使用します。既存の /etc/hosts データベースには、IPv4 アドレスだけが含まれていますが、既存のアプリケーションの便宜上、このデータベースは変更されません。ipnodes データベースが存在しない場合、IPv6 が有効なアプリケーションは既存の hosts データベースを使用します。


注 –

アドレスを追加する必要がある場合、IPv4 アドレスは hosts ファイルと ipnodes ファイルの両方に追加しなければなりません。IPv6 アドレスは ipnodes ファイルにだけ追加します。



例 10–3 /etc/inet/ipnodes ファイル

次の例のように、ホスト名アドレスは、ホスト名でグループにまとめる必要があります。


#
# Internet IPv6 host table
# with both IPv4 and IPv6 addresses
#
::1     localhost
2001:db8:3b4c:114:a00:20ff:fe78:f37c   farsite.com farsite farsite-v6
fe80::a00:20ff:fe78:f37c     farsite-11.com farsitell
192.168.85.87   				 farsite.com farsite farsite-v4
2001:db8:86c0:32:a00:20ff:fe87:9aba   nearsite.com nearsite nearsite-v6
fe80::a00:20ff:fe87:9aba     nearsite-11.com nearsitell
10.0.0.177  				 nearsite.com nearsite nearsite-v4 loghost

netmasks データベース

ネットワーク構成の一部として netmasks データベースを編集する必要があるのは、ネットワークのサブネット化を設定している場合だけです。 netmasks データベースは、各ネットワークとそれに対応するサブネットマスクのリストで構成されています。


注 –

サブネットを作成するときは、新規の各ネットワークはそれぞれ独立した物理ネットワークであることが必要です。単一の物理ネットワークにサブネット化を適用することはできません。


サブネット化とは

サブネット化」は、大規模なインターネットワークにおいて、限られた 32 ビットの IPv4 アドレス空間を最大限活用し、経路制御テーブルの大きさを縮小する方法です。どのようなアドレスクラスの場合も、サブネット化によってホストアドレス空間の一部をネットワークアドレスに割り当て、ネットワーク数を増やすことができます。新規のネットワークアドレスに割り当てられるホストアドレス空間の部分を、「サブネット番号」と言います。

IPv4 アドレス空間を有効活用できることのほかに、サブネット化には管理上の利点もいくつかあります。ネットワークの数が増えるに伴って、経路制御はきわめて複雑になってきます。たとえば、小規模の組織なら、個々のローカルネットワークにクラス C の番号を割り当てることができます。しかし、組織が成長するにつれて、多数の異なるネットワーク番号を管理することは、非常に複雑な作業になってきます。このような場合の改善策の 1 つとして、組織内の主要部門に対してそれぞれクラス B のネットワーク番号を割り当てる方法が考えられます。たとえば、エンジニアリング部門に 1 つのクラス B ネットワーク、運営部門に別のクラス B を割り当てるということが可能です。その上で、サブネット化によって得られたネットワーク番号を使用して、個々のクラス B ネットワークをさらに多くのネットワークに分割できます。これによって、ルーター間でやりとりしなければならない経路制御情報の量も減少します。

IPv4 アドレス用のネットワークマスクの作成

サブネット化プロセスの一環として、ネットワーク全体の「ネットマスク」を選択する必要があります。ネットマスクは、ホストアドレス空間の中で、どの位置の何個のビットがサブネット番号を表し、どの位置の何個のビットがホスト番号を表すかを決定します。完全な IPv4 アドレスは 32 ビットで構成されることを思い出してください。ホストアドレス空間を表すために使用できるビット数は、アドレスクラスによって異なりますが、最大 24 ビット、最小 8 ビットです。ネットマスクは netmasks データベース内に指定します。

サブネットの使用を予定している場合は、TCP/IP を構成する前にネットマスクを決定する必要があります。ネットワーク構成の一環としてオペレーティングシステムをインストールすることを予定している場合は、Oracle Solaris インストールプログラムは、ネットワークのネットマスクを指定するよう求めます。

「IPv4 アドレス指定スキーマの設計」 に説明されているとおり、32 ビットの IP アドレスは、ネットワーク部とホスト部で構成されています。32 ビットは 4 個のバイトに分かれます。各バイトは、ネットワーククラスに応じて、ネットワーク番号かホスト番号のどちらかに割り当てられます。

たとえば、クラス B の IPv4 アドレスでは、左側の 2 バイトがネットワーク番号に割り当てられ、右側の 2 バイトがホスト番号に割り当てられます。クラス B の IPv4 アドレス 172.16.10 では、右側の 2 バイトをホストに割り当てることができます。

サブネット化を行う場合は、ホスト番号に割り当てるバイトの中の一部のビットを、サブネットアドレスとして使用する必要があります。たとえば、ホストアドレス空間が 16 ビットであれば、65,534 個のホストのアドレス指定が可能です。3 番目のバイトをサブネットアドレス用に使用して、4 番目のバイトをホストアドレス用に使用するとすれば、最大 254 のネットワークのアドレスと、それぞれについて最大 254 ずつのホストのアドレスを指定できます。

ホストアドレスのバイトのどのビットがサブネットアドレスに使用され、どのビットがホストアドレスに使用されるかは、「サブネットマスク」によって決まります。サブネットマスクは、バイト中のどのビットをサブネットアドレス用とするかを選択するために使用します。ネットマスクのビットは連続していなければなりませんが、バイトの境界に整列している必要はありません。

ネットマスクは、ビット単位の論理 AND 演算子を使用することによって、IPv4 アドレスに適用できます。この演算によって、アドレスのネットワーク番号とサブネット番号の位置が選択されます。

ネットマスクは、2 進数で表現できます。2 進数と 10 進数は計算機を使用して換算できます。次の例では、ネットマスクの 10 進数形式と 2 進数形式の両方を示してあります。

ネットマスク 255.255.255.0 を IPv4 アドレス 172.16.41.101 に適用すると、結果の IPv4 アドレスは 172.16.41.0 になります。

172.16.41.101 & 255.255.255.0 = 172.16.41.0

2 進数形式では、この演算は次のようになります。

10000001.10010000.00101001.01100101 (IPv4 アドレス)

次の論理積 (AND) をとります。

11111111.11111111.11111111.00000000 (IPv4 ネットマスク)

これでシステムは、ネットワーク番号 172.16.41 をネットワーク番号 172.16 の代わりに検索します。ネットワークのネットワーク番号が 172.16.41 である場合、システムはこの番号をチェックし、検出します。IPv4 アドレス空間の 3 番目のバイトには最大 254 個の値を割り当てることができるので、サブネット化によって、254 個のネットワーク用のアドレス空間を作ることができます。サブネット化を使用しなければ、ネットワークは 1 つだけです。

ネットワークを 2 つだけ追加するためのアドレス空間を確保する場合は、次のようなサブネットマスクを使用します。

255.255.192.0

このネットマスクの結果は次のようになります。

11111111.11111111.1100000.00000000

この結果、まだ 14 ビットはホストアドレス用に使用できます。全桁 0 と全桁 1 は予約済みなので、少なくとも 2 ビットをホスト番号用として確保する必要があります。

/etc/inet/netmasks ファイル

ネットワークで NIS または LDAP を実行している場合、これらのネームサービスのサーバーに netmasks データベースが格納されます。ローカルファイルをネームサービスとして使用するネットワークの場合、この情報は /etc/inet/netmasks ファイル内に格納されます。


注 –

BSD ベースのオペレーティングシステムと互換性を確保するため、/etc/netmasks ファイルは /etc/inet/netmasks へのシンボリックリンクとなっています。


次のコード例に示すのは、クラス B ネットワーク用のサンプルの /etc/inet/netmasks ファイルです。


例 10–4 クラス B ネットワーク用の /etc/inet/netmasks ファイル


 # The netmasks file associates Internet Protocol (IPv4) address
 # masks with IPv4 network numbers.
 #
 # 	network-number	netmask
 #
 # Both the network-number and the netmasks are specified in
 # “decimal dot” notation, e.g:
 #
 #        128.32.0.0   255.255.255.0
 192.168.0.0  255.255.255.0

/etc/netmasks ファイルが存在しない場合は、テキストエディタで作成してください。構文は次のとおりです。

network-number	netmask-number

詳細は、netmasks(4) のマニュアルページを参照してください。

ネットマスク番号を作成するときは、ISP または Internet Registry から割り当てられたネットワーク番号 (サブネット番号ではない) とネットマスク番号を、/etc/inet/netmasks ファイルに入力します。各サブネットマスクはそれぞれ単独の行に入れてください。

次に例を示します。


128.78.0.0	    255.255.248.0

/etc/inet/hosts ファイルには、ネットワーク番号のシンボリック名も入力できます。こうすることによって、ネットワーク番号の代わりにこれらのネットワーク名をコマンドへのパラメータとして使用できます。

inetd インターネットサービスデーモン

inetd デーモンは、システムの起動時にインターネット標準サービスを起動したり、システムの実行中にサービスを再起動したりできます。SMF (サービス管理機能) は、標準インターネットサービスを変更したり、inetd デーモンに追加サービスを開始させるために使用します。

inetd が起動したサービスを管理するには、次の SMF コマンドを使用します。

svcadm

起動、停止、再開などのサービスの管理操作を行います。詳細は、svcadm(1M) のマニュアルページを参照してください。

svcs

サービスのステータスを照会します。詳細は、svcs(1) のマニュアルページを参照してください。

inetadm

サービスのプロパティーの表示と変更を行います。詳細は、inetadm(1m) のマニュアルページを参照してください。

特定のサービスの inetadm プロファイルの proto フィールドの値は、サービスが実行されるトランスポート層プロトコルを示します。サービスが IPv4 専用の場合、proto フィールドには tcpudp、または sctp を指定します。

ネットワークデータベースと nsswitch.conf ファイル

ネットワークデータベースは、ネットワークの構成に必要な情報を提供するファイルです。ネットワークデータベースには次のものがあります。

構成工程の一環として、ネットワークをサブネット化する場合は、hosts データベースと netmasks データベースを編集します。システムをネットワーククライアントとして構成するには、bootparamsethers の 2 つのネットワークデータベースを使用します。残りのデータベースはオペレーティングシステムが使用するもので、編集が必要になることはほとんどありません。

nsswitch.conf ファイルはネットワークデータベースではありませんが、このファイルは関連するネットワークデータベースと共に構成する必要があります。nsswitch.conf は、特定のシステムに、 ローカルファイル、NIS、DNS、または LDAP のどのネームサービスを使用するかを指定します。

ネットワークデータベースへのネームサービスの影響

ネットワークデータベースの形式は、ネットワークで選択したネームサービスの種類によって異なります。たとえば、hosts データベースには、少なくとも、ローカルシステムとそのシステムに直接接続されているネットワークインタフェースのホスト名と IPv4 アドレスだけは含まれています。しかし、ネットワークで使用するネームサービスの種類によっては、その他の IPv4 アドレスとホスト名も hosts データベースに含まれていることがあります。

ネットワークデータベースは、次のように使用されます。


注 –

DNS 起動ファイルとデータファイルは、ネットワークデータベースに直接は対応していません。


次の図に、これらのネームサービスで使用する hosts データベースの形式を示します。

図 10–2 ネームサービスが使用する hosts データベースの形式

この図は、さまざまな DNS、NIS、NIS+ ネームサービスとローカルファイルがホストデータベースをどのように保存するかを示しています。

次の表に、ネットワークデータベースと対応するローカルファイルおよび NIS マップを示します。


注 –

Solaris 10 11/06 よりあとの Oracle Solaris リリースでは、ipnodes データベースは削除されます。


表 10–1 ネットワークデータベースと対応ネームサービスファイル

ネットワークデータベース 

ローカルファイル 

NIS のマップ 

hosts

/etc/inet/hosts

hosts.byaddr hosts.byname

ipnodes

/etc/inet/ipnodes

ipnodes.byaddr ipnodes.byname

netmasks

/etc/inet/netmasks

netmasks.byaddr

ethers

/etc/ethers

ethers.byname ethers.byaddr

bootparams

/etc/bootparams

bootparams

protocols

/etc/inet/protocols

protocols.byname protocols.bynumber

services

/etc/inet/services

services.byname

networks

/etc/inet/networks

networks.byaddr networks.byname

このマニュアルでは、ネームサービス用にローカルファイルを使用するネットワークから見たネットワークデータベースについて説明します。

NIS、DNS、および LDAP でのネットワークデータベースの対応関係については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照してください。

nsswitch.conf ファイル

/etc/nsswitch.conf ファイルは、ネットワークデータベースの検索順序を定義します。Oracle Solaris インストールプログラムは、インストール中にネットワーク管理者が指定するネームサービスに基づいて、ローカルシステム用のデフォルトの /etc/nsswitch.conf ファイルを作成します。「None」オプションを指定して、ローカルファイルをネームサービスとして使用することを指示した場合は、nsswitch.conf ファイルは次の例のようになります。


例 10–5 ネームサービスにファイルを使用するネットワーク用の nsswitch.conf


# /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 contains "switch.so" as a
# nametoaddr library for "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 won't use netgroups at all.
netgroup:        files
automount:       files
aliases:         files
services:        files
sendmailvars:    files

このファイルについての詳細は、nsswitch.conf(4) のマニュアルページを参照してください。基本構文は、次のとおりです。

database name-service-to-search

database フィールドには、オペレーティングシステムが検索する多くの種類のデータベースの 1 つを指定できます。たとえば、passwdaliases などのようにユーザーに影響を与えるデータベースでも、またネットワークデータベースでも指定できます。ネットワークデータベースの場合、 name-service-to-search パラメータの値は、filesnisnis+ のどれかです。hosts データベースの場合は、検索するネームサービスとして dns も値に指定できます。nis+files のように、複数のネームサービスも指定できます。

例 10–5 において、示されている唯一の検索オプションは files です。したがって、ローカルシステムは、/etc ディレクトリと /etc/inet ディレクトリに入っているファイルから、ネットワークデータベース情報のほか、セキュリティーと自動マウントに関する情報を入手します。

nsswitch.conf の変更

/etc ディレクトリには、Oracle Solaris インストールプログラムが作成する nsswitch.conf ファイルが含まれています。そのほかに、次のネームサービス用のテンプレートファイルも含まれています。

あるネームサービスから別のネームサービスに変更したい場合は、対応するテンプレートを nsswitch.conf にコピーできます。また、nsswitch.conf ファイルを選択的に編集して、個々のデータベースを見つけるために検索するデフォルトのネームサービスを変更できます。

たとえば、NIS を実行するネットワークでは、ネットワーククライアントについての nsswitch.conf ファイルの変更が必要な場合があります。bootparams データベースと ethers データベースの検索順序では、最初のオプションとして files、次に nis が指定されている必要があります。次のコード例に、正しい検索順序を示します。


例 10–6 NIS を実行するネットワーク上のクライアントのための nsswitch.conf


# /etc/nsswitch.conf:#
.
.
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:        files  [NOTFOUND=return] nis
netmasks:      nis    [NOTFOUND=return] files	
bootparams:    files  [NOTFOUND=return] nis
publickey:     nis    
netgroup:      nis

automount:     files nis
aliases:       files nis

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

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

bootparams データベース

bootparams データベースには、ネットワーククライアントモードで起動されるように構成されたシステムが使用する情報が含まれています。ネットワーククライアントを持つネットワークの場合は、このデータベースの編集が必要になります。手順については、「ネットワーククライアントの構成」を参照してください。このデータベースは、/etc/bootparams ファイルに入力した情報をもとにして構築されます。

このデータベースの構文についての詳細は、bootparams(4) のマニュアルページに含まれています。基本構文は、次のとおりです。

system-name file-key-server-name:pathname

個々のディスクレスまたはネットワーククライアントシステムについて、エントリが 1 つずつ含まれています。 各エントリに入っている情報は、クライアント名、キーのリスト、サーバー名、パス名です。各エントリの最初の項目は、クライアントシステムの名前です。最初の項目以外は、すべてオプションです。次に例を示します。


例 10–7 bootparams データベース


myclient   root=myserver : /nfsroot/myclient  \
swap=myserver : /nfsswap//myclient \
dump=myserver : /nfsdump/myclient

この例の dump= はダンプファイルを探さないようクライアントホストに指示しています。

bootparams のワイルドカードエントリ

ほとんどの場合、ワイルドカードエントリを使用するのは、bootparams データベースを編集してクライアントをサポートするときです。次のようにしてワイルドカードエントリを使用します。

*  root=server:/path dump=:

アスタリスク (*) ワイルドカードは、このエントリが、bootparams データベース内で明示的に指定されていないすべてのクライアントに適用されることを示します。

ethers データベース

ethers データベースは、/etc/ethers ファイルに入力した情報から構築されます。このデータベースは、ホスト名を「メディアアクセス制御」(MAC) アドレスに関連付けます。ethers データベースの作成が必要になるのは、RARP デーモンを実行する場合だけです。つまり、ネットワーククライアントを構成する場合だけです。

RARP は、このファイルを使用して、MAC アドレスを IP アドレスにマッピングします。RARP デーモン in.rarpd を実行する場合は、ethers ファイルを設定し、このファイルをこのデーモンを実行するすべてのホストに格納して、ネットワークに対する変更が反映されるようにする必要があります。

このデータベースの構文についての詳細は、ethers(4) のマニュアルページに含まれています。基本構文は、次のとおりです。


MAC-address   hostname   #comment
MAC-address

ホストの MAC アドレス

hostname

ホストの公式名

#comment

ファイルのエントリに追加する注釈

MAC アドレスは装置の製造元から提供されます。システムの起動プロセス中に、システムが MAC アドレスを表示しない場合は、お使いのハードウェアのマニュアルを参照してください。

ethers データベースにエントリを追加するときは、ホスト名が、ニックネームではなく、hosts データベース内と ipnodes データベース内 (Solaris 10 11/06 以前のリリースの場合) の基本名に一致していることを確認してください (次のコード例を参照)。


例 10–8 ethers データベース内のエントリ


8:0:20:1:40:16  fayoum
8:0:20:1:40:15  nubian 
8:0:20:1:40:7   sahara    # This is a comment
8:0:20:1:40:14  tenere 

その他のネットワークデータベース

残りのネットワークデータベースについては、編集が必要になることはほとんどありません。

networks データベース

networks データベースは、ネットワーク名をネットワーク番号と関連付けて、いくつ かのアプリケーションが番号ではなく名前を使用または表示できるようにします。networks データベースは、/etc/inet/networks ファイルの中の情報に基づいています。このデータベースには、このネットワークがルーターを介して接続されるすべてのネットワークの名前が含まれています。

初期 networks データベースは、Oracle Solaris インストールプログラムが設定します。ただし、既存のネットワークトポロジに新たなネットワークを追加する場合は、このデータベースを更新する必要があります。

/etc/inet/networks の構文についての詳細は、networks(4) のマニュアルページに含まれています。基本形式は、次のとおりです。


network-name  network-number  nickname(s)  #comment
network-name

ネットワークの公式名

network-number

ISP またはインターネットレジストリが割り当てた番号

nickname

そのネットワークの別名

#comment

ファイルのエントリに追加する注釈

networks ファイルは必要に応じて更新する必要があります。netstat プログラムは、このデータベース内の情報を使用して状態テーブルを作成します。

次のコード例に、/etc/networks ファイルのサンプルを示します。


例 10–9 /etc/networks ファイル


#ident	"@(#)networks	1.4	92/07/14 SMI"	/* SVr4.0 1.1	*/
#
# The networks file associates Internet Protocol (IP) network
# numbers with network names. The format of this file is:
#
# 	network-name		 	 network-number		 	 nicnames . . .

# The loopback network is used only for intra-machine communication
loopback		 	 127

#
# Internet networks
#
arpanet     10	   arpa  # Historical
#
# local networks

eng   192.168.9 #engineering
acc   192.168.5 #accounting
prog  192.168.2 #programming

protocols データベース

protocols データベースには、システムにインストールされている TCP/IP プロトコルとプロトコル番号の一覧が含まれています。このデータベースは、Oracle Solaris インストールプログラムによって自動的に作成されます。このファイルの管理が必要になることは、ほとんどありません。

このデータベースの詳しい構文については、protocols(4) のマニュアルページを参照してください。次のコード例に、/etc/inet/protocols ファイルのサンプルを示します。


例 10–10 /etc/inet/protocols ファイル


#
# Internet (IP) protocols
#
ip    0   IP    # internet protocol, pseudo protocol number
icmp  1   ICMP  # internet control message protocol
tcp   6   TCP   # transmission control protocol
udp  17   UDP   # user datagram protocol

services データベース

services データベースは、TCP と UDP サービスの名前および既知のポート番号の一覧を含んでいます。このデータベースは、ネットワークサービスを呼び出すプログラムにより使用されます。Oracle Solaris インストールプログラムは、services データベースを自動的に作成します。通常は、このデータベースの管理作業を必要としません。

構文についての詳細は、services(4) のマニュアルページを参照してください。次に、典型的な /etc/inet/services ファイルからの抜粋を示します。


例 10–11 /etc/inet/サービス ファイル


#
# Network services
#
echo      7/udp
echo      7/tcp
echo      7/sctp6
discard   9/udp     sink null
discard   11/tcp
daytime   13/udp
daytime   13/tcp
netstat   15/tcp
ftp-data  20/tcp
ftp       21/tcp
telnet    23/tcp
time      37/tcp    timeserver
time      37/udp    timeserver
name      42/udp    nameserver
whois     43/tcp    nickname

Oracle Solaris の経路制御プロトコル

この節では、Oracle Solaris 10 でサポートされている 2 つの経路制御プロトコルについて説明します。それは、経路制御情報プロトコル (RIP) および ICMP ルーター発見 (RDISC) です。RIP と RDISC は、どちらも標準 TCP/IP プロトコルです。Oracle Solaris 10 で使用できる経路制御プロトコルの一覧については、表 5–1 および表 5–2 を参照してください。

経路制御情報プロトコル (RIP)

RIP は、システムのブート時に自動的に起動する経路制御デーモンである in.routed によって実行されます。s オプションを指定した in.routed をルーターで実行すると、in.routed は、到達可能なすべてのネットワークへのルートをカーネルルーティングテーブルに組み入れ、すべてのネットワークインタフェースを経由する「到達可能性」を通知します。

ホストで q オプションを指定して実行すると、in.routed は経路制御情報を引き出しますが、到達可能性の通知は行いません。ホストでは、経路制御情報は次の 2 つの方法で抽出できます。

ICMP ルーター発見 (RDISC) プロトコル

ホストは、ルーターから経路制御情報を取得するときに、RDISC を使用します。したがって、ホストが RDISC を実行しているとき、各ルーターは、経路制御情報の交換のために、RIP などのような別のプロトコルも実行している必要があります。

RDISC は、ルーターとホストの両方で実行される in.routed によって実装されます。ホストでは、in.routed は RDISC を使用して、RDISC によってホストに通知を行うルーターからデフォルトのルートを検出します。in.routed は、ルーターで RDISC を使用して、直接接続されているネットワーク上のホストにデフォルトのルートを通知します。in.routed(1M) のマニュアルページと gateways(4) のマニュアルページを参照してください。

ネットワーククラス


注 –

多くの旧式ネットワークは今もクラスをベースにしていますが、クラスベースのネットワーク番号は IANA から取得できなくなりました。


この節では、IPv4 ネットワーククラスについて詳しく説明します。32 ビットの IPv4 アドレス空間は、ネットワーク部のビット数が多かったり少なかったりするなど、クラスによって使い方が異なります。3 つのクラスとは、クラス A、クラス B、クラス C です。

クラス A ネットワーク番号

クラス A ネットワーク番号は、IPv4 アドレスの最初の 8 ビットを「ネットワーク部」として使用します。残りの 24 ビットは、次の図のように IPv4 アドレスのホスト部を含んでいます。

図 10–3 クラス A アドレスのバイト割り当て

この図では、 32 ビットの IPv4 クラス A アドレスでは、0〜7 ビットがネットワーク部で、残りの 24 ビットはホスト部であることを示しています。

クラス A ネットワーク番号の最初のバイトに割り当てられる値は 0 - 127 の範囲です。IPv4 アドレス 75.4.10.4 について考えてみます。最初のバイトの 75 という値は、このホストがクラス A ネットワーク内にあることを示しています。残りのバイトの 4.10.4 はホストアドレスを形成します。クラス A 番号の最初のバイトだけが IANA で登録されます。残りの 3 バイトをどのように使用するかは、そのネットワーク番号の所有者の自由です。クラス A のネットワークとして存在可能なのは 127 個だけです。この範囲内の各番号が、それぞれ最大 16,777,214 個のホストを収容できます。

クラス B ネットワーク番号

クラス B ネットワーク番号は、16 ビットをネットワーク番号に、16 ビットをホスト番号に使用します。クラスB ネットワーク番号の最初のバイトは、128 - 191 の範囲です。番号 172.16.50.56 では、最初の 2 バイト 172.16 が IANA で登録され、ネットワークアドレスを構成します。残りの 2 バイトの 50.56 にはホストアドレスが含まれ、これはネットワーク番号の所有者が任意に割り当てることができます。次の図に、クラス B のアドレスを示します。

図 10–4 クラス B アドレスのバイト割り当て

この図では、 32 ビットの IPv4 クラス B アドレスでは、0〜15 ビットがネットワーク部で、残りの 16 ビットはホスト部であることを示しています。

クラス B は、ネットワーク上に多数のホストを持つ組織で一般的に使用されます。

クラス C ネットワーク番号

クラス C ネットワーク番号は、24 ビットをネットワーク番号に、8 ビットをホスト番号に使用します。クラス C ネットワーク番号は、ホストが少ない (最大で 254 の) ネットワークで使用されます。クラス C ネットワーク番号は、IPv4 アドレスの最初の 3 バイトを占めます。ネットワーク番号の所有者が自由に割り当てることができるのは、4 番目のバイトだけです。次の図に、クラス C アドレスのバイトを示します。

図 10–5 クラス C アドレスのバイト割り当て

この図では、 32 ビットの IPv4 クラス C アドレスでは、0〜23 ビットがネットワーク部で、残りの 8 ビットはホスト部であることを示しています。

クラス C ネットワーク番号の最初のバイトは、192 - 223 の範囲です。2 番目と 3 番目のバイトは、それぞれ 1 - 255 の範囲です。クラス C アドレスは通常、192.168.2.5 のようになります。最初の 3 バイト 192.168.2 はネットワーク番号です。この例の最後のバイト、つまり 5 がホスト番号です。