ネットワーク構成の一部として netmasks データベースを編集する必要があるのは、ネットワークのサブネット化を設定している場合だけです。 netmasks データベースは、各ネットワークとそれに対応するサブネットマスクのリストで構成されています。
サブネットを作成するときは、新規の各ネットワークはそれぞれ独立した物理ネットワークであることが必要です。単一の物理ネットワークにサブネット化を適用することはできません。
「サブネット化」は、大規模なインターネットワークにおいて、限られた 32 ビットの IPv4 アドレス空間を最大限活用し、経路制御テーブルの大きさを縮小する方法です。どのようなアドレスクラスの場合も、サブネット化によってホストアドレス空間の一部をネットワークアドレスに割り当て、ネットワーク数を増やすことができます。新規のネットワークアドレスに割り当てられるホストアドレス空間の部分を、「サブネット番号」と言います。
IPv4 アドレス空間を有効活用できることのほかに、サブネット化には管理上の利点もいくつかあります。ネットワークの数が増えるに伴って、経路制御はきわめて複雑になってきます。たとえば、小規模の組織なら、個々のローカルネットワークにクラス C の番号を割り当てることができます。しかし、組織が成長するにつれて、多数の異なるネットワーク番号を管理することは、非常に複雑な作業になってきます。このような場合の改善策の 1 つとして、組織内の主要部門に対してそれぞれクラス B のネットワーク番号を割り当てる方法が考えられます。たとえば、エンジニアリング部門に 1 つのクラス B ネットワーク、運営部門に別のクラス B を割り当てるということが可能です。その上で、サブネット化によって得られたネットワーク番号を使用して、個々のクラス B ネットワークをさらに多くのネットワークに分割できます。これによって、ルーター間でやりとりしなければならない経路制御情報の量も減少します。
サブネット化プロセスの一環として、ネットワーク全体の「ネットマスク」を選択する必要があります。ネットマスクは、ホストアドレス空間の中で、どの位置の何個のビットがサブネット番号を表し、どの位置の何個のビットがホスト番号を表すかを決定します。完全な 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 ビットをホスト番号用として確保する必要があります。
ネットワークで 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 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 ファイルには、ネットワーク番号のシンボリック名も入力できます。こうすることによって、ネットワーク番号の代わりにこれらのネットワーク名をコマンドへのパラメータとして使用できます。