ルーティングテーブル・スタティックルート・Windows 10のルーター化をWiresharkで理解する
この記事の内容
- 2つのネットワークをまたぐ通信がなぜ失敗するか、ルーティングテーブルで理解する
- Windows 10の「Routing and Remote Access」サービスを使ってルーターとして動作させる方法
- デフォルトゲートウェイとスタティックルートの違いと使い分け
route addコマンドによる静的ルート追加の手順(永続化オプション含む)- Wiresharkでパケットキャプチャしながらレイヤー2/レイヤー3それぞれの動きを追う
検証環境の構成
今回の検証では、以下の3台のPCを使用します。
| マシン | ネットワーク | IPアドレス |
|---|---|---|
| PC-A | 192.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-C | 192.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)
このケースでは以下の動きが発生します。
- ルーティングテーブルに
192.168.1.0/24のエントリがないため、デフォルトゲートウェイ(例:192.168.1.254)へ転送される - レイヤー2レベルでは、デフォルトゲートウェイのMACアドレス宛にフレームが送出される
- パケットはデフォルトゲートウェイの先へ転送されるが、
192.168.2.0/24は全く別のネットワークのため、応答が返ってこない
Wiresharkでキャプチャすると、ICMPパケットのソースとデスティネーションのIPアドレスは正しいものの、イーサネットフレームの宛先MACアドレスがデフォルトゲートウェイのものになっていることを確認できます。
Windows 10をルーターとして構成する
PC-B(中継機)をルーターとして動作させるには、Routing and Remote Access サービスを有効化します。
- 「コンピューターの管理」を開く
- 「サービスとアプリケーション」→「サービス」を選択
- 「Routing and Remote Access」を探して開始する
これにより、PC-B は受信したパケットを他のインターフェイスへ転送するルーター動作が有効になります。
デフォルトゲートウェイの設定
PC-A から PC-C へ通信を届けるために、PC-A のデフォルトゲートウェイを PC-B の 192.168.2.0/24 側インターフェイス(192.168.2.201)に設定します。
ネットワーク設定(IPv4プロパティ)で以下を設定します。
この設定後、PC-A のルーティングテーブルを確認すると、デフォルトゲートウェイとして 192.168.2.201 が登録されたことが確認できます。
検証3:ルーター経由での通信と残る問題
デフォルトゲートウェイを設定した状態で再度 ping を試みます。
ping 192.168.1.203
Wiresharkでキャプチャすると、以下の流れが確認できます。
- PC-A がルーティングテーブルを参照し、デフォルトゲートウェイ(PC-B)へパケットを送出する
- PC-B がパケットを受け取り、ルーティングテーブルを参照して
192.168.1.0/24のインターフェイス(192.168.1.203)から転送する - 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)のものになっていることを確認できます。
通信の流れは以下の通りです。
- PC-A → PC-B(デフォルトゲートウェイ経由)→ PC-C へ ICMP リクエストが到達
- PC-C はルーティングテーブルを参照し、
192.168.2.0/24は192.168.1.201(PC-B)経由と判断 - PC-C → PC-B → PC-A へ ICMP 応答が正しく返る
トラブルシューティングのポイント
通信できない場合は、以下の手順で原因を切り分けます。
ルーティングテーブルを確認する(
route print)- 宛先ネットワークのエントリが存在するか
- デフォルトゲートウェイは正しく設定されているか
Wiresharkでパケットをキャプチャする
- レイヤー3(IPアドレス):送信元・宛先IPは正しいか
- レイヤー2(MACアドレス):フレームの宛先MACアドレスは意図したホストのものか
両方向の経路を確認する
- 往路だけでなく、復路のルーティングも適切に設定されているか
まとめ
今回は、2つのネットワーク間の通信を例に、ルーティングテーブルとスタティックルートの仕組みをWiresharkによるパケットキャプチャで可視化しながら解説しました。
重要なポイントは以下の通りです。
- パケットの転送先は常にルーティングテーブルによって決まる
- 知らないネットワーク宛のパケットはデフォルトゲートウェイへ転送され、デフォルトゲートウェイが未設定の場合はエラーになる
- Windows 10は「Routing and Remote Access」サービスを有効化するだけでルーターとして動作させられる
- ルーターを経由する場合、往路と復路の両方向でルーティングが正しく設定されている必要がある
route addコマンドで静的ルートを追加でき、-pオプションで再起動後も設定を維持できる
Wiresharkを使ってIPアドレス(レイヤー3)とMACアドレス(レイヤー2)を両方確認する習慣を身につけると、複雑なネットワークトラブルでも原因を素早く特定できるようになります。