Hyper-VでNATによるインターネットアクセス可能な内部スイッチを作る方法

株式会社テイクーワンのT.Tです。

今回はWindows11のHyper-Vで「内部スイッチ」を作成しNAT(NAPT、IPマスカレード)によりゲストOSをインターネット(外部ネットワーク)に接続する方法を解説します。

Hyper-Vのインストールについてはこちらの記事を参照ください。

Default Switchの問題点

まず、デフォルトで作成されている「Default Switch」ではなぜダメなのかを解説します。

「Default Switch」にはDHCP、DNSキャッシュサーバー機能があり、クライアント用のゲストOSをインストールする際にはネットワークの設定を考えることなく接続できるため便利です。

ただ、ゲストOSのIPアドレスを固定したい場合(SSHやリモートデスクトップで接続するため等)は問題が発生します。使用しているサブネットが変更されることがあるためです。なので、ある時突然、ゲストOSがネットワークに接続できなくなったりします。また、サブネットを固定する方法も無いようです。

内部スイッチの作成

では内部スイッチを作成していきます。

スタートメニューから[Hyper-Vマネージャー]を起動し、[仮想スイッチマネージャー]を選択します。

仮想スイッチマネージャーが起動したら[新しい仮想ネットワークスイッチ]を選択、[内部]を選択、[仮想スイッチの作成]ボタンをクリックします。

[名前]を入力し(ここでは「内部スイッチ」とします)、[OK]ボタンをクリックします。

内部スイッチに接続されている管理OSの仮想NICにIPアドレスを設定する

スタートメニューから[設定]を起動し、[ネットワークとインターネット]-[ネットワークの詳細設定]をクリックします。

さきほど作成した「内部スイッチ」を選択し[編集]ボタンをクリックします。

[インターネットプロトコル バージョン 4(TCP/IPv4)]を選択し、[プロパティ]ボタンをクリックします。

[次のIPアドレスを使う]を選択、[IPアドレス]と[サブネット マスク]を入力し、[OK]ボタンをクリックします。

今回は既存のネットワークと衝突しなさそうな下記の値を使用します

IPアドレス:10.9.8.1
サブネットマスク:255.255.255.0

この状態でゲストOSのネットワークの設定を下記のようにすれば管理OSとネットワーク接続できます。

ゲストOSのネットワークの設定
IPアドレス:10.9.8.2~10.9.8.254のどれか
サブネットマスク:255.255.255.0

NATを設定してゲストOSがインターネット(外部ネットワーク)に接続できるようにする。

NATの設定はGUIではできないのでPowerShellを使います。

スタートメニューから"PowerShell"で検索し、[Windows PowerShell]を[管理者として実行する]をクリックします。

下記のコマンドを実行します。

New-NetNat -Name "内部スイッチNAT" -InternalIPInterfaceAddressPrefix "10.9.8.0/24"

"内部スイッチNAT":NATにつける名前です。
"10.9.8.0/24":内部スイッチに接続されている管理OSのNICにIPアドレスに合わせてNAT(NAPT、IPマスカレード)で変換する範囲を設定します。

これでNATによりゲストOSがインターネット(外部ネットワーク)に接続できます。

ネットワークの構成図

ネットワークの構成としては下記のようになります。NATの処理は管理OSの中で動きます。

ゲストOSのDNSサーバーの設定について

ここまでの設定でIPアドレスを指定すればインターネットに接続することができますが、通常DNSを使ってFQDNでアクセスすると思いますので、その辺の設定をします。Default SwitchにはDNSキャッシュサーバー機能がありますが、内部スイッチにはありません。なので、下記いずれかの手段で対応します。(他にも方法があるかもしれません。)

  • ゲストOSのDNSの設定にGoogle Public DNS(8.8.8.8、8.8.4.4)等の無料のパブリックDNSサーバーを設定する。
  • 内部スイッチに接続しているゲストOSでDNSキャッシュサーバーを構築しゲストOSのDNSの設定をそのサーバーに向ける。
  • NAT経由で管理OSが使用しているLAN内のDNSサーバーをゲストOSのDNSサーバーとして設定する。この場合、PCを別のLANに接続した場合、LAN内のDNSサーバーに接続できなくなります。

DHCPサーバーについて

Default SwitchにはDHCPサーバー機能がありますが、内部スイッチにはありません。なので、下記の手段のいずれかで対応します。(他にも方法があるかもしれません。)

  • ゲストOSに固定IPアドレスを設定する
  • 内部スイッチに接続しているゲストOSでDHCPサーバーを構築する。

参考情報

Hyper-V を使用して仮想スイッチを作成して構成する
https://learn.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/get-started/create-a-virtual-switch-for-hyper-v-virtual-machines?tabs=hyper-v-manager&pivots=windows

前へ

PCI DSSについて