ASCII.jp ルーティングの基礎「静的ルーティング」を試してみよう
デフォルトゲートウェイは便利な仕組みだが、悪くいえば「丸投げ」なので、無駄なパケットが発生する場合がある。そこで、丸投げではなくきちんと目的にパケットを転送する方法として、ルータにルーティングの設定を行なってみよう。
きちんと宛先を設定する
前回同様に、図1のネットワークで、192.168.1.0/24ネットワーク側から192.168.3.3のようにルータBにもつながっていないアドレス宛にパケットを送ったとしよう。
図1 ヤマハのルータ「RTX1100」を2台使った今回の実験環境
このパケットを受け取ったルータAは、自身に直結していないIPアドレスが宛先になっているので、無条件でルータBに転送する。今度はこのパケットを受け取ったルータBだが、こちらも自身には直結していないのでルータAに送り返す。パケットにはTTL(Time To Live)が設定されているので、そのうちどちらかのルータが破棄してくれる(画面1)。
画面1 TTLが0になってパケットが破棄されたことがわかる
とはいえ、これはネットワークの帯域を浪費する意味のないやり取りであるうえ、ルータにも負担がかかる。つまり、今回のようにルータの数が少なく、つながるネットワークが把握できているのであれば、それぞれきちんとルータに設定したほうがよい。そうすることで、無駄なやり取りが減らせるわけだ。
では具体的に、どのように設定すればよいのだろうか。まずはルータAから見ていこう。
ルータAがルータBに転送しなければならないパケットは、宛先がルータBにつながったネットワークのものだけである。今回の例に挙げたネットワークでは、192.168.2.0/24宛のパケットだけだ。そこで、画面2のように設定を変更する。
画面2 いったんデフォルトゲートウェイを削除して、新たにルータBにつながったネットワークの情報を追加する。インターフェイスにIPアドレスを設定すれば、GUIが使える
この状態で、192.168.1.0/24宛か192.168.2.0/24宛ではないパケットを受け取っても、転送先がルーティングテーブルにないので、何らかのエラーを返してくるはずだ。pingコマンドで試してみたところ、PCには画面3のように表示された。ルータAのルーティングテーブルに登録されていないネットワークアドレスなので、予想通り転送せずに送信元にエラーを通知しているわけだ。
画面3 ルーティングテーブルにないネットワークには転送できないので、エラーを返す
一方のルータBにも、ルータAと同様の設定が必要になる。こちらは192.168.1.0/24宛のパケットを10.0.0.2のインターフェイスから10.0.0.1宛に送信すると設定すればよい(画面4)。
画面4 ルータB側の設定。これを忘れるとパケットが戻ってこない
●
ここまで試してきたのは、すべてルーティングテーブルを手動で設定する「静的ルーティング」である。ルータの台数が少なく、収容するネットワークがそれほど多くなければ静的ルーティングでも問題ない。しかし、ルータの台数や管理対象となるネットワークが増えてくると、設定変更などの手間もかかるし、入力ミスでパケットがルーティングされないといった事故も起こり得る。
そこで次回は、ルータの台数を増やしてネットワークを複雑にしつつ、ルーティングテーブルを自動で更新する「動的ルーティング」を試してみたい。