経路制御(ルーティング)

  1. 別ネットワーク上に対するデータ送信

    前述の例2で、ノードCはノードDが同一サブネット上に「ない」ことがわかるので、ノードDに直接パケットを送信しようとしても到達できないことになります。

    では、この場合どこへ送ればよいのでしょうか?そもそも、ネットワークを分けるにはどうすればよいのでしょうか?

  2. ネットワークを分ける

    ネットワークを分けるためには「ルータ」という装置を利用します(*1)。ルータは、物理的には2つ以上のネットワーク・インターフェース(イーサネットの場合ならLANボード)を持つPCと思えば間違いありません。各々のLANボードは、それぞれ異なったネットワーク・アドレスを持つLANに接続されます(*2)。

    (*1)…ルータを含め、異なったネットワークやプロトコル同士を結合するための装置やソフトウェアのことを、一般的にはゲートウェイと呼んでいます。

    (*2)…実際には、イーサネットと回線のように、異なったメディアを変換する機能を兼ねたものが多いです。イーサネット同士を接続するものは特別にIPルータと呼ばれ、なぜか値段も高くなります。

    ここで、ネットワーク1とネットワーク2は、同じクラスAに属しているとします。ネットワーク1に属するノードCが、ネットワーク2に属するノードDにパケットを送信したい時、ノードCはルータに対してパケットを送信することにより、ノードDへの送信を依頼しなければなりません。

  3. 経路制御(ルーティング)テーブル

    ここで、

    異なったネットワークにあるノード
    に対してパケットを送信したい場合、
    誰に(どのIPアドレスを持つノードに)
    中継を依頼すればよいのか?

    という情報を得るためのテーブルが各ノードのメモリ中にあり、これを経路制御(ルーティング)テーブルと呼びます。

  4. routeコマンド

    ルーティング・テーブルに経路情報を追加/削除したり、設定されている経路情報を表示したりするためには、route コマンドを使います。たとえば、ネットワーク 1.2.0.0 へのパケットは 192.168.0.1 というIPアドレスを持つルータに送る(中継を依頼する)ように設定するためには、以下のようにします。

    例3)Windows 95/NT の場合

    C:\>route add 1.2.0.0 mask 255.255.0.0 192.168.0.1

    例4)Linux の場合

    server2:~# route add -net 1.2.0.0 netmask 255.255.0.0 gw 192.168.0.1

    また、設定されている経路情報を表示するには、以下のようにします。

    例5)Windows 95/NT のルーティング・テーブル

    C:\>route print
    Active Routes:
    Network Address Netmask Gateway Address Interface Metric
    0.0.0.0 0.0.0.0 192.168.0.254 192.168.0.15 1
    127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
    192.168.0.0 255.255.255.0 192.168.0.15 192.168.0.15 1
    192.168.0.15 255.255.255.255 127.0.0.1 127.0.0.1 1
    192.168.0.255 255.255.255.255 192.168.0.15 192.168.0.15 1
    224.0.0.0 224.0.0.0 192.168.0.15 192.168.0.15 1
    255.255.255.255 255.255.255.255 192.168.0.15 192.168.0.15 1

    この意味は以下のようになります。

    1. (明細の4行目)192.168.0.15 は、127.0.0.1(自分自身)を指します(ループバック・アドレス)。→LAN上に送出する必要がないことがわかります。

    2. (3行目)192.168.0.15 以外の192.168.0.0/24は、192.168.0.15(自分のIPアドレス)へ送る(つまり直接送信できる)ことを示します。

    3. (1行目)上記以外の 0.0.0.0/0(つまりすべてのアドレス)は、192.168.0.254(ルータ)へ送ることを示します。

    最後のルールのように、マッチするエントリがない場合のデフォルトの経路のことをデフォルト・ルートと呼び、デフォルト・ルートの場合の送信依頼対象ルータのことをデフォルト・ゲートウェイと呼んでいます。実は、ゲートウェイ(ここでは他のLAN/WANと結ぶためのルータ)が1つのネットワーク内に1つしかなければ、このデフォルト・ゲートウェイさえ設定しておけば、すべての通信が行えます。デフォルト・ゲートウェイは、Windows 95/NT の場合、「コントロール・パネル」の「ネットワーク」で設定できます。

    例6)Linux のルーティング・テーブル

    ns:~# route -n
    Kernel routing table
    Destination Gateway Genmask Flags MSS(*3) Window Use Iface
    192.168.4.1192.168.0.250255.255.255.255UGH150003eth0
    192.168.4.2192.168.0.250255.255.255.255UGH150001eth0
    192.168.4.3192.168.0.250255.255.255.255UGH150003eth0
    210.161.96.64*255.255.255.240U150001eth1
    192.168.0.0*255.255.255.0U150001eth0
    192.168.4.0192.168.0.251255.255.255.0UG1500015eth0
    192.168.3.0192.168.0.251255.255.255.0UG150000eth0
    127.0.0.0*255.0.0.0U35840355lo
    default210.161.96.65*UG150002eth1

    (*3)…MSS:Max Segment Size --- 一度に送信できるパケットの最大長。 イーサネットの場合は1500バイトと決まっています。 回線などの場合は品質が低いので、 再送が多発しないように数百バイトなどに落としたりします。 MTU (Maximum Transfer/Transmission Unit) とも言います。

    この例では、一番右の項目 Iface(Interface) に eth0 と eth1 というのがあります。実は、この Linux マシンはルータの役割を持つゲートウェイで、eth0, eth1 という2つのイーサネットの口を持っています。上記の例では、192.xx.xx.xx へのパケットは eth0 のポートに、それ以外のパケットは eth1 のポートにそれぞれ転送するような設定となっています。

    ※ゲートウェイ、およびデフォルト・ゲートウェイには、
    それぞれ自ネットワーク内の(直接送信可能な)
    ノードを指定しないと意味がありません。

Prev Next Up