Hyper-V でルーターを構成する

2010/07/17
★★★

Hyper-V で評価環境を構築する場合、オーバーヘッドを少なくするため仮想マシンに割り当てる仮想ネットワークは、"プライベート仮想マシン ネットワーク" を使用する。

しかし、"プライベート仮想マシン ネットワーク" では、仮想マシン間限定での通信となるため、インターネット経由で更新ファイルをインストールすることができない。

そこで、仮想ネットワークの "外部" と "プライベート仮想マシン ネットワーク" の 2 つのネットワーク アダプターを持った仮想マシン (Windows Server 2008 R2) を構築し、仮想マシン用のネットワーク ( プライベート仮想マシン ネットワーク ) と外部ネットワーク ( 物理ネットワーク アダプター ) をルーティングするルーターとして構成する。

1. 仮想ネットワークの作成

[Hyper-V マネージャー] -> [仮想ネットワーク マネージャー] で、以下の 2 つの仮想ネットワークを作成しておく。

名前: 評価環境プライベートネットワーク (任意)
用途: 内部(評価環境)用
接続の種類: プライベート仮想マシン ネットワーク

名前: 外部ネットワーク (任意)
用途: 外部 (LAN) とのインターフェース
接続の種類: 外部 (任意の物理ネットワークアダプターを選択)

2. ルーター用コンピューターの構築

[Hyper-V マネージャー] より、新規に仮想マシン (Windows Server 2008 R2) をインストールする。

[仮想マシン接続] -> [ファイル] -> [設定] -> [ハードウェア] -> [ハードウェアの追加] -> [ネットワーク アダプター] より、作成した 2 つの仮想ネットワークにそれぞれマップした ネットワーク アダプターを追加する。
ネットワーク アダプターの追加

3. ルーティングとリモート アクセス サービスのインストール

仮想マシン上で、[サーバー マネージャー] を起動し、[役割] を選択し、[役割の追加] を選択する。
役割の追加

[役割の追加ウィザード] が起動する。[次へ] -> [ネットワーク ポリシーとアクセス サービス] を選択し、[次へ] を選択。
役割の追加ウィザード サーバーの役割の選択

[次へ] -> [ルーティングとリモート アクセス サービス] を選択し、[次へ] を選択する。
役割の追加ウィザード 役割サービスの選択

[インストール] を選択し、サービスをインストールする。

インストール完了後、[完了] を選択し、[役割の追加ウィザード] を閉じる。
役割の追加ウィザード インストール結果

4. ネットワークアダプターの設定

[スタート] -> [コントロール パネル] -> [ネットワークとインターネット] -> [ネットワークと共有センター] -> [アダプターの設定の変更] を選択する。

ネットワーク アダプターが 2 つ認識されていることを確認する。
ネットワーク接続

ここでは、"ローカル エリア接続 (内部)"、"ローカル エリア接続 (外部)" と用途ごとにわかりやすい名称に変更した。
内部は、評価環境用のネットワーク (プライベート仮想マシン ネットワーク) のこと。

それぞれのネットワークアダプターのを以下の通り設定する。

アダプター名: ローカル エリア接続 (内部)
用途: 評価環境用 プライベート仮想マシン ネットワークにマップする
IP: 192.168.16.254/24 (固定)
デフォルト ゲートウェイ: 設定しない
DNS サーバー: 設定しない

アダプター名: ローカル エリア接続 (外部)
用途: 物理ネットワーク アダプターにマップする
IP: 192.168.1.12/24 (固定)
デフォルト ゲートウェイ: 192.168.1.254 (物理ネットワーク側のルーター/ゲートウェイの IP )
DNS サーバー: 192.168.1.1 (物理ネットワーク側の DNS の IP )

5. ルーティングとリモート アクセスの構成

[スタート] -> [管理ツール] -> [ルーティングとリモート アクセス] -> [ServerName (ローカル)] -> [IPv4] -> [静的ルート] を選択し、右クリックメニューから [新しい静的ルート] を選択する。

最初に、内部ネットワーク (192.168.16.0) から、外部ネットワーク (192.168.1.0) へのルーティングを定義する。

[インターフェース] -> [ローカル エリア接続 (内部)] を選択。
[宛先] -> 192.168.1.0 と設定。
[ネットワーク マスク]
[ゲートウェイ]: 192.168.16.254
[メトリック]: デフォルトのまま。
IPv4 静的ルート - ローカル エリア接続 (内部)

次に、外部ネットワーク (192.168.1.0)  から、内部ネットワーク (192.168.16.0) へのルーティングを定義する。

[インターフェース] -> [ローカル エリア接続 (外部)] を選択。
[宛先] -> 192.168.16.0 と設定。
[ネットワーク マスク]
[ゲートウェイ]: 192.168.1.12
[メトリック]: デフォルトのまま。
IPv4 静的ルート - ローカル エリア接続 (外部)

ルーティングの疎通確認を行う。
内部ネットワーク (192.168.16.x) 上の任意のコンピューターから、外部側の NIC(192.168.1.12) へ ping を実行する。

>ping 192.168.1.12

外部ネットワーク (192.168.1.x) 上の任意のコンピューターから、内部側の NIC(192.168.16.254) へ ping を実行する。

>ping 192.168.16.254

ルーティングの疎通確認ができれば、ルーターとして機能している。

ただし、この状態では、内部側の任意のコンピューターから、外部側の任意のコンピューターとの相互通信はできない。

この状態では、内部側の任意のコンピューターから、外部側の任意のコンピューターへの通信は可能だが、外部側の任意のコンピューターは、内部側の任意のコンピューターへのルートが定義されていないため、送信はできているが、応答を受け取ることができない。

もちろん、インターネットへのアクセスもできない。

よって、外部側のネットワークのデフォルト ゲートウェイ/ルーター (ブロードバンドルーターでも可) に内部側ネットワークへのルートを定義する必要がある。

6. 外部側ネットワーク ルーターの設定

外部側のネットワーク上のコンピューターがデフォルト ゲートウェイとして使用しているルーターに以下の静的ルートを追加する。

種類: 静的ルーティング
ネットワークアドレス(宛先): 192.168.16.0
ネットワーク マスク: 255.255.255.0
ゲートウェイ: 192.168.1.12 (新規に構築したルーターの外部側 IP)
インターフェース: ルーターの外部側 LAN インターフェース

この設定により、外部側のネットワークの任意のコンピューターは、デフォルトゲートウェイを通して、内部側ネットワークのルーター(ゲートウェイ) を知ることができるため、相互通信が可能となる。

外部側のネットワークの任意のコンピューターから、内部側の任意のコンピューターへの相互通信 (ping) を確認する。
同様に、内部側のネットワークの任意のコンピューターから、外部側の任意のコンピューターへの相互通信 (ping) を確認する。

最後に内部側のネットワークの任意のコンピューターから、インターネットへのアクセスを確認する。
(外部側のネットワークの任意のコンピューターがルーター: NAT を経由してインターネットにアクセス可能なことが前提。)

以下に、今回構築した評価環境のネットワーク図を示す。

評価環境ネットワーク図

外部のルーター (物理ネットワーク側のゲートウェイ) の管轄部門等の違いにより、ルーティングテーブルを書き換えることができない場合は、物理ネットワーク側の相互通信したいコンピューター毎に静的ルートを追加する(Windows であれば、route add コマンドでルート追加する)。
しかし、この場合は、内部側のネットワークから、物理ネットワーク側のゲートウェイへ到達できないため、インターネットへアクセスできない。
解決方法の一つとして、物理ネットワーク側のコンピューターに静的ルートを追加し、プロキシサーバーを構築すれば、プロキシサーバー経由でのインターネットアクセスは可能となる。