Windows Server 2016 Technical Preview 3 から利用可能になったコンテナー テクノロジは、Hyper-V のテクノロジをいろいろと利用しています。例えば、この NAT タイプの仮想スイッチは、Windows Server コンテナーに外部ネットワーク アクセスと外部からの IP マスカレード(ポート forワーディング) を提供するために利用されています。
もしかすると、Hyper-V の仮想マシンでも NAT タイプの仮想スイッチができるのでは?と思ったので、やってみました。
こちらは、Windows Server コンテナーの実行環境の仮想スイッチの構成です。
図にするとこんな感じ。
これを参考に、Windows Server 2016 Technical Preview 3 の Hyper-V ホストに、NAT タイプの仮想スイッチを作成してみました。図にするとこんな感じ。
仮想マシン側の IP アドレス範囲は 10.0.0.0/24 にしました。
$SubnetPrefix = "10.0.0.0/24"
New-VmSwitch "Virtual Switch - NAT" -SwitchType NAT -NatSubnetAddress $SubnetPrefix
New-NetNat -Name "VmNAT" -InternalIPInterfaceAddressPrefix $SubnetPrefix
こうして作成した仮想スイッチは、Hyper-V からは内部ネットワーク (Internal network) タイプの仮想スイッチとして見えます。通常の Hyper-V の内部ネットワーク (Internal network) タイプの仮想スイッチは、管理 OS と仮想マシンのみが接続できるスイッチです。
管理 OS (Hyper-V ホスト) に追加されたネットワーク アダプターは、自動的に -NATSubnetAddress パラメーターに指定した IP アドレス範囲の最初の IP アドレス(10.0.0.1)が設定されていました。
NAT タイプの仮想スイッチに仮想マシンを接続し、開始したところ、残念ながら IP アドレスが自動的に割り振られることはなく、外部との通信はできませんでした。が...
-NATSubnetAddress パラメーターに指定した IP アドレス範囲から空いている IP アドレス (10.0.0.2 以降) を仮想マシンに手動で割り当て、デフォルトゲートウェイとして管理 OS 側に自動設定された最初の IP アドレスを指定し、DNS サーバーとして管理 OS が参照している DNS サーバーを指定してあげたところ、外部ネットワークにアクセスできるように!!
Static IP Injection の機能 (Msvm_GuestNetworkAdapterConfiguration class → https://msdn.microsoft.com/en-us/library/hh850156(v=vs.85).aspx) を使って Hyper-V ホスト側から仮想マシンの IP を設定するという方法もありますね。
参考:
Hyper-V ホストから仮想マシンの IP を設定する (Static IP Injection 利用で)
Windows Server コンテナーの場合と同じ手順で、IP マスカレードも設定できました。例えば、次の例は、Hyper-V ホストの TCP ポート 3390 を、NAT の背後にある仮想マシンの TCP ポート 3389 (RDP) に IP マスカレードする例です。
New-NetFirewallRule -Name "NatRdpDemo" -DisplayName "NatRdpDemo" -Protocol TCP -LocalPort @(3390) -Action Allow
Add-NetNatStaticMapping -NatName VmNAT -Protocol TCP -ExternalPort 3390 -ExternalIPAddress 0.0.0.0 -InternalPort 3389 -InternalIPAddress 10.0.0.2
Hyper-V ホストの外部にあるリモートデスクトップ接続クライアントで、Hyper-V ホストの IP アドレス: 3390」を指定して接続すると、仮想マシンに接続できました。
これまではクライアント Hyper-V では「インターネット接続の共有」を、サーバー Hyper-V では RRAS の機能を利用して、内部ネットワーク用の仮想スイッチで NAT 機能を実現するという方法がありましたが、 Windows Server 2016 Hyper-V ではもっと簡単になる“かも”です。
ちなみに、Windows 10 のクライアント Hyper-V の New-VMSwitch コマンドレットは、-SwitchType NAT に対応していません。将来のビルドではできるようになる“かも”しれません。
追記) こちら↓は Windows Server コンテナーに自動設定された IP アドレス。ネットワーク アダプターで DHCP は有効になっていますが、DHCP ではなく、マニュアル(Manual) で IP アドレスが設定されていました。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。