Windows10:Hyper-VでNATネットワークの設定方法

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

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

Windows10バージョン1709でHyper-Vに追加された「既定のスイッチ」を利用することで、ここで紹介している手順を実施しなくてもNAT機能が利用できるようになったようです。

利用条件と制限事項

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

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

手順

管理者権限でPowerShellを起動します。

内部仮想スイッチの作成

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

New-VMSwitch -SwitchName WinNAT1 -SwitchType Internal
 ここではSwitchNameを「WinNAT1」としていますが、名前は何でも構いません。

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ネットワーク確認

現在の設定状況を確認するには以下のコマンドレットを実行します。

Get-NetNat

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

Get-NetNatSession

NATネットワークの削除

設定を削除するには以下のコマンドレットを実行します。

Remove-NetNat -Name WinNAT1

まとめ

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

スポンサーリンク