この章では、TCP/IP 構成ファイルの種類、目的、ファイルエントリのフォーマットなどについて説明する、TCP/IP ネットワークの参照情報を提供します。また、既存のネットワークデータベースについても詳しく説明します。
さらにこの章では、定義されているネットワーククラスとサブネット番号に基づいて、IPv4 アドレスが構成される仕組みについても説明します。
ネットワーク上の各マシンは、以下に示す 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 インストールプログラムは、追加のファイルは作成しません。
たとえば、図 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 です。
IPv6 は初期設定で /etc/hostname6.interface ファイルを使用し、IPv4 における /etc/hostname.interface と同様の方法で、ネットワークインタフェースを自動的に定義します。少なくとも 1 つの /etc/hostname. または /etc/hostname6. がローカルマシンになければなりません。Solaris のインストールプログラムは自動的にこれらのファイルを作成します。ファイル名については、「interface」を主ネットワークインタフェースのデバイス名で置き換えます。/etc/hostname6.interface ファイルについての詳細は、「IPv6 ネットワークインタフェース構成ファイル」を参照してください。
このファイルにはエントリが 1 つ入っています。それは、ローカルマシンのホスト名です。たとえば、マシン timbuktu では、/etc/nodename ファイルには timbuktu というエントリが入ります。
このファイルにはエントリが 1 つ入っています。それは、ローカルホストのネットワークが属している管理ドメインの完全指定のドメイン名です。ネットワーク管理者は、この名前を Solaris インストールプログラムに指示したり、また後日にこのファイルを編集することができます。
図 6-1 では、ネットワークはドメイン deserts.worldwide に属しており、このドメインは .com ドメインとして分類されています。したがって、/etc/defaultdomain には deserts.worldwide.com というエントリが入ります。ネットワークドメインについての詳細は、『Solaris ネーミングの管理』を参照してください。
このファイルには、直接ネットワークに接続されている各ルーターについてのエントリが入っています。このエントリは、ネットワーク間のルーターとして機能するネットワークインタフェースの名前です。
図 6-1 で、ネットワークインタフェース le1 は、マシン timbuktu をネットワーク 192.9.201 に接続しています。このインタフェースには、timbuktu-201 という一意な名前が付いています。したがって、ネットワーク 192.9.201 にあってローカルファイルモードで構成されているマシンについては、/etc/defaultrouter に timbuktu-201 という名前が エントリとして入ります。
hosts データベースには、ネットワーク上のマシンの IPv4 アドレスとホスト名が入っています。NIS、NIS+、DNS のどれかのネームサービスを使用している場合は、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 アドレス、ホスト名) が入っています。
たとえば、図 6-1 に示したマシン tenere については、Solaris インストールプログラムは次のような /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 ファイルです。
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 の各ネームサービスは、ホスト名とアドレスを 1 つまたは複数のサーバーで維持します。これらのサーバーは、各サーバーのネットワーク上のすべてのホストとルーター (もしあれば) に関する情報を含む hosts データベースを保持しています。これらのサービスについては、『Solaris ネーミングの管理』を参照してください。
ローカルファイルをネームサービスとして使用するネットワークでは、ローカルファイルモードで実行されているマシンは、各自の /etc/inet/hosts ファイルを調べて、ネットワーク上の他のマシンの IPv4 アドレスとホスト名を入手します。したがって、/etc/inet/hosts ファイルには以下の事項が含まれている必要があります。
ループバックアドレス
ローカルマシン (一次ネットワークインタフェース) の IPv4 アドレスとホスト名
このマシンに接続している増設ネットワークインタフェース (もしあれば) の IPv4 アドレスとホスト名
ローカルネットワーク上のすべてのホストの IPv4 アドレスとホスト名
このマシンが認識する必要のあるルーター (もしあれば) の IPv4 アドレスとホスト名
このマシンでホスト名を使用して参照したいマシンの IPv4 アドレス
次のコード例に、ローカルファイルモードで実行されるマシンである tenere の /etc/inet/hosts ファイルを示しています。このファイルには、192.9.200 ネットワーク上のすべてのマシンの IPv4 アドレスとホスト名が含まれているという点に注意してください。また、192.9.200 ネットワークを 192.9.201 ネットワークに接続するためのネットワークインタフェースの IPv4 アドレスと、インタフェース名 timbuktu-201 も含まれています。
ネットワーククライアントとして構成されているマシンは、ローカル /etc/inet/hosts ファイルから、自己のループバックアドレスと IPv4 アドレスを入手します。
ipnodes データベースには、ネットワーク上の各マシンの IPv6 アドレスとホスト名が格納されています。NIS、NIS+、DNS などのネームサービスを使用している場合、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+ を実行する場合は、これらのネームサービスを提供するサーバーは 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 ファイルに、ネットワーク番号の記号名を入力することもできます。そうすれば、ネットワーク番号の代わりにこれらのネットワーク名を、コマンドへのパラメータとして使用できます。
ネットワークデータベースは、ネットワークを構成するために必要な情報を提供するファイルです。ネットワークデータベースには次のものがあります。
hosts
ipnodes
netmasks
ethers
bootparams
protocols
services
networks
構成工程の一環として、ネットワークをサブネット化する場合は、hosts データベースと netmasks データベースを編集します。マシンをネットワーククライアントとして構成するには、bootparams と ethers の 2 つのネットワークデータベースを使用します。残りのデータベースはオペレーティングシステムが使用するもので、編集が必要になることはほとんどありません。
ネットワークデータベースではありませんが、nsswitch.conf ファイルも、関連のネットワークデータベースとともに構成する必要があります。nsswitch.conf は、特定のマシンに、NIS、NIS+、DNS、ローカルファイルのどのネームサービスを使用するかを指定します。
ネットワークデータベースがとる形式は、ネットワーク用として選択するネームサービスの種類によって異なります。たとえば、hosts データベースには、少なくとも、ローカルマシンとそのマシンに直接接続されているネットワークインタフェースのホスト名と IPv4 アドレスだけは入っています。しかし、ネットワークで使用するネームサービスの種類によっては、その他の IPv4 アドレスとホスト名も hosts データベースに入ることがあります。
DNS のブートファイルとデータファイルは、直接的にはネットワークデータベースに対応していません。
図 7-2 に、これらのネームサービスにより使用される hosts データベースの形式を示します。
表 7-1 に、ネットワークデータベースと、各ネットワークデータベースに対応するローカルファイル、NIS+ および NIS のネームサービスファイルを示します。
表 7-1 ネットワークデータベースと対応するネームサービスファイル
ネットワークデータベース |
ローカルファイル |
NIS+ のテーブル |
NIS のマップ |
---|---|---|---|
/etc/inet/hosts |
hosts.org_dir |
hosts.byaddr hosts.byname |
|
ipnodes |
/etc/inet/ipnodes |
ipnodes.org_dir |
ipnodes.byaddr ipnodes.byname |
/etc/inet/netmasks |
netmasks.org_dir |
netmasks.byaddr |
|
/etc/ethers |
ethers.org_dir |
ethers.byname ethers.byaddr |
|
/etc/bootparams |
bootparams.org_dir |
bootparams |
|
/etc/inet/protocols |
protocols.org_dir |
protocols.byname protocols.bynumber |
|
/etc/inet/services |
services.org_dir |
services.byname |
|
/etc/inet/networks |
networks.org_dir |
networks.byaddr networks.byname |
本書では、ローカルファイルをネームサービスとして使用するネットワークで使用されるものとして、ネットワークデータベースの説明を進めます。hosts データベースについては、「hosts データベース」を、ipnodes データベースについては、「/etc/inet/ipnodes ファイル」を、netmasks データベースについては、「netmasks データベース」を、NIS、DNS、NIS+ でのネットワークデータベースの対応付けについては、『Solaris ネーミングの管理』を参照してください。
/etc/nsswitch.conf ファイルは、ネットワークデータベースの検索順序を定義します。Solaris インストールプログラムは、インストール中にネットワーク管理者が指定するネームサービスに基づいて、ローカルマシン用のデフォルトの /etc/nsswitch.conf ファイルを作成します。"None" オプションを指定して、ローカルファイルをネームサービスとして使用することを指示した場合は、nsswitch.conf ファイルは例 7-4 のようになります。
# /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 フィールドには、オペレーティングシステムが検索するさまざまの種類のデータベースを指定できます。たとえば、passwd や aliases などのようにユーザーに影響を与えるデータベースでも、またネットワークデータベースでも指定できます。ネットワークデータベースの場合の name-service-to-search パラメータの値は、files、nis、nis+ のどれかです (hosts データベースの場合は、検索するネームサービスとして dns も値に指定できます)。nis+ と files のように、複数のネームサービスを指定することもできます。
例 7-4 にサーチオプションとして示されているのは、files だけです。したがって、ローカルマシンは、/etc ディレクトリと /etc/inet ディレクトリに入っているファイルから、ネットワークデータベース情報のほか、セキュリティと自動マウントに関する情報を入手します。
/etc ディレクトリには、Solaris インストールプログラムが作成した nsswitch.conf ファイルが入っています。そのほかに、次のネームサービス用のテンプレートファイルも入っています。
nsswitch.files
nsswitch.nis
nsswitch.nis+
あるネームサービスから別のネームサービスに変更したい場合は、対応するテンプレートを nsswitch.conf にコピーすることができます。また、nsswitch.conf ファイルを選択的に編集して、個々のデータベースを見つけるために検索するデフォルトのネームサービスを変更することができます。
たとえば、NIS を実行するネットワークでは、ネットワーククライアントについての nsswitch.conf ファイルの変更が必要な場合があります。bootparams データベースと ethers データベースの検索順序では、最初のオプションとして files、次に nis が指定されている必要があります。次のコード例に、正しい検索順序を示します。
## /etc/nsswitch.conf:# . . passwd: files nis group: file 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 ネーミングの管理』 を参照してください。
bootparams データベースには、ネットワーククライアントモードでブートするように構成されているとマシンが使用する情報が入っています。ネットワーククライアントを持つネットワークの場合は、このデータベースの編集が必要になります。(手順については、「ネットワーククライアントの構成」を参照してください)。このデータベースは、/etc/bootparams ファイルに入力した情報をもとにして構築されます。
このデータベースの構文についての詳細は、bootparams(4) のマニュアルページで説明されています。基本構文は次のとおりです。
machine-name file-key-server-name:pathname |
個々のディスクレスまたはネットワーククライアントマシンについて、エントリが 1 つずつあります。各エントリに入っている情報は、クライアント名、キーのリスト、サーバー名、パス名です。
各エントリの最初の項目は、クライアントマシンの名前です。その次は、キー、サーバー名、パス名をタブ文字で区切ったリストです。最初の項目以外は、すべてオプションです。このデータベースには、すべてのクライアントに一致するワイルドカードエントリを含めることができます。次に例を示します。
myclient root=myserver : /nfsroot/myclient ¥ swap=myserver : /nfsswap//myclient ¥ dump=myserver : /nfsdump/myclient |
この例の dump=: は、ダンプファイルを捜さないようにクライアントホストに指示します。
クライアントをサポートするように bootparams データベースを編集するときには、ほとんどの場合、ワイルドカードエントリを使用する方が便利です。次のようにしてワイルドカードエントリを使用します。
* root=server:/path dump=: |
アスタリスク (*) ワイルドカードは、このエントリが、bootparams データベース内で明示的に指定されていないすべてのクライアントに適用されることを示します。
ethers データベースは、/etc/ethers ファイルに入力した情報をもとにして構築されます。このデータベースは、ホスト名を Ethernet アドレスに関連付けます。ethers ネットワークの作成が必要になるのは、RARP デーモンを実行する場合、つまりネットワーククライアントを構成する場合だけです。
RARP は、このファイルを使用して、Ethernet アドレスを IP アドレスにマップします。RARP デーモン in.rarpd を実行するときは、ethers ファイルを設定し、このデーモンを実行するすべてのホストでこのファイルを維持して、ネットワークに対する変更が反映されるようにする必要があります。
このデータベースの構文についての詳細は、ethers(4) のマニュアルページに説明されています。基本構文は次のとおりです。
Ethernet-address hostname #comment |
Ethernet-address は、ホストの Ethernet アドレスです。
hostname は、ホストの公式名です。
#comment は、ファイル内のエントリに付加できる任意の注意書きです。
Ethernet アドレスは装置の製造元から提供されます。マシンの電源を入れたときに Ethernet アドレスが表示されない場合は、ハードウェアのマニュアルを調べてください。
ethers データベースにエントリを追加するときは、ホスト名が、ニックネームではなく、hosts データベースと ipnodes データベース内の一次名に一致していることを確かめてください (次のコード例)。
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 データベースは、/etc/inet/networks ファイルの中の情報をもとにして作られます。このデータベースには、このネットワークがルーターを介して接続されるすべてのネットワークの名前が入っています。
初期 networks データベースは、Solaris インストールプログラムが設定します。このデータベースを更新する必要があるのは、既存のネットワークトポロジに新たなネットワークを追加した場合だけです。
/etc/inet/networks の詳しい構文は、networks(4) のマニュアルページで説明されています。基本構文は次のとおりです。
network-name network-number nickname(s) #comment |
network-name は、ネットワークの公式名です。
network-number は、InterNIC から割り当てられた番号です。
nickname は、ネットワークの認識のために使用されるその他の名前です。
#comment は、ファイル内のエントリに付加したい任意の注意書きです。
networks ファイルの管理は大変重要です。netstat プログラムは、このデータベース内の情報を使用して状態テーブルを作成します。
次のコード例に /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 ucb-ether 46 ucbether # # local networks eng 193.9.0 #engineering acc 193.9.1 #accounting prog 193.9.2 #programming |
protocols データベースには、システムにインストールされている TCP/IP プロトコルとそれぞれの番号のリストが入っています。このデータベースは、Solaris インストールプログラムが自動的に作成します。このファイルについて管理作業が必要になることはほとんどありません。
protocols データベースには、システムにインストールされている TCP/IP プロトコルの名前が含まれています。詳しい構文は、protocols(4) のマニュアルページに記載されています。例 7-9 に、/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 データベースには、TCP サービスと UDP サービスの名前と、それぞれのよく知られているポート番号のリストが入っています。このデータベースは、ネットワークサービスを呼び出すプログラムにより使用されます。Solaris インストールプログラムは、services データベースを自動的に作成します。このデータベースについては、通常は管理作業が必要になることはありません。
詳しい構文は、services(4) のマニュアルページに記載されています。次のコード例に、典型的な /etc/inet/services ファイルからの抜粋を示します。
# # Network services # echo 7/udp echo 7/tcp 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 |
以下の情報は参考用です。ネットワークのブート処理の概要を示しています。構成時にどのようなことが起こるかを全体的にとらえるのに役立ちます。
起動スクリプトの名前は、Solaris リリースごとに変更されることがあります。
ホストでオペレーティングシステムを起動します。
カーネルが、ブート処理の一部として /sbin/init を実行します。
/sbin/init が、/etc/rcS.d/S30rootusr.sh 起動スクリプトを実行します。
/etc/rcS.d/S30rootusr.sh 起動スクリプトが、ディスクレスとデータレスの操作のための最小限のホスト構成とネットワーク構成の確立など、いくつかのシステム起動処理を行います。また、このスクリプトは、/usr ファイルシステムをマウントします。
ローカルデータベースファイルに、必要な構成情報 (ホスト名と IP アドレス) が含まれている場合は、スクリプトはそれを使用します。
ローカルホスト構成ファイル内に必要な情報がない場合は、/etc/rcS.d/S30rootusr.sh は、RARP を使用してホストの IP アドレスを入手します。
ドメイン名、ホスト名、デフォルトのルーターアドレスがローカルファイルに含まれている場合は、マシンはそれらを使用します。ローカルファイルに構成情報が含まれていない場合は、システムは bootparams プロトコルを使用して、ホスト名、ドメイン名、デフォルトのルーターアドレスを入手します。必要な情報が、ホストと同じネットワーク上にあるネットワーク構成サーバーから入手可能でなければなりません。これは、この時点ではまだインターネットワーク通信が存在していないからです。
/etc/rcS.d/S30rootusr.sh が作業を完了し、その他のいくつかのブート手続きが実行されると、次に /etc/rc2.d/S69inet が実行されます。このスクリプトは、ネームサービス (NIS、NIS+、または DNS) の開始の前に完了しておく必要のある起動作業を実行します。これらの作業には、IP の構成、ドメイン名のルーティングと設定などがあります。
S69inet の作業が完了すると、/etc/rc2.d/S71rpc が実行されます。このスクリプトは、NIS、NIS+、DNS のどれかのネームサービスを起動します。
/etc/rc2.d/S71rpc の実行の後で、/etc/rc2.d/S72inetsvc が実行されます。このスクリプトは、ネームサービスの存在の有無に応じて異なるサービスを起動します。S72inetsvc は inetd デーモンも起動します。このデーモンは、telnet などのユーザーサービスを管理します。
ブート処理についての詳細は、『Solaris のシステム管理 (第 1 巻)』を参照してください。
Solaris オペレーティングシステムは 2 つのルーティングプロトコルをサポートしています。それは、RIP (Routing Information Protocol) と ICMP RDISC (Router Discovery Protocol) です。RIP と RDISC は、どちらも標準 TCP/IP プロトコルです。
RIP はルーティングデーモン in.routed により実現されるもので、このデーモンはマシンのブート時に自動的に起動されます。s オプションを指定した in.routed をルーターで実行すると、in.routed は、到達可能なすべてのネットワークへのルートをカーネルルーティングテーブルに組み入れ、すべてのネットワークインタフェースを経由する「到達可能性」を通知します。
q オプションを指定した in.routed をホストで実行した場合は、in.routed はルーティング情報を抽出しますが、到達可能性は通知しません。ホストでは、ルーティング情報は次の 2 つの方法で抽出できます。
S フラグ (大文字の S は「省スペースモード」) を指定しない場合、in.routed は、ルーターで実行したときと同様にフルルーティングテーブルを作成します。
S フラグを指定すると、in.routed は、使用可能な各ルーターについてデフォルトのルートを 1 つずつ示す最小核テーブルを作成します。
ホストは、RDISC を使用してルーターからルーティング情報を入手します。したがって、ホストが RDISC を実行しているときは、各ルーターは、ルーター相互間でのルーティング情報の交換のために、RIP などのような別のプロトコルも実行している必要があります。
RDISC は in.rdisc により実現されます。in.rdisc は、ルーターとホストの両方で実行している必要があります。通常は、in.rdisc をホストで実行すると、同じく in.rdisc を実行している各ルーターについてのデフォルトのルートに入ります。in.rdisc を実行しているホストは、RIP だけを実行しているルーターは検索しないので、注意してください。また、ルーターが in.rdisc (in.routed ではなく) を実行しているときは、ルーターごとに異なる優先項目を持つように構成すると、ホストができるだけ効率的なルーターを選択できるようになります。rdisc(1M) のマニュアルページを参照してください。
あるマシンがホストまたはルーターのどちらであるかを決定するのは、マシンのブート時に実行される /etc/rc2.d/S69inet 起動スクリプトです。この決定に伴って、ルーティングプロトコル (RIP と RDISC) を、ルーターモードで実行するかホストモードで実行するかも決まります。
/etc/rc2.d/S69inet スクリプトは、次の 2 つの条件が満たされているとき、マシンがルーターであると判断します。
/etc/hostname.interface ファイルが 2 つ以上ある
ifconfig コマンドにより、複数のインタフェースが "up" として構成されている (ifconfig(1M) のマニュアルページを参照してください)。
インタフェースが 1 つしか見つからない場合は、このスクリプトはそのマシンがホストであると判断します。「ルーターの両方のネットワークインタフェースの構成」を参照してください。/etc/hostname.interface ファイル以外の方法で構成されているインタフェースは、判断の対象にされません。
TCP/IP を実行する各ネットワークは、それぞれ一意なネットワーク番号を持っていて、そのネットワーク上のすべてのマシンがそれぞれ一意な IP アドレスを持っている必要があります。ネットワークを登録し、ネットワーク番号を入手するには、その前に、IP アドレスの構造を理解しておくことが重要です。この節では、IPv4 アドレスについて説明します。IPv6 アドレスについては、「IPv6 アドレス指定」を参照してください。
IPv4 アドレスは、特定のマシンのネットワークインタフェースを一意なものとして識別する 32 ビットの番号です。IPv4 アドレスは一般に 10 進数で表され、ピリオドで区切った 4 つの 8 ビットフィールドの形式をとります。個々の 8 ビットフィールドは、それぞれ IPv4 アドレスの 1 バイトを表します。このような形式で IPv4 アドレスのバイトを表す方式を「ドット化 10 進形式」と呼びます。
IPv4 アドレスのバイトは、さらに、ネットワーク部とホスト部の 2 つの部分に分かれます。図 7-3 に、129.144.50.56 という典型的な IPv4 アドレスの構成部分を示します。
ネットワーク部は、ネットワークに割り当てられている一意な番号を示します。これは、割り当てられているネットワーククラスも識別します。 図 7-3 では、ネットワーク部は IPv4 アドレスの 2 バイトを占めています。
IPv4 アドレスのこの部分は、管理者が各ホストに割り当てる番号です。この番号は、ネットワーク内でこのマシンを一意なものとして識別します。ネットワーク上の各ホストについて、アドレスのネットワーク部は同じで、ホスト部はそれぞれ異なる必要があるという点に注意してください。
多数のホストを持つローカルネットワークは、いくつかのサブネットに分割されることがあります。ネットワークをサブネット化することにした場合は、サブネットにサブネット番号を割り当てる必要があります。IPv4 アドレスのホスト番号部の一部のビットをネットワーク識別子として使用することで、IPv4 アドレス空間の有効率を最大限にすることができます。ネットワーク識別子として使用した場合、アドレスの指定した部分がサブネット番号になります。サブネット番号は、ネットマスクを使用して作成します。ネットマスクは、IPv4 アドレスのネットワーク部とサブネット部を選択するビットマスクです (詳細は、「IPv4 アドレス用のネットワークマスクの作成」を参照してください)。
ネットワーク上での IPv4 アドレス指定に関する計画の第 1 ステップは、最も妥当なネットワーククラスを決定することです。それが済んだら、きわめて重要な第 2 のステップ、つまり InterNIC アドレス指定機関からのネットワーク番号の入手に移ることができます。
現在、TCP/IP ネットワークには 3 つのクラスがあります。32 ビットの IPv4 アドレス空間は、ネットワーク部のビット数が多かったり少なかったりするなど、クラスによって使い方が異なります。3 つのクラスとは、クラス A、クラス B、クラス C です。
クラス A ネットワーク番号では、IPv4 アドレスの最初の 8 ビットが「ネットワーク部」として使用されます。残りの 24 ビットは、図 7-4 に示すように、IPv4 アドレスのホスト部です。
クラス A ネットワーク番号の最初のバイトに割り当てられる値の範囲は、1〜127 です。たとえば、75.4.10.4 という IPv4 アドレスがあるとします。最初のバイトの 75 という値は、このホストがクラス A ネットワーク内にあることを示しています。残りのバイトの 4.10.4 はホストアドレスを形成します。クラス A の番号の場合、InterNIC が割り当てるのは、最初の 1 バイトだけです。残りの 3 バイトをどのように使用するかは、そのネットワーク番号の所有者の自由です。クラス A のネットワークとして存在可能なのは 127 個だけです。この範囲内の各番号が、それぞれ最大 16,777,214 個のホストを収容できます。
クラス B ネットワーク番号では、16 ビットがネットワーク番号に使用され、16 ビットがホスト番号に使用されます。クラス B ネットワーク番号の最初のバイトの値の範囲は、128〜191 です。129.144.50.56 の番号の場合、最初の 2 バイトの 129.144 は InterNIC により割り当てられるネットワークアドレスです。残りの 2 バイトの 50.56 はホストアドレスで、これはネットワーク番号の所有者が任意に割り当てることができます。図 7-5 に、クラス B のアドレスを示します。
一般に、クラス B は、多数のホストを備えたネットワークを持つ組織に割り当てられます。
クラス C ネットワーク番号では、24 ビットがネットワーク番号に使用され、8 ビットがホスト番号に使用されます。クラス C ネットワーク番号は、ホスト数が少ない、つまり最大ホスト数が 254 台程度のネットワークに適しています。クラス C ネットワーク番号は、IPv4 アドレスの最初の 3 バイトを占めます。ネットワーク番号の所有者が自由に割り当てることができるのは、4 番目のバイトだけです。図 7-6 に、クラス C アドレスのバイトを示します。
クラス C ネットワーク番号の最初のバイトの値の範囲は、192〜223 です。第 2 と第 3 のバイトの値の範囲は、どちらも 1〜255 です。典型的なクラス C アドレスは、たとえば 192.5.2.5 のようになります。最初の 3 バイトの 192.5.2 がネットワーク番号です。最後のバイト、つまり 5 がホスト番号です。