複数のサブネットを繋がる:Windowsとルーターのスタティックルーティング設定

複数のサブネットを繋がる:Windowsとルーターのスタティックルーティング設定

複数のサブネットを持つネットワーク

前の記事で、自宅のネットワークは複数のサブネットで構成していると紹介しました。

スイッチにLANケーブルを差し込んでそのまま同じLANにある機器にアクセスできるのは同じサブネット内に限ることですから、何も設定しないとサブネットの間の相互アクセスがうまくいかない場合があります。

複数のサブネットを繋がる:Windowsとルーターのスタティックルーティング設定
本記事ではこのネットワーク構成図を例にして説明していきます。

PCからNASにアクセスしようとする場合

PCのデフォルトゲートウェイはRouterCですので、デフォルト状態ではパケットはRouterCに送信されます。
このパケットの宛先がLANアドレスですので、RouterCに破棄されるか、外に送信してもプロバイダーの端末機器に破棄されます。
故に、真っ先にやらなければならないのはPCに「NASへのパケットはRouterCではなく、RouterBに送信する」という指示を設定することです。

PCのルーティングテーブル

Windows10では以下のコマンドでルーティングテーブルにスタティックルーティングを追加できます。

route -p add 10.0.0.0 mask 255.255.0.0 10.1.0.1

このコマンドの意味は10.0.x.xへのパケットはすべて10.1.0.1に送信するという意味です。
個別に設定されたスタティックルーティングはデフォルトゲイトウェイより優先度が高いため、NASへの通信はまず確実にRouterBに送信します。

from 10.1.0.2
to 10.0.0.3

ルーターB

RouterBは直接NASのいるSubnetAに繋がっていて、自動的にルーティングテーブルを取得できるので、特に設定は不要です。
ここで注意するべきのRouterBは内部ルーターですので、NAT変換を行わないように設定されていますRouterBを通過してもパケットの送信元アドレスはPCのままです。

NASからの返信

RouterAがパケットを受け取ったら、送信先が自分のサブネットだと分かるので、パケットをNASに送信します。ただし、ここまではPCとNASの通信が完了していません。NASが処理後の返信をPCに返さなければなりません。
NASからの返信はこんな感じ

from 10.0.0.3
to 10.1.0.2

このパケットは先にNASのゲートウェイであるRouterAに送信されますが、RouterAもデフォルト動作としてすべてのパケットをインタネットに送信するので、SubnetBに到達できません。

設定方法は2つあります:

NASのゲートウェイを設定する

これは最初に行ってPCの設定と同じ。
NASにも10.1.x.xへのパケットを先に10.0.0.2に送信するスタティックルーティングを設定します。

RouterAにスタティックルーティングを設定する

或いは、NASの設定を変更せず、PCへの返信を敢えてまずRouterAに送信して、そしてRouterAからRouterBに転送します。
RouterAのデフォルトルーティング設定はこちらの記事をご参照ください。
RouterAに10.1.x.xあてのパケットだけインタネットではなく、10.0.0.2(RouterB)に送るようにスタティックルーティングを設定します。

#Router(config)# ip route 10.1.0.0/16 10.0.0.2

それぞれのパラメータは宛先、サブネットマスク、次のアドレス。
CISCOの命令はWindows10と多少違いますが、考え方は全く同じです。

二つの方法の違い

この二つの方法の結果は同じですが、通信の経路が多少違いますので、実際の状況のよって使い分けたほうがいいです。

  • NASなどの端末機器にゲートウェイを設定するほうが通信経路が最短になり、RouterAで余計なトラフィックが発生しません。
  • ルーターにスタティックルーティングを設定するほうが転送負荷が発生しますが、汎用性に優れており、LAN内の機器をいちいち設定する必要がありません。

NATについて

以上の設定はRouterBでNAT変換をしない前提の話です。
RouterBでNATを有効にすれば、PCからのパケットの送信元がRouterBを通過した時点でRouterBのサブネットA側のアドレスに差し替えされますので、上記のNASとRouterAの設定が一切不要です。
ただし、そうするとサブネットAからサブネットBへのアクセスができなくなりますし(ポートフォーワードをやれば一応できますが)そもそもNATはIPアドレス不足を解決するための手段であり、IPアドレスが潤沢にある内部ネットワーク環境でむやみに使うものではないと思います。