Windows TIPS
[Network]
  Windows TIPS TOPへ
Windows TIPS全リストへ

ネットワークのルーティングは双方向で設定する

デジタルアドバンテージ 打越 浩幸
2005/05/14
 
対象OS
Windows 2000
Windows XP
Windows Server 2003
ルータはIPパケットのあて先IPアドレスのみを見てルーティング処理を行っている。
ルータに片方向のルーティング情報しか設定されていないと、パケットは相手には届くが、戻ってくることができない。
ルーティング情報をセットする場合は、片方向だけでなく、逆方向からも到達できるように、経路途中のルータに設定しておく必要がある。
 
解説

IPルーティングとは

 複数のTCP/IPネットワークをルータで接続してより大きなネットワークを構築する場合、それぞれのルータにはルーティングを行うための情報、いわゆる「ルーティング情報」を設定する。ルーティング情報には、あるIPアドレス(のグループ)に対して、どこのインターフェイスへ送信すればよいかという情報が記録されている。これらが集まったものがルーティング・テーブルである。

Windowsネットワーク連載「IPルーティング」

 ルータはパケット(IPパケット)を受信すると、どのインターフェイスから受け取ったかには関係なく、そのあて先IPアドレスに基づいてパケットを判別し、適切なインターフェイスへパケットを送出する。具体的には、あて先IPアドレスに最もマッチするルートをルーティング・テーブルから探し出し、そのエントリに関連付けられているインターフェイスへパケットを送出する。これをIPフォワード(IP転送)といい、これを繰り返すことにより、最終的な目的のネットワークまでパケットが届けられる。

ルーティング情報は双方向にセットする

 ルーティング情報は、各ルータにそれぞれ設定する必要があるが、この情報は、双方向で通信ができるように、それぞれ設定しておかなければならない。片方向のルーティング情報しか設定してないと、IPパケットが戻ってくることができないからだ。上で述べたように、IPフォワードでは、「あて先IPアドレス」情報のみが利用される。そのパケットがどのネットワークやどのインターフェイスから来たのか、どの経路(ルータ)を経由してきたのか、といった情報は利用されないし、そういった情報が自動的にルータに蓄積されることもない。そのため、片方向しかルーティング情報が設定されていないと、パケットを送ることはできても戻ってくることができず、通信不能となる。

 以下に例を示す。ここには3つのネットワークA、B、Cがあり、それぞれの間はルータ(R1とR2)で相互に接続されている。ここで、ネットワークA上のコンピュータPC-AからネットワークC上のコンピュータPC-Cにパケットを送信するためには、2つのルータに、「ネットワークCに到達するためのルーティング情報」が設定されていなければならない。

片方向のルーティング情報のみが利用できる状態
PC-AからPC-Cへは送信できるが、PC-CからPC-Aへ送信するための逆方向のルーティング情報が利用できないため、パケットは届かない。

 この設定が行われていれば、「PC-AからPC-Cにパケットを送信」することが可能になる。だがこれだけでは、逆に、「PC-CからPC-Aにパケットを送信(返信)」することはできない。逆方向のルーティング情報が定義されていないからだ。PC-CからルータR2にパケットを送っても、R2はPC-Aの所在するネットワーク(ネットワークA)へのルーティング情報を持っていないので、送信することができず、エラーとなる(実際には、R2はパケットを単に破棄して、必要ならばPC-Cにエラー情報のICMPメッセージを返すなどの動作をする)。なお、ここでは「パケットを返信」としたが、実際には、送信も返信も違いはない。ルータから見れば単なる同じIPパケットであり、あて先が異なるだけでしかないからだ。パケットの内容が要求か返信かといった違いは、上位層(TCPやUDP層)が決めることであり、IP層のレベルで見れば違いはない。

 TCPでは双方向通信ができることが必須であるし、UDPを使ったアプリケーションでもUDPパケットが往復することは一般的である。まれに、送信するだけで受信することがないというアプリケーションもあるが(エラーやログ情報などを一方的に通知するだけとか、マルチキャストで送信するだけのアプリケーションなど)、一般的には、パケットの送信と受信がともにできなければ、正しく通信できない。

 以上の状態を回避し、正しくパケットがルーティングできるようにするには、次のように、逆方向のルーティング情報もそれぞれのルータに設定する。

双方向のルーティング情報が設定された状態
PC-AからPC-Cだけでなく、PC-CからPC-Aへも正しく届くので、通信が可能。

 これにより、PC-Aから送信されたパケットはPC-Cに届き、さらに逆方向の通信も可能になる。新しいネットワークを導入する場合は、このように途中に介在するすべてのルータに対して、適切なルーティング情報をセットしなければならない。

 なお以上では、ルータに対するルーティング情報の設定について述べているが、個別の各コンピュータに対して特殊なルーティング情報を設定する場合でも同様である。例えばPC-Aに対して、ネットワークDに向かう特別なルーティング情報を手動で追加した場合、パケットが逆方向からも戻ってくることができるように、途中にあるルータにルーティング情報を設定する。

pingによる確認

 片方向しかルーティングが設定されていないと、例えばpingコマンドでは応答がないというエラーになる。

C:\>ping 10.2.3.4

Pinging 10.2.3.4 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 10.2.3.4:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

 これは、相手のコンピュータが(何らかの理由で)pingに応答しない場合の状態と同じように見える。そのため、相手側のコンピュータの設定が間違っているのではないかと考えてしまうかもしれない。だが実際には、ルーティング設定が間違っていてもこのような状態になるので、トラブルシューティング時には注意したい。相手側にまでパケットが届いているかどうかは、例えば相手側でパケットをキャプチャして解析するか、netstat -sコマンドでICMPv4の統計情報(ICMP Echosの着信数)の変化などを見れば確認することができるだろう。相手側の問題か(ファイアウォールでpingの着信を禁止にしているとか、IPアドレス設定が間違っているなど)、それともルーティングの問題かを区別して、適切に対応していただきたい。End of Article

関連記事(Windows Server Insider)
  Windows TIPS:pingでネットワーク・トラブルの原因を調査する
  Windows TIPS:tracertでネットワークの経路を調査する
  Windows TIPS:ルーティング・テーブルを操作する
  Windows TIPS:デフォルト・ゲートウェイは1つのみ有効
  Windows TIPS:IPルーティングを有効にする方法(レジストリ設定編)
     
この記事と関連性の高い別のWindows TIPS
IPルーティングを有効にする方法(レジストリ設定編)
IPルーティングを有効にする方法(Server OS編)
tracertでネットワークの経路を調査する
ICMPリダイレクト使用時のファイアウォール設定に注意
pingの-rオプションでパケットの通過ルートを確認する
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」

TechTargetジャパン

Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

TAGGY、中小ECショップ向けレコメンド広告「おもてなしバナー for FutureShop2」の提供を開始
ディスプレイ広告の最適化サービスを手掛けるTAGGYは12月19日、フューチャーショップのAS...

見えない顧客を育てるプラットフォーム、トライアックスが開発
トライアックスは12月18日、中長期の顧客育成を支援するコミュニケーション マネジメント...

ハイブリス、小売業オムニチャネルに関する調査結果を発表
コマース・プラットフォーム・プロバイダである独ハイブリスソフトウェア(an SAP Compan...