ネットワーク上の各マシンは、以下に示す TCP/IP 構成ファイルとネットワークデータベースから自己の TCP/IP 構成情報を入手します。
/etc/hostname.interface ファイル
/etc/nodename ファイル
/etc/defaultdomain ファイル
/etc/defaultrouter ファイル (オプション)
hosts データベース
ipnodes データベース
netmasks データベース (オプション)
Solaris インストールプログラムは、インストール処理の一環として上記のファイルを作成します。これらのファイルは、この「TCP/IP 構成ファイル」の節の説明に従って手作業で編集することもできます。hosts データベースと netmasks データベースは、Solaris ネットワークで使用できるネームサービスが読み取るネットワークデータベースのうちの 2 つです。ネットワークデータベースの概念については、ネットワークデータベースと nsswitch.conf ファイルで詳しく説明します。ipnodes ファイルについての詳細は、/etc/inet/ipnodes ファイルを参照してください。
このファイルは、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 インストールプログラムは、追加のファイルは作成しません。
たとえば、図 4–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 です。
IPv6 は初期設定で /etc/hostname6.interface ファイルを使用し、IPv4 における /etc/hostname.interface と同様の方法で、ネットワークインタフェースを自動的に定義します。/etc/hostname. ファイル または /etc/hostname6. ファイルの少なくともどちらか一方が、ローカルマシン上に存在する必要があります。これらのファイルは、Solaris インストールプログラムで生成されます。ファイル名については、「interface」を主ネットワークインタフェースのデバイス名で置き換えます。/etc/hostname6.interface ファイルについての詳細は、IPv6 ネットワークインタフェース構成ファイルを参照してください。
このファイルにはエントリが 1 つ入っています。それは、ローカルマシンのホスト名です。たとえば、マシン timbuktu では、/etc/nodename ファイルには timbuktu というエントリが入ります。
このファイルにはエントリが 1 つ入っています。それは、ローカルホストのネットワークが属している管理ドメインの完全指定のドメイン名です。ネットワーク管理者は、この名前を Solaris インストールプログラムに指示したり、また後日にこのファイルを編集することができます。
図 4–1 では、ネットワークはドメイン deserts.worldwide に属しており、このドメインは .com ドメインとして分類されています。したがって、/etc/defaultdomain には deserts.worldwide.com というエントリが入ります。ネットワークドメインについての詳細は、『 Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照してください。
このファイルには、直接ネットワークに接続されている各ルーターについてのエントリが入っています。このエントリは、ネットワーク間のルーターとして機能するネットワークインタフェースの名前です。
図 4–1 で、ネットワークインタフェース le1 は、マシン timbuktu をネットワーク 192.9.201 に接続しています。このインタフェースには、timbuktu-201 という一意な名前が付いています。したがって、ネットワーク 192.9.201 にあってローカルファイルモードで構成されているマシンについては、/etc/defaultrouter に timbuktu-201 という名前がエントリとして入ります。
hosts データベースには、ネットワーク上のマシンの IPv4 アドレスとホスト名が入っています。NIS、NIS+、DNS (またはネームサービスとしての LDAP) のどれかのネームサービスを使用している場合は、hosts データベースは、ホスト情報用として指定されているデータベースに格納されます。たとえば、NIS+ を実行するネットワークでは、hosts データベースはホストテーブルに格納されます。
ネームサービスとしてローカルファイルを使用している場合は、hosts データベースは /etc/inet/hosts ファイルに格納されます。このファイルには、一次ネットワークインタフェースのホスト名と IPv4 アドレス、マシンに備わっている他のネットワークインタフェース、このマシンが検査する必要がある他のネットワークアドレスが入っています。
BSD ベースのオペレーティングシステムとの互換性を確保するために、/etc/hosts ファイルは /etc/inet/hosts へのシンボリックリンクになっています。
/etc/inet/hosts ファイルには、次のような基本構文を使用します。構文についての詳細は、hosts(4) のマニュアルページを参照してください。
IPv4-address hostname [nicknames] [#comment]
IPv4-address には、ローカルホストが認識する必要のある各インタフェースの IPv4 アドレスが入ります。
hostname には、設定時にマシンに割り当てたホスト名と、ローカルホストが認識しなければならない増設ネットワークインタフェースに割り当てたホスト名が入ります。
[nickname] は、ホストのニックネームが入ります (省略可能)。
[# comment] は、コメントを入れます (省略可能)。
Solaris インストールプログラムを実行すると、プログラムは初期 /etc/inet/hosts ファイルを設定します。このファイルには、ローカルホストにとって必要最小限のエントリが入っています。エントリには、ループバックアドレス、ホストの IPv4 アドレス、ホスト名が入っています。
たとえば、図 4–1 に示したマシン tenere については、Solaris インストールプログラムは次のような /etc/inet/hosts ファイルを作成します。
127.0.0.1 localhost loghost #loopback address 192.9.200.3 tenere #host name |
例 5–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 ファイルに追加する必要があります。ルーターとマルチホームホストの設定についての詳細は、ルーターの構成を参照してください。
例 5–2 は、図 4–1 に示したマシン 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 をルーターとして接続します。
NIS、NIS+、DNS (またはネームサービスとしての LDAP) の各ネームサービスは、ホスト名とアドレスを 1 つまたは複数のサーバーで維持します。これらのサーバーは、各サーバーのネットワーク上のすべてのホストとルーター (もしあれば) に関する情報を含む hosts データベースを保持しています。これらのサービスの詳細については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』と『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』を参照してください。
ローカルファイルをネームサービスとして使用するネットワークでは、ローカルファイルモードで実行されているマシンは、各自の /etc/inet/hosts ファイルを調べて、ネットワーク上の他のマシンの IPv4 アドレスとホスト名を入手します。したがって、このマシンの /etc/inet/hosts ファイルには以下の事項が含まれている必要があります。
ループバックアドレス
ローカルマシン (一次ネットワークインタフェース) の IPv4 アドレスとホスト名
このマシンに接続している増設ネットワークインタフェース (もしあれば) の IPv4 アドレスとホスト名
ローカルネットワーク上のすべてのホストの IPv4 アドレスとホスト名
このマシンが認識する必要のあるルーター (もしあれば) の IPv4 アドレスとホスト名
このマシンでホスト名を使用して参照したいマシンの IPv4 アドレス
次のコード例は、マシン tenere の /etc/inet/hosts ファイルを示しています。このマシンはローカルファイルモードで実行されます。このファイルには、192.9.200 ネットワーク上のすべてのマシンの IPv4 アドレスとホスト名が含まれているという点に注意してください。また、このファイルにはインタフェース名 timbuktu-201 とその IPv4 アドレスが含まれています。このインタフェースは 192.9.200 ネットワークを 192.9.201 ネットワークに接続しています。
ネットワーククライアントとして構成されているマシンは、ローカル /etc/inet/hosts ファイルから、自己のループバックアドレスと IPv4 アドレスを入手します。
ipnodes データベースには、ネットワーク上の各マシンの IPv6 アドレスとホスト名が格納されています。NIS、NIS+、DNS (またはネームサービスとしての LDAP) のどれかのネームサービスを使用している場合は、ipnodes データベースは、ホスト情報用として指定されているデータベースに格納されます。たとえば、NIS+ を実行しているネットワークでは、ipnodes データベースはホストテーブル内に保持されます。ipnodes データベースについての詳細は、/etc/inet/ipnodes ファイルを参照してください。
ネットワーク構成の一環として netmasks データベースを編集する必要があるのは、ネットワークをサブネット化してある場合だけです。netmasks データベースは、各ネットワークとそれに対応するサブネットマスクのリストで構成されています。
サブネットを作成するときは、新規の各ネットワークはそれぞれ独立した物理ネットワークであることが必要です。単一の物理ネットワークにサブネット化を適用することはできません。
サブネット化は、限られた 32 ビット IPv4 アドレス指定空間を最大限に活用し、大規模ネットワークでのルーティングテーブルの大きさを減らすための方法の 1 つです。どのようなアドレスクラスの場合も、サブネット化によってホストアドレス空間の一部をネットワークアドレスに割り当て、ネットワーク数を増やすことができます。新規のネットワークアドレスに割り当てられるホストアドレス空間の部分を、サブネット番号と言います。
IPv4 アドレス空間を有効活用できることの他に、サブネット化には管理上の利点もいくつかあります。ネットワークの数が増えるに伴って、ルーティングはきわめて複雑になってきます。たとえば、小規模の組織なら、個々のローカルネットワークにクラス C の番号を割り当てることができます。しかし、組織が成長するにつれて、多数の異なるネットワーク番号を管理することは、非常に複雑な作業になってきます。このような場合の改善策の 1 つとして、組織内の主要部門に対してそれぞれクラス B のネットワーク番号を割り当てる方法が考えられます。たとえば、エンジニアリング部門に対して 1 つ、オペレーション部門に対して 1 つというように番号を割り当てます。その上で、サブネット化によって得られたネットワーク番号を使用して、個々のクラス B ネットワークをさらに多くのネットワークに分割できます。これによって、ルーター間でやりとりしなければならないルーティング情報の量も減少します。
サブネット化工程の一環として、ネットワーク全体のネットマスクを選択する必要があります。ネットマスクは、ホストアドレス空間の中で、どの位置の何個のビットがサブネット番号を表し、どの位置の何個のビットがホスト番号を表すかを決定します。完全な 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 ビットをホスト番号用として確保する必要があります。
ネットワークで NIS、NIS+、または LDAP を実行する場合は、これらのネームサービスを提供するサーバーは netmasks データベースを保持しています。ローカルファイルをネームサービスとして使用するネットワークの場合は、この情報は /etc/inet/netmasks ファイル内に格納されます。
BSD ベースのオペレーティングシステムとの互換性を確保するために、/etc/netmasks ファイルは /etc/inet/netmasks へのシンボリックリンクになっています。
次のコード例に示すのは、クラス 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 ファイルに、ネットワーク番号の記号名を入力することもできます。そうすれば、ネットワーク番号の代わりにこれらのネットワーク名を、コマンドへのパラメータとして使用できます。