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

4. TCP/IP ルーティング

[前もっておことわりしますが、ここでは、「スパンニング・ツリー (spanning-tree)」ルーティングについて述べており、IP パケットの 「ソース・ルーティング(source-routing)」ではありません。 トークンリングではソースルーティングが使われますが、これは IP の ソースルーティングではなく、(トークンリングの)MAC 層で行われて るものです。 トークンリングで MAC ソースルーティングを行っているのは、それが トークンリングによるパケットの配送に必要だからです。 一般的には IP ソースルーティングを使う事は推奨できません。]

プロクシ ARP についてもっと詳しく知るためには、IP パケットが ネットワーク上でどのようにルーティングされるのかを知る必要がありますが、 ここではあまり詳しく述べるつもりはありません。 詳しい情報を知りたい方には、深く解説された、たくさんの本があります。 (本が嫌いでしたら、RFC ドキュメントをお読みください。)

IP パケットは、それが経由するネットワークのそれぞれの段階で ルーティングされます。それぞれのホスト、ルーター、ゲートウエイ は、それぞれが経路テーブル情報のコピーを所有し、それに もとづいてそれぞれの IP パケットをどこに送ればよいかを決定します。

ルーティングは、「IP ネットワーク」 を使って行なわれます。 それぞれのネットワークインターフェースには、ユニークな IP ネットワークと、IP アドレス、ネットマスクが割り当てられています。 「IP ネットワーク」 とは、単純にIP アドレスと ネットマスクのビット ごとの積をとったものです。例えば、IP アドレス 10.124.35.40 で、 ネットマスクが 255.255.0.0 の場合には、「IP ネットワーク」 は、 10.124.0.0 となります。 この例ではバイト単位のネットマスクを使っていますが、バイト単位では ないネットマスク(訳注:例えばサブネッティングした時など)の場合でも 同様です。

Linux はネットマスクを経路エントリーと関連づけます。 システムに経路を付け加える時 (訳注: route コマンドなど) には、 そのIP アドレスと関連する行き先のデバイスを指定しますが、 この際にネットマスクを指定しなければ、ifconfig でそのデバイス を設定したときに指定したデフォールトネットマスクが使われます。

ルーティングに関しての理解を助けるために、次のような構成の システムを考えてみましょう。

Destination     Netmask          Gateway       Flags    Device
10.124.0.0      255.255.0.0      0.0.0.0       U        eth0
10.125.0.0      255.255.0.0      0.0.0.0       U        eth1
10.126.0.0      255.255.0.0      10.125.31.1   UG       eth1
10.124.12.5     255.255.255.255  0.0.0.0       UH       ppp0
0.0.0.0         0.0.0.0          10.124.25.1   U        eth0

このシステムは3つのネットワークデバイスを持っています。 2つはイーサネットコントローラで、1つは PPP デバイスです。 これら3つのいずれからも IP パケットは到着し、さらにこのシステム を通じて、 3つのどのデバイスに対してもパケットは転送されます。

デフォールトの経路は、上のエントリーで示されている通り、 10.124.25.1 のゲートウエイデバイスです。 ゲートウエイに送るためには eth0 コントローラが使われます。

PPP デバイスが1つ接続されており、その IP アドレスは 10.124.12.5 です。

eth0 デバイスは IP ネットワーク 10.124.0.0 上にあり、eth1 デバイスは IP ネットワーク 10.125.0.0上にあります。

さらに、IP アドレス 10.125.31.1 のゲートウエイを通じて利用可能な IP ネットワーク 10.126.0.0 へのネット経路が存在します。

ルーティングがどのように行われるのかを理解するために、10.125.45.1 に送られる IP パケットを考えてみましょう。

Linux は経路テーブルを検索し、それぞれのエントリからネットマスクを 取りだし、ビットごとの積をとり、行き先の IP アドレスと比較します。 合致したら、パケットはそのデバイスに送られます。

結果として、IP アドレス 10.125.45.1 のパケットは、eth1 デバイスに 送られます。

同様に、 IP アドレス 10.124.12.6 のパケットは eth0 デバイスに送られ るのですが、IP アドレス 10.124.12.5 のパケットは ppp0 デバイスに 送られます。 なぜなら、ppp0 デバイスは 10.124.12.5 というただひとつの IP アドレスだけしか受け取ることができないからです。

10.126.31.4 宛のパケットの場合はちょっと異なります。 この場合には、このアドレスに接続された「ゲートウエイ」が存在する からです。 上で述べたようなのと同じ方法で検索されますが、ただ単に eth1 デバイス に送られるのではなく、10.125.31.1 という IP アドレスのシステムに 送られるのです。つまり、最終的な行き先のアドレス 10.126.31.4 ではなく、 ゲートウエイの IP アドレス (10.125.31.1) に対応する MAC アドレスに 送られるわけです。

10.125.31.1 のシステムに到着したら、そのシステムの経路テーブルを 使って、最終的な行き先の 10.126.31.4 に転送されます (たとえばその システムの eth3 インターフェースを使って)。

このようなルーティングでは、いろいろな誤りが発生し得ます。 それについてはここではあまり触れたくありませんが、たとえば、 10.126.31.1 が 10.126.31.4 のアドレスに対する経路を持っていなかった場合、 もともとの送り元に対して、ICMP (Internet Control Message Protocol) パケットを送り返し、「そのホストに対する経路が無い」ことを知らせます。


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