IPパケット配送の仕組み


目次

はじめに
経路情報とは
経路テーブルの管理
ホスト情報の設定
 ・FreeBSDの設定
 ・BSD/OSの設定
 ・ Solarisの設定

一つ前へ


はじめに

 識別されたホストに対してIPパケットを送る仕組みについて説明します。
 ネットワークに接続された2つのホストが通信する場合、IPパケットの送信元となるホストをソース(source)、送信先をデスティネーション(destination)と呼びます。さらに、ソースからデスティネーションまでの道のりを経路(route)、IPパケットが正しく相手に届くように経路情報を管理することを経路制御(routing)と呼びます。
経路情報とは
 IPを用いたネットワークでは、小さなネットワークを互いに接続することにより、大きなネットワークを構築することができます。
 ここでの小さなネットワークとは、"同じネットワーク・アドレスで示されるネットワーク"(論理ネットワーク)の範囲を意味します。10Base5のEthernetであれば1つの物理的な線(セグメント)、FDDIであれば1つの物理的なリングに1つのネットワーク・アドレスを対応させることもできます。しかし、リピータなどの機器を使えば物理的なネットワークは延長できるため、1つの論理ネットワークが複数の物理ネットワークに対応する場合もあります。ここでは、物理ネットワークではなく1つの論理ネットワーク(たとえば192.168.1.16というネットワーク)を"ネットワーク"と呼ぶことにします。
 ネットワークどうしを接続するには、ゲートウェイ(gateway)と呼ばれる機器を用います。ゲートウェイはUNIXマシンの場合も、ルータ(router)と呼ばれる専用機器の場合もあります。ゲートウェイに共通していえるのは、複数の(つまり、2つ以上の)ネットワーク・インターフェースをもっており、それぞれのネットワーク・インターフェースが別々のネットワークに接続しているということです。
 IPネットワークでは、同じネットワークに接続されたホストどうしは、直接IPパケットを送受信することができます。同じネットワークに属さないホストにパケットを送る場合は、以下のような手順になります。

  1. 送信元ホスト(ソース)は送信先ホスト(ディスティネーション)のネットワーク・アドレスを見て、自分が属するネットワークにあるかどうかを判断する。あるのならば直接送信するが、異なるネットワークにある場合はネットワークに接続されたゲートウェイにパケットを転送する。
  2. パケットを受け取ったゲートウェイは、自分が属している複数のネットワークのいずれかにディスティネーションがあるかを判断する。あるのなら、ディスティネーションに直接パケットを送る。ない場合は、自分が接続しているネットワークのいずれかに接続されたゲートウェイを1つ選び、これに対してIPパケットを転送する。
  3. ディスティネーションの属するネットワークにたどり着くまで、2の手順が繰り返される。

 このように、ゲートウェイがバケツリレー方式でパケットを転送することにより、IPパケットはディスティネーションが属するネットワークへ1歩ずつ近づいていきます。IPネットワークにおける経路情報とは、"あるネットワークへ到達するにはどのゲートウェイに送ればいいか"に関する情報だといえます。ゲートウェイだけでなく、通常のホストも経路情報をもっています。あるネットワークが複数のゲートウェイによって複数のネットワークに接続されている場合、ゲートウェイでないホストも、次に送るべきゲートウェイを正しく選ぶ必要があります。そうしないと、IPパケットがあらぬ方向に転送され、いつまでたってもディスティネーションに届かないという事態に陥ります。
 ゲートウェイも含め、ネットワークに接続されるホストは経路テーブルという表をマシン内部にもっており、これに書かれた経路情報をもとに次の送り先になるゲートウェイが決められます。1つの経路情報は以下のような情報の組で構成されます。

  • ディストネーションのネットワーク
    ディストネーションとなるホストが属するネットワーク(ネットワーク・アドレス)
  • パケットを送るべきゲートウェイ
    ディストネーションのネットワークに対し、パケットを転送すべきゲートウェイのIPアドレス


 これだけでは分かりにくいので、具体的な例を示します。たとえば、上図のようなネットワークがあったとします。192.168.1.0〜192.168.4.0の4つのクラスCネットワークがあり(サブネットには分割されていないものとします)、それぞれがGWa、GWb、GWc という3つのゲートウェイによって相互に接続されています。各ゲートウェイはそれぞれ2つずつネットワーク・インターフェースをもっています。図のなかでネットワーク接続を表す線上に書かれた数字は、ネットワーク・インターフェースに割り当てられたIPアドレスを意味しています。たとえば GWb の場合、192.168.1.0 に接続されたネットワーク・インターフェースには 192.168.1.2 というIPアドレスが、192.168.2.0 に接続されたネットワーク・インターフェースには 192.168.2.2 というIPアドレスが割当てれれています。
 経路情報を単純にディストネーションのネットワーク・アドレス(destination)とゲートウェイ(gateway)の組で表すと、各ゲートウェイがもつ経路テーブルは表1〜3のようになります。なお、ゲートウェイのIPアドレスが"direct"となっているエントリに関しては、直接パケットが送られることを意味します。

表1 GWa の経路テーブル
destinationgateway
192.168.1.0direct
192.168.2.0192.168.1.2
192.168.3.0direct
192.168.4.0192.168.1.2
表2 GWb の経路テーブル
destinationgateway
192.168.1.0direct
192.168.2.0direct
192.168.3.0192.168.1.1
192.168.4.0192.168.2.3

表3 GWc の経路テーブル
destinationgateway
192.168.1.0192.168.2.2
192.168.2.0direct
192.168.3.0192.168.2.2
192.168.4.0direct
例示した経路テーブルは、あくまで概念的なものです。実際の経路テーブルには、IPパケットを送り出す際に利用するネットワーク・インターフェースなど、さまざまな情報が納められています。

 ゲートウェイ以外のホストにも同じような経路テーブルがあります。図のnullpcとmypcに注目すると、それぞれのホストがもつ経路テーブルは表4〜5のようになります。

表4 nullpc の経路テーブル
destinationgateway
192.168.1.0192.168.3.1
192.168.2.0192.168.3.1
192.168.3.0direct
192.168.4.0192.168.3.1
表5 mypc の経路テーブル
destinationgateway
192.168.1.0direct
192.168.2.0192.168.1.2
192.168.3.0192.168.1.1
192.168.4.0192.168.1.2

 ここで、mypcがsomepc(192.168.4.20)と通信する場合を考えてみましょう。
 somepc のIPアドレスから、somepcは192.168.4.0 というネットワークに属することが分かります。mypcは自分の経路テーブルを参照し、デストネーションのネットワークが192.168.4.0 となっているエントリを検索します。すると、このネットワークへ到達するには192.168.1.2 というIPアドレスをもったゲートウェイ(GWb)に転送すればいいことが分かります。そこで、IPパケットをGWb に送ります。GWb はmypc と同じネットワークに接続されているため、mypc からGWb へはパケットを直接送信することができます。この例のように、経路テーブルで指定するゲートウェイには直接送信できるものを選んでおかなくてはなりません。
 IPパケットを受け取ったGWbは自分の経路テーブルを参照し、192.168.4.0 のエントリを検索します。すると、経路テーブルには192.168.2.3 というIPアドレスをもったゲートウェイ(GWc)に送るように書かれているので、パケットをGWcに転送します。GWcは自分の経路テーブルを検索して、somepcに対して直接パケットを送信できることを理解します。したがって、パケットはGWcからsomepcに直接送信されます。
 以上はmypcからsomepcにパケットを送信する場合でしたが、nullpcからsomepcにパケットを送信するときも同様の手順で、
 nullpc → GWa → GWb → GWc → somepc

という経路をたどって通信がおこなわれます。
 なお、このネットワーク構成では mypc と somepc、あるいは nullpc と somepc のあいだには経路が1つしかありません。したがって、somepc から mypc や nullpc に送信されたパケットは、さきほどとは逆の順序をたどって送り届けられます。しかし、複数の経路が選択可能な場合は、行きと帰りの経路が異なることもあります。
 表1〜5に示した経路テーブルには、通信をおこなう可能性があるネットワークのすべてについて、対応するゲートウェイが1つずつ書かれています。ネットワークの規模が小さければ気にならないでしょうが、インターネットのように大規模なネットワークでは、接続されるネットワークも膨大な数になります。UNIXマシンの場合、経路テーブルはメモリに保存されるため、すべてのネットワークに対して1つずつエントリを作っていると、大量のメモリが必要になります。また、経路テーブルに何十万もの経路情報があると、パケット送信時の経路テーブルの検索にも多くの時間がかかってしまいます。
 しかし、すべてのマシンがすべての経路情報をもっている必要はありません。たとえば、nullpc のようにゲートウェイが1つしかないネットワークに接続されたホストならば、自分の属するネットワーク以外のホストと通信するときは、すべてゲートウェイにパケットを送ればよいのです。これがデフォルト経路(default route)とよばれる経路情報です。デフォルト経路は、ディストネーションとなるネットワークをキーとして経路テーブルを検索した結果、マッチするエントリがみつからなかった場合に適用されるエントリで、"例外"を処理するためのものだといえます。同じゲートウェイを指定するエントリが多ければ、それをデフォルト経路としてまとめることによって、経路テーブルのエントリ数を劇的に減らすことが可能です。
 たとえば、表4に挙げた nullpc の経路テーブルに注目してみましょう。nullpc では、自分が属するネットワーク(192.168.3.0)以外に送る場合はすべてGWa(192.168.3.1)を利用するため、デフォルト経路を使うと経路テーブルは表6のようになります。3つあったエントリが、1つのデフォルト経路にまとめられています 。

表6 デフォルト経路を利用したnullpcの経路テーブル
destinationgateway
192.168.3.0direct
default192.168.3.1

 一方、mypc の場合は、自分が属するネットワークには2つのネットワークが接続されています。そのため、(自分が属するネットワーク以外への)すべての経路を1つにまとめることはできません。しかし、全体としてみると、接続されるネットワークの数が増えるにしたがい、デフォルト経路で集約する効果も増大します。

経路テーブルの管理

 特定のホスト間の経路は、ネットワークの構成が変化すれば当然変わります。ネットワーク構成の変化には、ネットワークの接続関係の変化だけでなく、ゲートウェイのIPアドレスの付替えなども含まれます。
 ネットワーク構成が変化すると、それに合わせて各ホストがもつ経路テーブルのエントリも更新しなければなりません。経路テーブルの管理には2種類の方法があります。1つは静的な管理と呼ばれるもので、ホストの管理者が手動で経路テーブルを操作します。
 FreeBSDやBSD/OSでは、経路テーブルを操作するコマンドは(/sbin/)routeです(Solarisの場合は、/usr/sbinにあります)。route コマンドはいくつかのサブコマンドをもち、経路テーブルに対して経路情報の追加や削除、変更、検索などの操作をおこなうことができます。
 詳しい利用方法はオンライン・マニュアル route(8) などを見てください。経路情報の追加と削除については、以下のような使い方になります。

 route subcommand -net destination gateway

 subcommandは操作の種類(サブコマンド)で、追加の場合は "add"、削除の場合は "delete"を指定します。destinationにはデスティネーションのネットワーク・アドレスを、gatewayには対応するゲートウェイのIPアドレスを指定します。デフォルト経路の場合は、destinationの部分に "default"を指定します。
 たとえば、経路テーブルに新たな経路情報を追加するには以下のように実行します。この例では、”ディスティネーションが 192.168.5.0 というネットワークにある場合、192.168.1.1 というゲートウェイにパケットを送る”という経路情報を追加しています

 bash# route add -net 192.168.5.0 default 192.168.1.1
 add net 192.168.5.0: gateway 192.168.1.1
 bash#■

 一方、経路情報を削除するには次のように実行します。

 bash# route delete -net 192.168.5.0 default 192.168.1.1
 delete net 192.168.5.0: gateway 192.168.1.1
 bash#■

 経路テーブルを静的に管理する場合、マシンを起動するたびにrouteコマンドを実行するのは面倒なので、通常はOSの起動設定ファイル(FreeBSDの場合 /etc/rc.conf、BSD/OSの場合 /etc/netstart、Solarisの場合 /etc/rc2.d/S69inet )に記述しておきます。デフォルト経路も含め、FreeBSD や BSD/OS の起動設定ファイルで経路を設定する方法は後に記述します。
 経路テーブルのもう1つの管理方法は動的な管理と呼ばれ、(/sbin/)routedというデーモン・プログラムが経路テーブルを管理します(他に gated などもある、Solarisなら /usr/sbin/in.routed です。これらのデーモンを総称して、経路制御デーモンとも呼びます)。routed には大きく分けて2つのモードがあります。1つは経路情報をネットワーク内に提供するモード(ネットワークに対して経路情報を流すだけでなく、ほかの routed と経路情報を交換することもできます)、もう1つは提供される経路情報を”聴く”だけのモード(listenモード)です。
 多くの場合、経路情報を提供するデーモンはネットワーク上に1つだけ存在します。残りのホストは routed をlisten モードで起動し、提供される経路情報を聴いて経路テーブルを自動的に管理します。一般に、提供される経路情報にはデフォルト経路も含まれるため、その他のホストは routed を listen モードで起動しておけば、個々のホストで経路情報を静的に管理する必要はありません。
 routed を listen モードで起動するには、"-q" オプションを付けるだけです。通常、routed デーモンはマシンの起動時に自動的に起動されます。FreeBSD や BSD/OS に関しても、/etc/rc.conf や /etc/netstartなどの設定ファイルに "routed デーモンを使う" ことと "listen モードで起動する" ことを記述しておけば、あとは何もする必要がありません。もちろん、routed コマンドを使って経路テーブルを操作したり、routed を起動できるのはスーパーユーザーのみです。
 経路情報の管理形態にかかわらず、現在の経路テーブルを確認するにはnetstatコマンド(FreeBSD や Solaris では /usr/bin、BSD/OS では /usr/sbin/ に置かれています) を使います。netstat は経路テーブルだけではなく、現在の接続状態や統計情報、ネットワーク・インターフェースに関する情報など、ネットワークの状態についての状態についてのさまざまな情報を表示することができます。多くのオプションがありますが、経路テーブルを確認するには -rn オプションを指定します( -r だけを指定すると、ゲートウェイのIPアドレスなどを名前に変換して表示します)。
 たとえば、前記の nullpc で "netstat -rn" を実行すると、以下のようになります。

 netstat -rn の実行例
 nullpc$ netstat -rn
 Routing tables

 Internet:
 
DestinationGatewayFlagsRefsUseNetifExpire
default192.168.3.1UGSc217vx0
127.0.0.1127.0.0.1UH1326lo0
192.168.3/24link#1UC00

192.168.3.10:80:f1:0:59:81UHLW24vx0791
192.168.3.100:10:4b:36:6e:fcUHLW16lo0
192.168.3.118:0:5a:38:a:1eUHLW16vx01197
192.168.3.255ff:ff:ff:ff:ff:ffUHLWb32087vx0
 nullpc$■

 経路テーブルの経路情報が、1行に1つずつ出力されます。各経路情報には7つのフィールドがあり、おもなフィールドの意味は以下のようになります。

●Destination

 経路情報における、ディスティネーションのアドレスが表示されます。基本的には、直接パケットえお送ることができない経路についてはネットワーク・アドレスが、できる場合は目的となるホストのIPアドレスが表示されます。デフォルト経路に関しては "default" が表示されます。上の例では、127.0.0.1(ローカルホスト)やnullpc が属するネットワークのホスト(192.168.3.1など)、ブロードキャスト・アドレス(192.168.3.255)にはパケットを直接送れるので、ホストのIPアドレスが表示されます。

●Gateway

 ディスティネーションに対するゲートウェイのIPアドレスが表示されます。上の例では、Ethernet経由で直接パケットを送ることができるホスト(192.168.3.1など、192.168.3.0に属するホスト)については、ディスティネーションのホストがもつ Ethernet アドレスがこの部分に表示されています(Solarisの場合は、ここにはIPアドレスが表示されます)。

●Flags

 経路の状態がフラグとして表示されます。たとえば、経路が利用可能な場合は "U"、ディスティネーションが(ネットワークではなく)ホストの場合は "H"など、さまざまなフラグがあります。

●Netif

 その経路を使ってパケットを送る際、実際に使われるネットワーク・インターフェースの名前が表示されます。この例の場合、nullpcがもつEthernetカードのインターフェース名は "vx0" です。
 "lo0" はループバック・インターフェースと呼ばれるもので、ホスト内で閉じた通信をおこなう際に使われます。lo0 には、ローカルホストを表す 127.0.0.1 というIPアドレスが割り当てられます。ローカルホスト(127.0.0.1)や自分のIPアドレス(ここでは192.168.3.10)宛に送るときには、lo0 がネットワーク・インターフェースとして用いられます。

 各フィールドの詳細やその使い方については、オンライン・マニュアルnetstat(1)などを参照してください。


ホスト情報の設定
 最後に、ここまでに紹介した(自分の)ホスト名やIPアドレス、経路情報に関する設定の具体的な方法を紹介します。どのOSでも本質的な設定項目は同じですが、設定ファイルの名前や記述方法が異なります。
 ここでは、FreeBSD と BSD/OS に分けて説明します。Solaris についても簡単に触れます。

FreeBSDの設定
 FreeBSD の場合は、NISクライアントの設定も含めて、多くの設定が /etc/rc.conf ファイルに集約されています。/etc/rc.conf には設定を "パラメータ=値" として記述し、ほかの起動設定ファイル(/etc/rc など)では /etc/rc.conf の設定パラメータにもとづいて必要なコマンドを実行するようになっています。
 FreeBSD マシンをネットワーク環境で運用するための基本的な設定パラメータとその指定方法をまとめると、以下のようになります。

●自分のホスト名

 "hostname" というパラメータを使い、マシンのホスト名を FQDN で指定します。たとえば、FQDN が nullpc.foo.co.jp の場合は以下のように指定します。

 hostname="nullpc.foo.co.jp"

マシンの起動には、/etc/rc.network というファイルのなかで hostname コマンドが実行され、その引数としてここに指定した値が使われます。

●利用するネットワーク・インターフェース

 "network_interfaces" というパラメータで、利用するネットワーク・インターフェース名を指定します。デフォルトの状態では、このパラメータにはループバック・インターフェース(lo0)だけが指定されているので、Ethernet を利用する場合は対応するインターフェース名を追加します。複数のインターフェース名を指定する場合は、あいだを空白で区切ります。

network_interfaces="vx0 lo0"

●ネットワーク・インターフェースに割り当てるIPアドレスとネットマスク

 network_interfaces で指定したインターフェースに割り当てるIPアドレスやネットマスクを指定します。パラメータは "ifconfig_インターフェース名" ですが、ループバック・インターフェースに対する設定(ifconfig_lo0) はすでに記述されています。この値は変更しないでください。インターフェース名が vx0 のEthernet カードを利用する場合は、以下のように指定します。

ifconfig_vx0="inet 192.168.3.10 netmask 255.255.255.0"

キーワード inet の後ろにネットワーク・インターフェースのIPアドレスを、キーワード netmask の後ろにネットマスクを指定します。ネットマスクの表記法には、16進表記とドット表記の2種類があります。サブネットを利用しないのなら、netmask 以降の部分は指定しなくても大丈夫です。この場合、ネットマスクはIPアドレスのクラスから自動的に計算されます。
ちなみに、ネットワーク・インターフェースに対して実際にIPアドレスを割り当てるのはifconfigコマンドです。このコマンドはマシンの起動時に /etc/rc.network ファイルから実行されます。このファイルを実際にみると分かりますが、"ifconfig_インターフェース名" というパラメータの値は、ifconfigコマンドの引数としてそのまま渡されます。

●デフォルト経路のゲートウェイ

 デフォルト経路を手動で設定した場合は、"defaultrouter" というパラメータにデフォルト経路で使われるゲートウェイのIPアドレスを指定します。

 defaultrouter="192.168.3.1"

デフォルト経路を手動で設定しない場合は、"NO" という値を指定します。

●その他の経路の手動設定

 デフォルト経路以外の経路情報を手動で設定したい場合は、"route_経路名" というパラメータを自分で作成し、パラメータの値として route コマンドに渡す引数("route add" 以降の部分)を指定します。
次に、"static_routes" というパラメータの値に "経路名" を指定します。複数の経路情報を設定したい場合は、"経路名" を空白で区切って並べます。

 route_route1="-net 192.168.5.0 192.168.3.1"
 route_route2="-net 192.168.8.0 192.168.3.100"
 static_routes="route1 route2"

この場合、route_route1 と route_route2 の内容が route コマンドに渡され、経路テーブルに経路情報が追加されます。route コマンドは、/etc/rc.network ファイルから実行されます。どのように実行されるか興味のある方はこのファイルを見てください。

●経路制御デーモンに関する設定

 経路制御デーモンの設定に関しては、以下の3つのパラメータを指定することができます。

・route_enable

経路制御デーモンを利用するかどうかを指定するパラメータで、利用する場合は "YES"、しない場合は "NO" を指定します(デフォルト値はNO)。
 router_enable="YES"

・router

 経路制御デーモンを利用する場合、起動するデーモンのプログラム名を指定します。デフォルトではroutedが起動するようになっています。
 router="routed"

・router_flags

 経路制御デーモンを起動する際の引数を指定します。デフォルトの値は "-q" になっているため、routedデーモンをlistenモードで起動するのであれば変更の必要はありません。
 router_flags="-q"

BSD/OSの設定

 BSD/OSの場合、自分のホスト名やIPアドレスなどに関する設定は、/etc/netstart というファイルでおこないます。関連するパラメータを以下にまとめます。

●自分のホスト名

FreeBSDの場合と同じく、"hostname"というパラメータにホストのFQDNを指定します。

hostname="somepc.foo.co.jp"

BSD/OSでは、hostnameコマンドは /etc/netstart ファイルのなかで実行されます。

●利用するネットワーク・インターフェース

 マシンが利用するEthernet カードなどに対応するインターフェース名を指定します。複数のネットワーク・インターフェースを設定するには、それぞれのインターフェース名を空白で区切って並べます。FreeBSDと異なり、ループバック・インターフェース(lo0)はこのパラメータには指定しません。

 interfaces="eb0"

●ネットワーク・インターフェースに割り当てるIPアドレス

 interfaces パラメータで指定したネットワーク・インターフェースに割り当てるIPアドレスを "ipaddr_インターフェース名" というパラメータで指定します。

 ipaddr_eb0="192.168.4.20"

●ネットワーク・インターフェースに割り当てるネットマスク

 "netmask_インターフェース名" というパラメータを使って、IPアドレスのネットマスクを指定します。指定方法としては、16進表記とドット表記が利用できます。このパラメータを指定しない場合は、IPアドレスのクラスに応じたネットマスクが設定されます。

●ネットワーク・インターフェースに対するオプション

 利用するネットワーク・インターフェースに対して、ifconfig コマンドを実行する際のオプションが指定できます。パラメータは "linkarg_インターフェース名" と "additional_インターフェース名" の2種類で、それぞれ以下のような意味をもちます。

・linkarg_インターフェース名

 リンクオプション(ネットワーク・インターフェースに接続するメディアの属性など)を指定します。たとえば、10BaseT と 10Base2 の2つのコネクタをもつEthrnet カードの場合、リンクオプションとして "media 10base" を指定すると、10BaseT を使うことを明示できます。

 lonkarg_eb0="media 10baset"

 詳細については、オンライン・マニュアルifconfig(8)などを参照してください。

・additional_インターフェース名

リンクオプション以外のオプションを指定することができます。ifconfig コマンドに与える引数の順番としては、"linkarg_インターフェース名" パラメータのほうが先になります。

●デフォルト経路のゲートウェイ

 対応するパラメータは "defroute" で、FreeBSDの場合と同じくデフォルト経路のゲートウェイのIPアドレスを指定します。

 defroute="192.168.4.3"

このパラメータのデフォルト値は空なので、デフォルト経路を手動設定しない場合はそのままにしておきます。

●その他の経路の手動設定

 BSD/OSでは、デフォルト経路以外の経路を手動設定するには、/etc/netstart ファイルに route コマンドを直接実行する行を追加します。/etc/netstart の最後のほうに route コマンドを使ってデフォルト経路を追加する部分があるので、その他の経路を手動設定する場合はそのあとに追加すればいいでしょう。下記の例では、アンダーラインの部分が新たに追加した設定です。

# Configure a static default route as defined in the header
if [ X$defroute != X ];then
  route add default $defroute
fi

route add -net 192.168.7.0 192.168.4.11
route add -net 192.168.9.0 192.168.4.11

●経路制御デーモンの設定

 経路制御デーモンを利用するかどうかは、"routed_flags" というパラメータで指定します。値が "NO" の場合は、経路制御デーモンを起動しません。NO 以外ならば routed を起動し、値がそのまま routed の引数として与えられます。したがって、以下のように指定しておけば、routed が listen モードで起動されます。

routedflags="-q"

Solarisの場合

 Solaris 2.6 のネットワーク設定は、FreeBSD や BSD/OSとかなり違います。
システムの起動時の設定をおこなうファイルは、おもに /etc/rc?.d ディレクトリに置かれています。FreeBSD や BSD/OS と同様、これらはすべてシェル・スクリプトなので、どのようなことをしているのかは比較的理解しやすいでしょう。

●ホスト名

 設定は /etc/rcS.d/S30rootusr.sh でおこなわれています。/etc/nodename と "/etc/hostname.インターフェース名" というファイルに設定します。インターフェース名は、"netstat -i" で確認できます。Ultra 1 などの内蔵ネットワーク・インターフェースは hme0 という名前なので、/etc/hostname.hme0 となります。ネットワーク・インターフェースがもう1つある場合は、hostname.hme1 などとなります。/etc/nodename では、hostname コマンドで返される名前を設定します。"/etc/hostname.インターフェース名" のほうは、ifconfig コマンドを用いたネットワーク・インターフェースの設定に使われます。したがって、このホスト名は /etc/hosts ファイルにもIPアドレスとペアで設定しておきます。

●ネットマスクなど

 ホスト名と同様、設定は /etc/rcS.d/S30rootusr.sh でおこなわれます。netmask については、ファイル /etc/netmasks に記述しておけばその設定になります。また、/etc/rc2.d/S72inetsvc で、ふたたび NIS/NIS+ のマップを参照して再設定します。ですから、NIS/NIS+ で netmask のデータが配布できるようになっている場合には、わざわざ /etc/netmasks に記述する必要はありません。

●デフォルト・ゲートウェイ

 /etc/defaultrouter ファイルに、デフォルト・ゲートウェイになるホストのホスト名を指定します。これらは、/etc/rcS.d/S30rootuser.sh や /etc/rc2.d/S69inet ファイルで参照されます。

●in.routed

 デフォルト・ゲートウェイが設定されていない場合、経路制御デーモンである in.routed が自動的に起動されます。これは、/etc/rc2.d/S69inet ファイルで制御されています。
 その他の経路制御を手動でおこないたい場合は、/etc/rc2.d の下に S99addroute などの名前のシェル・スクロプトを作り、そのなかで設定します。シェル・スクリプトの書き方には約束事がありますが、これはその他のファイルを参考にするとよいでしょう。たとえば、/etc/rc2.d/S73nfs.client は短いスクリプトなのでわかりやすいと思います。S99xx という名前にする理由は、これらのファイルを呼び出す /etc/rc2 ファイルを見れば分かります(/etc/rc2 ファイルは、/etc/inittab ファイルから起動されています)。

一つ前へ