前のページ 次のページ 目次

10. 経路制御(ルーティング)(必須)

必要なネットワークデバイスの設定が終れば、どのような経路で IP データグ ラムを伝送するか考えなければなりません。ネットワークデバイスが一つしか 無い場合はごく簡単で、自分自身以外へのデータグラムは全てそのデバイスへ 送るように設定するだけで済みます。もし 2 つ以上のネットワークインタフェー スを持っている場合、問題は多少複雑になります。例えば、イーサネットのデ バイスと自宅のマシンとつなぐための SLIP デバイスの 2 つを持っている場 合、自宅のマシンへ行くデータグラムは SLIP デバイスへ、その他のマシンへ 行くデータグラムはイーサネットデバイスへ、それぞれ送るような設定が必要 です。ルーティングは実際にはごく単純なメカニズムですが、最初は少々理解 するのに手こずるかも知れません。でも大丈夫、みんなそう感じています。

route コマンドをオプション無しで起動すると、現在のルーティン グテーブルが表示されます。

unix のネットワークの設定には、大きく 4 種類のルーティングメカニズムが 使われています。以下にそれらを示します。

10.1 静的/手動経路制御

「静的な経路制御(static routing)」とは、その名が示す通り、あらかじめ指 定された経路情報に従う経路制御の方法で、ネットワークに何かトラブルが起 きたり別の経路が使用可能になっても、あらかじめ決められた経路が変化する ことはありません。静的な経路制御は目的とするホストへ代替の経路が無いよ うなごく簡単なネットワーク、すなわちそのホストへの経路が一つしかないよ うな場合、あるいはネットワークが変更されてもそのホストへの経路は変更し たくないような場合に使います。

Linux では、SLIP や plip を使って接続する場合のために、 ifconfigpointopoint パラメータで指定するという特 別の経路指定法が用意されています。SLIP/plip を使い、 pointopoint パラメータで接続先のアドレスを与えた場合、ip の経 路制御用のソフトウェアは接続先のアドレスへ静的な経路が成立したと考えま す。専用回線を使って SLIP/plip で接続する場合に使う route コ マンドは以下のようになります。

#/sbin/route add IPR.IPR.IPR.IPR

ここで、

IPR.IPR.IPR.IPR

は接続先の IP アドレスになります。

10.2 デフォルトの経路(デフォルトルート)

デフォルトルートという仕組みは、大部分のエンドユーザーのワー クステーションやネットワークにつながったほとんどのホストが最も普通に使 うものでしょう。デフォルトルートは全ての目的アドレスと一致する特別の静 的な経路です。ですから、データグラムを送るべき経路が特に指定されていな い場合、デフォルトルートので指定された経路が選ばれることになります。

もしイーサネットインタフェースが一つだけ、あるいは SLIP インタフェース のみで接続されている場合、デフォルトルートはそのインタフェースになりま す。イーサネットインタフェースを使っているなら、同じネットワーク上の他 のマシンへデータグラムを送る場合、どのホストへデータグラムを送るべきか はカーネルが知っています。カーネルは、先に説明したネットワークアドレス とネットワークマスクを使って、どこへデータグラムを送るべきかを判断して います。どこにデータグラムを送るべきかわからない場合、送信先は同じネッ トワーク上ではないと判断し、そのデータグラムを ルーターに送り ます。このためにはデフォルトルートであなたのネットワークのルーターを指定しておく必要があります。SLIP 接続の場合は SLIP サーバールーターのような機能を果しますので、デフォルトルートは SLIP サーバーを指すようにしておきます。

デフォルトルートを設定するためには、以下のコマンドを rc.inet1追加し、ネットワークデバイスの設定を終えてから以下 のコマンドを実行します。

#
# Add a default route.
#
/sbin/route add default gw RGA.RGA.RGA.RGA
#

ここで、

RGA.RGA.RGA.RGA

はルーター/ゲートウェイのアドレスです。

10.3 代理(Proxy) ARP

この方法は汚いし、トラブルを起しがちなので、特に注意する必要があり ます。しかし、とにかくこれを使いたい、という人もいるはずなので説 明することにします。

proxy arp をもっとも必要としているのは、Linux マシンを使って SLIP のダイアルインサーバーを構築しようとする人でしょう。PPP の場合は PPP デーモンが同じ仕事をずっと単純かつ自動的に、そしてずっと安全にやっ てくれます。

tcp/ip でネットワークに接続しているホストがあなたのマシンと通信する場 合、そのホストはあなたのマシンの IP アドレスは知っているけれど、データ グラムを送るべきハードウェア(イーサネット)アドレスは分らないはずです。 IP アドレスとハードウェアアドレスを相互に変換するのが、ARP(Address Resolution Protocol) の役目です。イーサネットプロトコルはブロードキャ ストアドレスという特別のアドレスを定義しており、このアドレスはすべての イーサネットカードが認識できます。ホスト A からホスト B へ通信したいと します。ホスト A はホスト B の IP アドレスは知っているものの、実際にデー タグラムを送るべき(ホスト B の)ハードウェアアドレスを知りません。その 場合、ホスト A は、ホスト B の IP アドレスを含んだ特別のフォーマットの データグラムをブロードキャストアドレスに流します。ブロードキャストアド レスに流れたデータグラムは、そのネットワークに接続された全てのホストが 認識でき、そのデータグラムに指定された IP アドレスをもつホスト(B) が自 分のハードウェアアドレスを返答します。ARP はこのようにして IP アドレス からハードウェアアドレスを変換します。

ですから、あるマシン(A) を別のマシン(B)のサーバーとして使う場合、サー バーとなるマシン A が、物理的にはイーサネットに接続されていない B の IP アドレスに対する ARP リクエストにも答えるようにしなければなりません。 IP アドレスを割りあて済みのローカルなネットワークに SLIP でダイアルイ ン接続してくる場合を考えましょう。例えば、割り当て済みのアドレスを 128.253.154.120-124 として、マシンのハードウェアアドレスは 00:00:C0:AD:37:1C だとします(イーサネットカードのハードウェア アドレスは ifconfig コマンドを引数無しで起動すれば表示されま す)。proxy を使って、割り当て済みのアドレスに対する arp リクエストに答 えるように設定するには、rc.inet の最後に以下のようなコマンド を追加します。

#
# Proxy ARP for those dialin users who will be using this
#           machine as a server:
#
/sbin/arp -s 128.263.154.120 00:00:C0:AD:37:1C pub
/sbin/arp -s 128.263.154.121 00:00:C0:AD:37:1C pub
/sbin/arp -s 128.263.154.122 00:00:C0:AD:37:1C pub
/sbin/arp -s 128.263.154.123 00:00:C0:AD:37:1C pub
/sbin/arp -s 128.263.154.124 00:00:C0:AD:37:1C pub
#
# End proxy arps.

pub という引数は `publish(公告)'を意味し、この引数を付けてコ マンドを実行すると、指定した IP アドレス(実際にそのマシンに与えられた IP アドレスとは違っても)への問い合わせに対して(自分の)ハードウェアアド レスを返すようになります。この例では 128.264.154.120 から 128.264.154.124 のアドレスの問い合わせに対して、 00:00:C0:AD:37:1C のハードウェアアドレスを返します。

普通、この(Proxy ARP)設定に加えて、 SLIP サーバーにする Linux マシンに は 128.264.154.120 から 124 のアドレスをそれぞれに対 応する SLIP デバイスへ送るような経路表を設定しなければなりません。

PPP を使っている場合、手動で arp テーブルを書きかえるようなことは不要 です。pppd は、接続先の IP アドレスとサーバーマシンの IP アド レスが同じネットワークに属し、かつ proxyarp という引数が与え られたら自動的に arp テーブルを修正します。ただし、サーバー側で起動す るpppd のコマンドラインの引数でネットマスクを指定する必要はあ るかも知れません。

10.4 gated 経路制御用のデーモン

gated は多くの場合 proxy arp の替りに使え、proxy arpよりもずっとすっきりしています。しかし、gated の基本的な使い方 は linux マシンをあなたのネットワークのインテリジェントな ip ルー タにすることです。gated は複数のルーティングプロトコル、 例えば RIP, BGP, EGP, HELLO, OSPF といったルーティングプロトコルを理解 します。小さなネットワークでもっとも広く使われているのは RIP(Routing Information Protocol)です。rip を使うという設定で gated を起動した場合、その Linux マシンは 定期的にルーティングに関する情報を特別のフォーマットのデータグラムでネッ トワークにブロードキャストします。この情報を受けとることで、ネットワー クにいる他のマシンはあなたのマシンを経由して辿りつけるアドレスを知るこ とができます。

お使いのネットワーク上の全てのホストが gatedrouted を動かしている場合、gatedproxy arp の替りに使うことができます。ネットーク上に動的なルーティング のマシンと静的なルーティングのマシンが混在している場合、静的なルーティ ングのマシンのルーティングテーブルが gated の情報で破壊されな いように特に注意する必要があります。というのも、それらのマシンが使う静 的なルーティング情報は外部からは更新されないからです。gated を使いながら静的なルーティング情報を加える最善の方法は /etc/gated.confstatic という部分を加えることです。 この点については後述します。

gated は通常 rc.inet2 で起動されます。 rc.inet2 については次節で扱うことにします。routed と 呼ばるデーモンについて見聞きしたことがあるかも知れません。 gatedrouted の上位互換で、routed よりも 柔軟かつ高機能なので、routed の替りに gated を使うべ きでしょう。

gated の入手方法

Gated は以下のサイトから入手できます。

sunsite.unc.edu

/pub/Linux/system/Network/daemons/gated11_bin.tgz

gated のインストール

gated のバイナリ配布には、3 つのプログラムと二つの設定ファイ ル例が附属しています。

プログラムは:

gated

実際の gated デーモン

gdc

gated を操作するためのユーザーインタフェースプ ログラム。gdcgated デーモンをコントロールするの に利用され、gated の起動/停止、状態情報の取得などの機能を持ちます。

ripquery

ゲートウェイの既知の経路を問いあわせるための診断用プログラムで、`rip query' あるいは `rip poll' の形で使います。

設定ファイルは

gated.conf

gated デーモンを制御する実際の設定ファ イル。起動時の gated の振る舞いを設定します。あらゆるルーティ ングプロトコルの起動/停止を司どり、ルーティングプロトコルの実際の動作 を制御します。

gated.version

gated デーモンのバージョンを記載しているテキストファイル。

gated のバイナリ配布には、必要なファイルを自動的に正しい場所 にインストールする機能はないようです。幸いなことに、必要なファイルはそ れほど多くないので、それらを配置することはそれほど難しいことではありま せん。

バイナリで入手した gated をインストールするには以下の手順によ ります。

# cd /tmp
# gzip -dc .../gated.linux.bin.tgz | tar xvf -
# install -m 500 bin/gated /usr/sbin
# install -m 444 bin/gated.conf bin/gated.version /etc
# install -m 555 bin/ripquery bin/gdc /sbin
# rm -rf /tmp/bin

私はネットワーク用のデーモンを /usr/sbin に置くようにしていま す。もし異なった場所にインストールしたいなら、それに合わせてインストー ル先を変更してください。以下に示す gated の設定では、 gated に古い routed デーモンのエミュレートをさせるよ うにもしています。この設定で、たいていの場合は大丈夫なはずです。

#
#  This configuration emulates routed.  It runs RIP and only sends
#  updates if there are more than one interfaces up and IP forwarding is
#  enabled in the kernel.
#
#       NOTE that RIP *will not* run if UDP checksums are disabled in
#       the kernel.
#
rip yes ;
traceoptions all;
#

もし静的な経路制御を加えたい場合、/etc/gated.confstatic の部分に加えることができます。

#
static {
37.0.0.0 mask 255.0.0.0 gateway 44.136.8.97 ;
host 44.136.8.100 gateway 44.136.8.97 ;
} ;
#

この例では、37.0.0.0 のクラス A のネットワークへの経路は 44.136.8.97 のゲートウェイ経由で、44.138.8.100 のホ ストへも 44.136.8.97 のゲートウェイ経由で接続するように指定し ています。このように設定しておけば route コマンドでその経路を 指定しなくても、gated が自動的にその経路を付加してくれます。

マニュアルをインストルールするには以下のようにします。

# cd /tmp
# gzip -dc .../gated.linux.man.tgz | tar xvf -
# install -m 444 man/*.8 /usr/man/man8
# install -m 444 man/*.5 /usr/man/man5
# rm -rf /tmp/man

gated のマニュアルには、設定と使用法に関する詳細な説明が書い てあります。gated の設定については、gated-config と いうマニュアルページを参照してください。


前のページ 次のページ 目次