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

Hyper-V Powershell WindowsServer


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

 

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

Name SwitchType NetAdapterInterfaceDescription
vSW01 Internal 9

 

 

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)”をターゲットとします。

Name InterfaceDescription ifIndex Status
イーサネット 2 Intel(R) Gigabit CT Desktop Adapter 9 Up
vEthernet (Intel(R) 82.. Hyper-V Virtual Ethernet Adapter 8 Up
イーサネット Intel(R) 82579LM Gigabit Network Con.. 6 Up
vEthernet (vSW01) Hyper-V Virtual Ethernet Adapter #2 20 Up

 

# 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-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

 

コマンド実行すると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

 

 

 

利用環境から、Hyper-Vホストに対してブラウザーでアクセスしてみます。

そうするとWEBサイトが表示されました。

 

 

 

以上となります。



スポンサードサーチ