ルーティングテーブル・スタティックルート・Windows 10のルーター化をWiresharkで理解する

この記事の内容

  • 2つのネットワークをまたぐ通信がなぜ失敗するか、ルーティングテーブルで理解する
  • Windows 10の「Routing and Remote Access」サービスを使ってルーターとして動作させる方法
  • デフォルトゲートウェイとスタティックルートの違いと使い分け
  • route add コマンドによる静的ルート追加の手順(永続化オプション含む)
  • Wiresharkでパケットキャプチャしながらレイヤー2/レイヤー3それぞれの動きを追う

検証環境の構成

今回の検証では、以下の3台のPCを使用します。

マシンネットワークIPアドレス
PC-A192.168.2.0/24 のみ192.168.2.202
PC-B(中継機)192.168.1.0/24 と 192.168.2.0/24 の両方192.168.1.203 / 192.168.2.201
PC-C192.168.1.0/24 のみ192.168.1.203

PC-B は2つのネットワークに足を出しており、ルーターとして構成することが今回の目標です。また、PC-AとPC-Cはインターネットへの接続のためデフォルトゲートウェイが設定されています。


ルーティングテーブルの基本

パケットを送信する際、OSはまずルーティングテーブルを参照して「どのインターフェイスから、どのゲートウェイを経由して送るか」を決定します。

ルーティングテーブルを確認するには、コマンドプロンプトで以下を実行します。

route print

ルーティングテーブルには宛先ネットワーク、サブネットマスク、ゲートウェイ、インターフェイス、メトリックが含まれています。パケットは宛先IPアドレスに最も一致するエントリに従って転送されます。どのエントリにも一致しない場合は、デフォルトゲートウェイ(0.0.0.0/0)へ転送されます。デフォルトゲートウェイも設定されていない場合は、転送エラーになります。


検証1:ルート未設定での通信失敗

PC-A(192.168.2.202)から PC-C(192.168.1.203)に対して ping を打ちます。

ping 192.168.1.203

結果:転送失敗(エラー)

PC-A のルーティングテーブルには 192.168.2.0/24 のエントリは存在しますが、192.168.1.0/24 のネットワークは登録されていません。また、このPCにはデフォルトゲートウェイが設定されていないため、どのエントリにも一致せず、パケットを送り出せずにエラーとなります。


検証2:デフォルトゲートウェイ経由での誤ルーティング

デフォルトゲートウェイが設定されているPCから同様の ping を試みます。

ping 192.168.1.203

結果:タイムアウト(Request timed out)

このケースでは以下の動きが発生します。

  1. ルーティングテーブルに 192.168.1.0/24 のエントリがないため、デフォルトゲートウェイ(例:192.168.1.254)へ転送される
  2. レイヤー2レベルでは、デフォルトゲートウェイのMACアドレス宛にフレームが送出される
  3. パケットはデフォルトゲートウェイの先へ転送されるが、192.168.2.0/24 は全く別のネットワークのため、応答が返ってこない

Wiresharkでキャプチャすると、ICMPパケットのソースとデスティネーションのIPアドレスは正しいものの、イーサネットフレームの宛先MACアドレスがデフォルトゲートウェイのものになっていることを確認できます。


Windows 10をルーターとして構成する

PC-B(中継機)をルーターとして動作させるには、Routing and Remote Access サービスを有効化します。

  1. 「コンピューターの管理」を開く
  2. 「サービスとアプリケーション」→「サービス」を選択
  3. 「Routing and Remote Access」を探して開始する

これにより、PC-B は受信したパケットを他のインターフェイスへ転送するルーター動作が有効になります。


デフォルトゲートウェイの設定

PC-A から PC-C へ通信を届けるために、PC-A のデフォルトゲートウェイを PC-B の 192.168.2.0/24 側インターフェイス(192.168.2.201)に設定します。

ネットワーク設定(IPv4プロパティ)で以下を設定します。

:192.168.2.201

この設定後、PC-A のルーティングテーブルを確認すると、デフォルトゲートウェイとして 192.168.2.201 が登録されたことが確認できます。


検証3:ルーター経由での通信と残る問題

デフォルトゲートウェイを設定した状態で再度 ping を試みます。

ping 192.168.1.203

Wiresharkでキャプチャすると、以下の流れが確認できます。

  1. PC-A がルーティングテーブルを参照し、デフォルトゲートウェイ(PC-B)へパケットを送出する
  2. PC-B がパケットを受け取り、ルーティングテーブルを参照して 192.168.1.0/24 のインターフェイス(192.168.1.203)から転送する
  3. PC-C へパケットが届き、PC-C は応答を返す

しかし、依然としてタイムアウトになります。

原因は PC-C の応答パケットにあります。PC-C はルーティングテーブルに 192.168.2.0/24 のエントリを持っていないため、デフォルトゲートウェイ(192.168.1.254)へ応答を転送してしまいます。その結果、応答が PC-A に返ってきません。

イーサネットフレームを確認すると、PC-C からの返信フレームの宛先MACアドレスがデフォルトゲートウェイ(192.168.1.254)のものになっていることが確認できます。


スタティックルートの追加

この問題を解決するには、PC-C のルーティングテーブルに 192.168.2.0/24 への経路を追加します。route add コマンドを使用します。

route add 192.168.2.0 mask 255.255.255.0 192.168.1.201 -p

各オプションの意味は以下の通りです。

パラメータ説明
192.168.2.0宛先ネットワーク
mask 255.255.255.0サブネットマスク
192.168.1.201ネクストホップ(PC-B の .1 側インターフェイス)
-p再起動後も設定を永続化(Persistentオプション)

注意: -p オプションを付けないと、再起動時に設定が消えてしまいます。本番環境では必ず -p を指定してください。

設定後、ルーティングテーブルを確認します。

route print

192.168.2.0/24 に対するスタティックルートが追加されており、ゲートウェイとして 192.168.1.201(PC-B)が登録されていることを確認できます。


検証4:スタティックルート追加後の通信成功

再度 ping を実行します。

ping 192.168.1.203

結果:成功

Wireshark でキャプチャすると、PC-C からの ICMP 応答パケットのイーサネットフレーム宛先MACアドレスが、今度は PC-B(192.168.1.201)のものになっていることを確認できます。

通信の流れは以下の通りです。

  1. PC-A → PC-B(デフォルトゲートウェイ経由)→ PC-C へ ICMP リクエストが到達
  2. PC-C はルーティングテーブルを参照し、192.168.2.0/24192.168.1.201(PC-B)経由と判断
  3. PC-C → PC-B → PC-A へ ICMP 応答が正しく返る

トラブルシューティングのポイント

通信できない場合は、以下の手順で原因を切り分けます。

  1. ルーティングテーブルを確認するroute print

    • 宛先ネットワークのエントリが存在するか
    • デフォルトゲートウェイは正しく設定されているか
  2. Wiresharkでパケットをキャプチャする

    • レイヤー3(IPアドレス):送信元・宛先IPは正しいか
    • レイヤー2(MACアドレス):フレームの宛先MACアドレスは意図したホストのものか
  3. 両方向の経路を確認する

    • 往路だけでなく、復路のルーティングも適切に設定されているか

まとめ

今回は、2つのネットワーク間の通信を例に、ルーティングテーブルとスタティックルートの仕組みをWiresharkによるパケットキャプチャで可視化しながら解説しました。

重要なポイントは以下の通りです。

  • パケットの転送先は常にルーティングテーブルによって決まる
  • 知らないネットワーク宛のパケットはデフォルトゲートウェイへ転送され、デフォルトゲートウェイが未設定の場合はエラーになる
  • Windows 10は「Routing and Remote Access」サービスを有効化するだけでルーターとして動作させられる
  • ルーターを経由する場合、往路と復路の両方向でルーティングが正しく設定されている必要がある
  • route add コマンドで静的ルートを追加でき、-p オプションで再起動後も設定を維持できる

Wiresharkを使ってIPアドレス(レイヤー3)とMACアドレス(レイヤー2)を両方確認する習慣を身につけると、複雑なネットワークトラブルでも原因を素早く特定できるようになります。