Windows 10のHyper-VでNATネットワークを設定する方法

Windows 10のHyper-VでNATネットワークを設定する方法

ちょっとした検証・開発をするときに、一時的な環境として活躍するのが仮想化です。

ここではWindows 10のHyper-Vで、NAT機能を利用する方法を紹介します。

Memo

Windows 10バージョン1709以降のHyper-Vでは、ここで紹介している手順を実施しなくても、デフォルトでNAT接続が可能な「Default Switch」が利用できます。

「Default Switch」では、DHCPサーバー機能も提供され、接続する仮想マシンには自動でIPアドレスが割り当てられるため、本記事で紹介している方法でNAT機能を手動で設定する必要性はあまりなくなりました。

利用条件と制限事項

Hyper-VでNAT機能を利用するための条件と制限事項は以下となります。

  • Windows 10 Anniversary Update 以降
  • NATの対象にできるIPアドレスは1セットのみ定義可能
  • NATの内側と外側でIPアドレス(の範囲)が重複するような設定は不可
  • NATに接続する仮想マシンのIPアドレスは手動で設定する必要がある

NATネットワークを作成する

内部仮想スイッチの作成

まず、管理者権限でPowerShellを起動し、以下のコマンドレットを実行します。(SwitchNameは、任意の分かりやすい名前を指定します。)

> New-VMSwitch -SwitchName WinNAT1 -SwitchType Internal

NATゲートウェイを構成

作成した仮想スイッチにIPアドレスを1つ付けます。ここで付けたIPアドレスが、仮想マシンから見た場合のデフォルトゲートウェイになります。

まず、Get-NetAdapterコマンドレットを実行し、上で作成した仮想スイッチのネットワークインターフェース番号(ifIndex)を確認します。

> Get-NetAdapter

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
vEthernet (WinNAT1)       Hyper-V Virtual Ethernet Adapter #2          31 Up           00-12-34-56-78-90        10 Gbps
vEthernet (既定のスイ...  Hyper-V Virtual Ethernet Adapter             15 Up           12-34-56-78-90-12        10 Gbps
イーサネット              Realtek PCIe GBE Family Controller            5 Up           23-45-67-89-01-23         1 Gbps

ネットワークインターフェース番号(ifIndex)を確認したら、New‐NetIPAddressコマンドレットで、NATゲートウェイを構成します。下のコマンドは、ゲートウェイのIPアドレスを「172.16.1.1/24」とした場合の実行例です。

> New-NetIPAddress -IPAddress 172.16.1.1 -PrefixLength 24 -InterfaceIndex 31

NATネットワークの作成

NATの対象となるIPアドレスの範囲(とネットマスク)を指定します。

以下のコマンドレットを実行します。

> New-NetNat -Name WinNAT1 -InternalIPInterfaceAddressPrefix 172.16.1.0/24

作成したNATネットワークを確認するには「Get-NetNat | fl *」コマンドレットを実行します。

以上でNATの設定は完了です。

ちなみに、内部仮想スイッチを「172.16.1.1/24」「172.16.2.1/24」「172.16.3.1/24」のように複数作成して、それらを全部含むようなアドレスマスクをNew-NetNatコマンドレット指定(172.16.0.0/16)することで、それらを全部まとめてNATの変換対象にできます。

あとは、作成した内部仮想スイッチを仮想マシンのネットワークインターフェースとして割り当てるだけです。

  • 仮想マシンのIPアドレスやネットマスクは、内部仮想スイッチに割り当てた範囲内で設定
  • デフォルトゲートウェイは、内部仮想スイッチに割り当てたIPアドレスを指定
  • DNSサーバーのアドレスは、いつも利用しているDNSサーバーのアドレスを指定すればOK

NATネットワークの状態を確認する

現在のNATネットワークの設定状況を確認するときは、以下のコマンドレットを実行します。

> Get-NetNat

動作状況を確認するときは、以下のコマンドレットを実行します。

> Get-NetNatSession

NATネットワークを削除する

NATネットワークの設定を削除したいときは、以下のコマンドレットを実行します。

> Remove-NetNat -Name WinNAT1

あとがき

VirtualBoxなど標準でNAT機能を持っている仮想化ソフトウェアに比べるとひと手間かかりますが、Hyper-Vも結構便利になりました。