Hyper-v 内部ネットワーク接続して、NATする方法

【PR】この記事には広告を含む場合があります。

Hyper-Vホストを利用して、仮想マシンはすべて仮想内部に配置し、ネットワーク接続はHyper-Vホストをゲートウェイとして通信を行う方法をとってみたいと思います。

仮想環境(Hyper-v)はサーバの上に仮想マシンを構築し検証できる機能です。

便利な機能で何台もサーバが構築でき検証ができるのですが、DHCPとかネットワーク環境に影響のあるサービスの検証には注意が必要になってきます。

つまり、ネットワークへ影響がでると利用しているすべてのパソコンに影響がでて、「インターネットに接続できない」「ファイルサーバにアクセスできない」など影響が発生します。

スポンサーリンク

目次

プライベート仮想ネットワークでは検証しずらい

ネットワーク接続は外部接続してしまえばよいと考えますが、例えば「DHCPサーバを立てて検証したい」「ネットワーク負荷検証」などネットワーク全体に影響のある検証を行う際は通常利用するネットワークと切り離しておく必要があります。

仮想マシンは閉域ネットワーク環境(内部接続環境)で検証するのが多いと思いますし、閉域ネットワークで困ることというと、「利用環境から閉域環境へのファイルのやり取り」「閉域ネットワーク上のWEBサービスの検証を利用環境から行う」などがあると思います。

また、外部接続の仮想スイッチ・NICを都度追加すれば事足りるのですが、どうも管理が煩雑になり、綺麗ではありません。Hyper-V上に作成した仮想マシンに外部接続用スイッチを割り当てると、ネットワーク上にホスト名が現れます。

Hyper-VのNATネットワーク構成で課題は解決します

NAT検証環境を構築することで、検証ネットワークとのデータやり取りなどが可能になります。

サーバ設定しても、サーバのインフラ基盤のネットワーク環境によっては外部インターネット通信できないこともありますため、参考としてご覧いただきたいと思います。

本題に入りますと、ネットワーク環境前提として 192.168.*.*/24 となっていることが多いと思います。(主に家庭用のルーターは大抵このIPセグメント体系になっています。)

Hyper-Vホストは192.168.0.0/24に所属したとして、残りの仮想マシンをHyper-V の内部ネットワークセグメント(172.16.*.*)へ所属して運用する方法を行いたいと思います。

まずはホスト側の設定で仮想のネットワーク構成を構築します。
仮想スイッチを作成し、hyper-V内部ネットワークからホストを介しての外部ネットワーク接続できるようにスイッチを構成します。

Powershell を起動し、Hyper-V内部スイッチを作成します。
“New-VMSwitch”コマンドレットを利用します。

コマンド:
New-VMSwitch -SwitchName <仮想スイッチ名> -SwitchType Internal

実行例:
New-VMSwitch -SwitchName “vSW01” -SwitchType Internal

コマンド実行してみると、以下のような設定となりました。

NameSwitchTypeNetAdapterInterfaceDescription
vSW01Internal9

Hyper-V内部スイッチを介して外部へ接続するため、NATゲートウェイとして構成します。
内部スイッチが作成されましたら、”Get-NetAdapter”コマンドレットから、InterfaceIndexを取得し、ゲートウェイのIPアドレスと紐づけます。”New-NetNat”コマンドレットからNAT ネットワークを構成します。


Get-NetAdapter

New-NetIPAddress -IPAddress <IPアドレス> -PrefixLength 24 -InterfaceIndex 24
New-NetNat -Name <NAT名称>-InternalIPInterfaceAddressPrefix <IP体系>
コマンド

Get-NetAdapterコマンド実行してみると、以下のような構造が見えてきました。

先ほど作成した仮想スイッチ”vEthernet (vSW01)”をターゲットとします。

NameInterfaceDescriptionifIndexStatus
イーサネット 2Intel(R) Gigabit CT Desktop Adapter9Up
vEthernet (Intel(R) 82..Hyper-V Virtual Ethernet Adapter8Up
イーサネットIntel(R) 82579LM Gigabit Network Con..6Up
vEthernet (vSW01)Hyper-V Virtual Ethernet Adapter #220Up
Get-NetAdapterコマンド出力内容

New-NetIPAddress -IPAddress 172.16.1.1 -PrefixLength 24 -InterfaceIndex 20
IPAddress : 172.16.1.1
InterfaceIndex : 20
InterfaceAlias : vEthernet (vSW01)
AddressFamily : IPv4
Type : Unicast
PrefixLength : 16
PrefixOrigin : Manual
SuffixOrigin : Manual
AddressState : Tentative
ValidLifetime : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource : False
PolicyStore : ActiveStore

IPAddress : 172.16.1.1
InterfaceIndex : 20
InterfaceAlias : vEthernet (vSW01)
AddressFamily : IPv4
Type : Unicast
PrefixLength : 24
PrefixOrigin : Manual
SuffixOrigin : Manual
AddressState : Invalid
ValidLifetime : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource : False
PolicyStore : PersistentStore
New-NetIPAddressコマンドレット

New-NetNat -Name InternalNAT -InternalIPInterfaceAddressPrefix 172.16.1.0/24

Name : InternalNAT
ExternalIPInterfaceAddressPrefix :
InternalIPInterfaceAddressPrefix : 172.16.1.0/24
IcmpQueryTimeout : 30
TcpEstablishedConnectionTimeout : 1800
TcpTransientConnectionTimeout : 120
TcpFilteringBehavior : AddressDependentFiltering
UdpFilteringBehavior : AddressDependentFiltering
UdpIdleSessionTimeout : 120
UdpInboundRefresh : False
Store : Local
Active : True
New-NetNatコマンドレット

コマンド実行するとNAT接続環境が完成です。

仮想マシンをNATネットワークに接続

仮想マシンを作成し、作成した内部スイッチへ接続します。
OSインストール後に、IPアドレスを付与します。(すでにDHCPサーバ機能が実装されているのでしたら不要)

ゲートウェイは、Hyper-Vホストのゲートウェイアドレスとします。DNSサーバは任意ですが、”8.8.8.8″とでもしておくとよいでしょう。

ポートマッピングして仮想マシンサービスに接続

仮想マシンに予めサービスを実装しておきます。今回はIISによるWEBサービスを想定します。
どうするかというと、「Hyper-Vホストが代表のポート接続を受け、そのポートを対象サーバのポートへフォワードする」というものです。

具体的には、HTTPアクセスすると仮想マシンへフォワードし、仮想マシンが結果を返すということです。
サーバ上でのWEBページが表示されるのを確認します。

Hyper-VホストよりPowershellの”Add-NetNatStaticMapping”コマンドレットを実行します。

コマンド:

Add-NetNatStaticMapping -NatName <NAT名称> -ExternalIPAddress <ホスト側端末> -ExternalPort <ポート番号> -InternalIPAddress <内部側端末> -Protocol <プロトコル> -InternalPort <ポート番号>

コマンド実行例。利用環境からの接続は任意ですので “0.0.0.0” としておき、WEBサービス提供のサーバを指定します。ポートはサービスによりますが、HTTPなので “80” としてます。


Add-NetNatStaticMapping -NatName InternalNAT -ExternalIPAddress “0.0.0.0” -ExternalPort 80 -InternalIPAddress “172.16.1.12” -Protocol tcp -InternalPort 80

StaticMappingID : 0
NatName : InternalNAT
Protocol : TCP
RemoteExternalIPAddressPrefix : 0.0.0.0/0
ExternalIPAddress : 0.0.0.0
ExternalPort : 80
InternalIPAddress : 172.16.1.12
InternalPort : 80
InternalRoutingDomainId : {00000000-0000-0000-0000-000000000000}
Active : True
WIMファイルマウント

利用環境から、Hyper-Vホストに対してブラウザーでアクセスしてみます。
そうするとWEBサイトが表示されました。

以上となります。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次