Solaris のシステム管理 (第 3 巻)

TCP/IP 構成ファイル

ネットワーク上の各マシンは、以下に示す TCP/IP 構成ファイルとネットワークデータベースから自己の TCP/IP 構成情報を入手します。

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

/etc/hostname.interface ファイル

このファイルは、IPv4 を使用するローカルホスト上のネットワークインタフェースを定義します。ローカルマシンには、/etc/hostname.interface ファイルが少なくとも 1 つ必要です。このファイルは、Solaris インストールプログラムが作成します。ファイル名中の interface には、一次ネットワークインタフェースのデバイス名が入ります。


注 -

Solaris ソフトウェアの初期インストール後に、システムに新しいネットワークインタフェースを追加する場合は、そのインタフェースについて /etc/hostname.interface ファイルを作成し、インタフェースの IP アドレスを /etc/inet/hosts ファイルに追加し、-r オブションでシステムをリブートする必要があります。「ローカルファイルモードの場合のホストの構成方法」で説明している手順を参照してください。また、Solaris ソフトウェアが新しいネットワークインタフェースを認識し、使用できるようにするには、インタフェースのデバイスドライバが適切なディレクトリに読み込まれるようにする必要があります。新しいネットワークインタフェースに付属しているマニュアルを参照し、正しいインタフェース名とデバイスドライバの使用方法を確認してください。


このファイルにはエントリが 1 つだけ入っています。それは、ネットワークインタフェースに結び付いているホスト名または IPv4 アドレスのどちらかです。たとえば、tenere というマシンの一次ネットワークインタフェースが smc0 であるとすると、/etc/hostname.interface ファイルの名前は /etc/hostname.smc0 となり、このファイルには tenere というエントリが入っています。

複数のネットワークインタフェースのためのファイル

マシンが複数のネットワークインタフェースを持っている場合は、2 番目以降のネットワークインタフェース用の /etc/hostname.interface ファイルを、ネットワーク管理者が追加作成する必要があります。これらのファイルはテキストエディタを使用して作成します。Solaris インストールプログラムは、追加のファイルは作成しません。

たとえば、図 6-1 に示したマシン timbuktu について考えてみましょう。このマシンは 2 つのネットワークインタフェースを持っており、ルーターとして動作します。一次ネットワークインタフェース le0 は、ネットワーク 192.9.200 に接続されています。その IP アドレスは 192.9.200.70 で、ホスト名は timbuktu です。Solaris 一次ネットワークインタフェース用として、/etc/hostname.le0 というファイルを作成し、そのファイルにホスト名 timbuktu を入れます。

第 2 のネットワークインタフェースは le1 で、これはネットワーク 192.9.201 に接続されています。このインタフェースは物理的にはマシン timbuktu にインストールされていますが、別の IPv4 アドレスを持つ必要があります。したがって、ネットワーク管理者が、このインタフェース用に /etc/hostname.le1 ファイルを作成する必要があります。このファイルに入れるエントリは、ルーター名の timbuktu-201 です。

/etc/hostname6.interface ファイル

IPv6 は初期設定で /etc/hostname6.interface ファイルを使用し、IPv4 における /etc/hostname.interface と同様の方法で、ネットワークインタフェースを自動的に定義します。少なくとも 1 つの /etc/hostname. または /etc/hostname6. がローカルマシンになければなりません。Solaris のインストールプログラムは自動的にこれらのファイルを作成します。ファイル名については、「interface」を主ネットワークインタフェースのデバイス名で置き換えます。/etc/hostname6.interface ファイルについての詳細は、「IPv6 ネットワークインタフェース構成ファイル」を参照してください。

/etc/nodename ファイル

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

/etc/defaultdomain ファイル

このファイルにはエントリが 1 つ入っています。それは、ローカルホストのネットワークが属している管理ドメインの完全指定のドメイン名です。ネットワーク管理者は、この名前を Solaris インストールプログラムに指示したり、また後日にこのファイルを編集することができます。

図 6-1 では、ネットワークはドメイン deserts.worldwide に属しており、このドメインは .com ドメインとして分類されています。したがって、/etc/defaultdomain には deserts.worldwide.com というエントリが入ります。ネットワークドメインについての詳細は、『Solaris ネーミングの管理』を参照してください。

/etc/defaultrouter ファイル

このファイルには、直接ネットワークに接続されている各ルーターについてのエントリが入っています。このエントリは、ネットワーク間のルーターとして機能するネットワークインタフェースの名前です。

図 6-1 で、ネットワークインタフェース le1 は、マシン timbuktu をネットワーク 192.9.201 に接続しています。このインタフェースには、timbuktu-201 という一意な名前が付いています。したがって、ネットワーク 192.9.201 にあってローカルファイルモードで構成されているマシンについては、/etc/defaultroutertimbuktu-201 という名前が エントリとして入ります。

hosts データベース

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

ネームサービスとしてローカルファイルを使用している場合は、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 ファイル

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

たとえば、図 6-1 に示したマシン tenere については、Solaris インストールプログラムは次のような /etc/inet/hosts ファイルを作成します。


例 7-1 マシン ahaggar 用の /etc/inet/hosts ファイル


127.0.0.1     localhost         loghost    #loopback address
192.9.200.3   tenere                      #host name

ループバックアドレス

例 7-1 では、IPv4 アドレス 127.0.0.1 はループバックアドレスです。ループバックアドレスはローカルマシンが使用する予約済みネットワークインタフェースで、これによりプロセス間通信が可能になり、ローカルマシンは自分自身にパケットを送ることができます。ifconfig コマンド」で説明するように、ループバックアドレスは、構成とテストのために ifconfig コマンドにより使用されます。TCP/IP ネットワーク上のすべてのマシンは、IP アドレス 127.0.0.1 をローカルホスト用に使用する必要があります。

ホスト名

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

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

マシンには複数のネットワークインタフェースを持つものがあり、これらはルーターまたはマルチホームホストとなります。マシンに接続される増設ネットワークインタフェースごとに、専用の IPv4 アドレスとそれに割り当てる名前が必要です。ルーターまたはマルチホームホストを構成するときは、この情報を手作業でルーターの /etc/inet/hosts ファイルに追加する必要があります。(ルーターとマルチホームホストの設定についての詳細は、「ルーターの構成」を参照してください)。

例 7-2 は、図 6-1 に示したマシン timbuktu 用の /etc/inet/hosts ファイルです。


例 7-2 マシン timbuktu 用の /etc/inet/hosts ファイル


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

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

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

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

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

ローカルファイルをネームサービスとして使用するネットワークでは、ローカルファイルモードで実行されているマシンは、各自の /etc/inet/hosts ファイルを調べて、ネットワーク上の他のマシンの IPv4 アドレスとホスト名を入手します。したがって、/etc/inet/hosts ファイルには以下の事項が含まれている必要があります。

次のコード例に、ローカルファイルモードで実行されるマシンである tenere/etc/inet/hosts ファイルを示しています。このファイルには、192.9.200 ネットワーク上のすべてのマシンの IPv4 アドレスとホスト名が含まれているという点に注意してください。また、192.9.200 ネットワークを 192.9.201 ネットワークに接続するためのネットワークインタフェースの IPv4 アドレスと、インタフェース名 timbuktu-201 も含まれています。

ネットワーククライアントとして構成されているマシンは、ローカル /etc/inet/hosts ファイルから、自己のループバックアドレスと IPv4 アドレスを入手します。

図 7-1 ローカルファイルモードで実行されるマシン用の /etc/inet/hosts ファイル

Graphic

ipnodes データベース

ipnodes データベースには、ネットワーク上の各マシンの IPv6 アドレスとホスト名が格納されています。NIS、NIS+、DNS などのネームサービスを使用している場合、ipnodes データベースは、ホスト情報用に指定されたデータベース内に保持されます。たとえば、NIS+ を実行しているネットワークでは、ipnodes データベースはホストテーブル内に保持されます。ipnodes データベースについての詳細は、/etc/inet/ipnodes ファイル」を参照してください。

netmasks データベース

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


注 -

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


サブネット化とは

サブネット化は、限られた 32 ビット IPv4 アドレス指定空間を最大限に活用し、大規模ネットワークでのルーティングテーブルの大きさを減らすための方法の 1 つです。どのようなアドレスクラスの場合も、サブネット化によってホストアドレス空間の一部をネットワークアドレスに割り当て、ネットワーク数を増やすことができます。新規のネットワークアドレスに割り当てられるホストアドレス空間の部分を、サブネット番号と言います。

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

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

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

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

「ネットワーク番号の管理」で説明したように、32 ビットの IP アドレスは、ネットワーク部とホスト部で構成されています。32 ビットは 4 個のバイトに分かれます。各バイトは、ネットワーククラスに応じて、ネットワーク番号かホスト番号のどちらかに割り当てられます。

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

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

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

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

ネットマスクを説明するには、2 進数表現の視点から見るのが最も簡単です。2 進数と 10 進数は計算機を使用して換算できます。以下の例では、ネットマスクの 10 進数形式と 2 進数形式の両方を示してあります。

ネットマスク 255.255.255.0 を IPv4 アドレス 129.144.41.101 に適用した場合、結果の IPv4 アドレスは 129.144.41.0 になります。

129.144.41.101 & 255.255.255.0 = 129.144.41.0

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

10000001.10010000.00101001.01100101 (IPv4 アドレス)

11111111.11111111.11111111.00000000 (IPv4 ネットマスク)

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

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

255.255.192.0

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

11111111.11111111.1100000.00000000

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

/etc/inet/netmasks ファイル

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


注 -

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


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


例 7-3 クラス 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
 129.144.0.0  255.255.255.0

このファイルが存在しない場合は、次の構文を使用して作成してください。


network-number	netmask-number

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

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

例:


128.78.0.0	    255.255.248.0

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