TCP/IP とデータ通信

TCP/IP 構成ファイル

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

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

/etc/hostname.interface ファイル

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

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

複数のネットワークインタフェースがある場合

マシンが複数のネットワークインタフェースを備えている場合は、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 にインストールされていますが、別の IP アドレスを持つ必要があります。したがって、ネットワーク管理者が、このインタフェース用に /etc/hostname.le1 ファイルを作成する必要があります。このファイルに入れるエントリは、ルータ名の timbuktu-201 です。

/etc/nodename ファイル

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

/etc/defaultdomain ファイル

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

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

/etc/defaultrouter ファイル

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

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

hosts データベース

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

ネームサービスとしてローカルファイルを使用している場合は、hosts データベースは /etc/inet/hosts ファイルに維持されます。このファイルには、一次ネットワークインタフェースのホスト名と IP アドレス、マシンに備わっている他のネットワークインタフェース、そして、このマシンが知っている必要がある他のネットワークアドレスが入っています。


注 -

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


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

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

IP-address hostname [nicknames] [#comment]

IP-address には、ローカルホストが認識する必要のある各インタフェースの IP アドレスが入ります。

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

[nickname] は、ホストのニックネームが入るオプションのフィールドです。

[# comment] は、コメントを入れることができるオプションのフィールドです。

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

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

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


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


127.0.0.1     localhost         loghost    #loopback address
192.9.200.3   ahaggar                      #host name

ループバックアドレス

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

ホスト名

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

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

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

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


例 4-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 ファイルを調べて、ネットワーク上の他のマシンの IP アドレスとホスト名を入手します。したがって、/etc/inet/hosts ファイルには以下の事項が含まれていることが必要です。

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

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


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

Graphic

netmasks データベース

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


注 -

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


サブネット化とは

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

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

ネットワークマスクの作成

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

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

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

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

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

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

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

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

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

129.144.41.101 & 255.255.255.0 = 129.144.41.0

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

11111111.11111111.11111111.00000000 (ネットマスク)

AND

10000001.10010000.00101001.01100101 (IP アドレス)

これで、システムは、ネットワーク番号 129.144 の代わりにネットワーク番号 129.144.41 を捜すようになります。129.144.41 の番号を持つネットワークがあれば、システムはそれを見つけ出します。IP アドレス空間の 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 へのシンボリックリンクとなっています。


例 4-4 に示すのは、クラス B ネットワークの場合のサンプルの /etc/inet/netmasks ファイルです。


例 4-4 クラス B ネットワークの場合の /etc/inet/netmasks ファイル


 ## The netmasks file associates Internet Protocol (IP) address
 # masks with IP 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 ファイルに、ネットワーク番号の記号名を入力することもできます。そうすれば、ネットワーク番号の代わりにこれらのネットワーク名を、コマンドへのパラメータとして使用できます。

ネットワークにサブネットを追加する方法

サブネットを使用していないネットワークをサブネット化するには、次の手順を使用します。

  1. 新しいサブネットトポロジについて決定します。これには、ルータに関する考慮事項や、サブネット上でのホストの位置などが含まれます。

  2. すべてのサブネットアドレスとホストアドレスを割り当てます。

  3. 手作業で TCP/IP を構成している場合は、/etc/inet/netmasks ファイルを修正します。そうでない場合は、Solaris インストールプログラムにネットマスクを与えます。

  4. すべてのホストで、新しいホストアドレスを反映するように /etc/inet/hosts ファイルを修正します。

  5. すべてのマシンをリブートします。