コンピュータが通信するのに必要なものは
  • プロトコル
  • アドレス
というのは今までの内容で見てきました。同一ネットワーク内で隣接ノード間で通信するのであれば、 
  • プロトコル:Ethernet
  • アドレス:Macアドレス
があれば通信できます。

また、ネットワークを越えて別のネットワークのノードと通信するのであれば
  • プロトコル:IP
  • アドレス:IPアドレス
があれば通信できるはずですが、では本当にこの2つの要素だけで他のネットワークやインターネットの世界と通信ができるのでしょうか?答えは「できません」。
IPレベルにおける通信をするのであればもうひとつ必ず必要な機能があります。それは「経路制御機能」です

インターネット等のコンピュータネットワークは、個々のネットワークが複雑にまるで網目のように相互接続していて、その網をつかっって通信データは転送されるのです。
したがってコンピュータが他のネットワークのコンピュータと通信するためには、データを転送(やり取り)する為の最適な経路情報をネットワークの相互接続を行う機器(ゲートウェイ・ルータ)や発信元のコンピュータが認識しておく必要があります。ここでは

データを最適な経路を用いて転送していく仕組み=ルーティング(経路制御)

について学びます。
  1. ネットワーク同士を接続する機器
ネットワークはそれぞれ、異なるネットワークアドレスを持っています。それらのネットワークを相互に接続し、接続点におけるデータの転送、最適経路の検出をしてくれる機器がゲートウェイ(ルーター)です。
ルーターは大別すると二つに分類できます。ひとつはソフトウェアルーター、もうひとつはルーター専用機器です

  • ソフトウェアルーター
    コンピュータに二枚以上のNICを実装しそれぞれのNICは異なるネットワークアドレスを持つネットワークに接続され接続されたネットワーク間でのパケット転送を行う。
    WindowsOSやLinux/Unixを実装したパソコンでも構築可能です
  • ルータ専用機器
    Cisco社などから生産されているルータ専用機器。見た目も箱型で容姿はソフトウェアルーターとはずいぶん異なります。
  1. ルーターの役割
  • 経路の決定
    ルーターは受け取ったデータ(パケット)のヘッダから宛先情報を読み込んで、それを自身が持っているルーティングテーブル(経路表)と比較しそのデータを宛先に転送するなら次にどこへ転送すべきかを判断し、転送処理を行います。




    図1:簡単なルーティングの例

    図1の例は192.168.1〜3のネットワークがルーターX・Yで相互に接続されている環境で、発信元Aさんから宛先Cさんに対してデータを送信する場合です。第3項の「ルーティングテーブルの読み方
    」も参考にしながら見てみましょう。


    1. データの発信元のAさんはデータに付加した宛先のネットワークアドレス部(192.168.3.0)を読み出し、自分自身に設定されているIPアドレスのネットワークアドレス部と比較し送信データがローカルなネットワーク宛てのものか、他のネットワーク宛てのものかを判断します。ローカルなネットワーク宛てのものであれば自身で宛先ホストのMacアドレスを取得し自身で転送します。もし他のネットワーク宛てのものなら自身に登録されているルーティングテーブルのDistinationと比較します。マッチした行があればその行のGateWayに設定されたアドレスのルーター(192.168.1.254)に向けデータを転送することを決定します。

    2. ルーター192.168.1.254)は自身の接続するネットワークと同じですが、Aさんは自身の接続するネットワークにデータ転送するならば自身のどのインターフェイスからデータを転送すべきかもルーティングテーブルから決定し、そのアドレスのインターフェイス(192.168.1.1)からルーター(192.168.1.254)に向けてデータを送信します。

    3. データを受信したルーターX(192.168.1.254)もまた、データに付加された宛先のネットワークアドレス部(192.168.3.0)を読み出し、それを自身のルーティングテーブルのDistinationと比較します。マッチした行があればその行のGateWayに設定されたアドレスのルーターY(192.168.2.253)に向けデータを転送することを決定します。

    4. ルーターX(192.168.1.254)は次の転送先ルーターY(192.168.2.253)にデータ転送をするためには自身のどのインターフェイスからデータを送り出すべきかを、次の転送先ルーターY(192.168.2.253)のネットワークアドレス部(192.168.2.0)とルーティングテーブルのDistinationを比較し、転送すべきインターフェイスアドレス(192.168.2.254)を決定する

    5. ルーターY(192.168.2.253)に転送されたデータもまたC同様の処理が行われ転送すべきインターフェイスのアドレス(192.168.3.254)が決定し、そのインターフェイスに転送される。
      この段階でデータはすでに目的ネットワーク(192.168.3.0)に届けられているため、後はルーターY(192.168.3.254)からホストC(192.168.3.1)間における同一ネットワーク内でのデータリンクレベルの配送となる。
  • データの発信もとのAさんは192.168.1.0ネットワークに所属しており、他のネットワークとの通信は全て192.168.1.254を介して行います。
    このようにネットワークの出入り口がひとつしかないネットワークに所属するコンピュータには、出口ルータのアドレスをデフォルトルートとして設定するだけで他の全ネットワークと通信できるようになります。
  • ルーティングテーブルの生成・更新
    ネットワーク構成に変更があった場合などは転送経路も変更されるのでルーターはそれに備えて定期的にルーティングテーブルの更新作業を行います。ルーティングテーブルの更新作業はルーターが実装しているルーティングプロトコルを使い機器間で自動的に行う方法(ダイナミックルーティング)と管理者がコマンドなどを用いて手動で更新作業を行う(スタティックルーティング)二つの方法があります。今回は後者を中心に紹介します
    • ダイナミックルーティング
      ダイナミックルーティングを行う場合はルータ間で共通のルーティングプロトコルを実装する必要があります。代表的なルーティングプロトコルとして
      • RIP
      • RIPv2
      • OSPF
      • BGP             などなど
    • スタィックルーティング
      管理者がコマンドなどを用いて手動で更新作業を行う方法です。

      Linuxによるソフトウェアルータにおける代表的なスタティックルーティングコマンドを紹介します。

      routeコマンド
      • ネットワークルーティング設定
        routeadd -net ネットワークアドレス netmask マスク値 gw ゲートウェイアドレス
      • デフォルトルートの設定
        routeadd default gw ゲートウェイアドレス
  1. ルーティングテーブルの読み方

    • routingテーブルを表示するコマンド
      • route (Linux)
      • route print (Win)
      • netstat -r (Linux Windows 共通)
ルーティングテーブルは左列から順番に
Network Destination 宛先ネットワークアドレス
Netmask Network Destinationにかけられるネットマスク値
Gateway Network Destinationにデータ転送する場合に次に配送を依頼すべきGateWayのアドレス
Interface Gatewayで指定された宛先にデータを転送する場合、自分のどのインターフェイスからデータを出力すべきか、インターフェイスのアドレス。
Metric Network Destinationまで何個のGatewayを通過していくか。
Default Gateway ルーティングテーブルにエントリされていない宛先のデータを受け取った場合に転送を依頼するルーターのアドレス。
  1. パソコンの設定
デフォルトゲートウェイの設定はここで行います
  • Windowsの場合
  • Linuxの場合
    • routeコマンド
      • ネットワークルーティング設定
        routeadd -net ネットワークアドレス netmask マスク値 gw ゲートウェイアドレス
      • デフォルトルートの設定
        routeadd default gw ゲートウェイアドレス