はじめに
Part1、Part2と続き、これまで以下のことを実施しました。
最終的にやりたかった通りにはなっていないのですが、できた範囲で備忘として残しています。
■Part1
- Hyper-Vの有効化
- NATスイッチの作成
- NATネットワークの作成
- Windows Server2016評価版ダウンロード
■Part2
- ゲストマシンの作成
- ゲストマシンのネットワーク設定
今回は、ホスト以外のAzure仮想マシンから、Nested Hyper-V上の仮想マシンへ疎通が取れるようにします。
が、Azure仮想ネットワーク上の仮想マシンからNested Hyper-V上のマシンへのポートフォワーディングによる接続はできるのですが、pingなど直接の疎通が通りません。
これについてはRRASを入れて何やかんやしましたがどうしてもできず、今回はポートフォワーディングで通信させます。後に方法がわかれば、別途更新します。
目次
ポートフォワーディング設定
Nested Hyper-Vのホストマシン上でNATを構成することで、ホストマシンのパブリック/プライベートIPアドレスへのアクセスを、Nested Hyper-Vゲスト上の仮想マシンへの接続にポートフォワーディングします。Azureロードバランサの受信NATルールと同じです。
以下のコマンドをホストマシン上で実行します。
Add-NetNatStaticMapping -NatName <NAT名> -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 192.168.0.10 -InternalPort 80 -ExternalPort 80 Add-NetNatStaticMapping -NatName <NAT名> -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 192.168.0.10 -InternalPort 443 -ExternalPort 443
それぞのパラメータは以下のとおりです。
※ExternalIPAddressを0.0.0.0にするとインターネット経由でも接続可能になるため、NSGでの制御を忘れずに。
- NatName:Part1で作成したNATネットワークの名前。不明な場合はGet-NetNatで取得。
- ExternalIPAddress:接続元のIPアドレスレンジ。0.0.0.0で全体
- InternalIPAddress:NAT後の宛先IPアドレス。Nested Hyper-V上の仮想マシンIPアドレスを指定。
- InternalPort:NAT後のポート番号
- ExternalPort:接続時に指定する、NAT前のポート番号
実行結果
動きとしては以下のとおりです。
変換前:ホストマシンのIPアドレスへExternalPortで接続
変換後:ゲストマシンのIPアドレス(InternalIPAddresss)へInternalPortで接続
テスト用に、ゲストマシンにIISでも突っ込んでおきます。これでホスト上の準備はOKです。
接続テスト
この状態で、Azure仮想ネットワーク上のマシンからNested Hyper-VホストマシンのIPアドレスへブラウザ接続すると...
繋がりました!もちろん、ホスト側にIISは入れていません。
NSGでの許可は必要ですが、インターネット経由でアクセスすることもできます。
これで、Azure仮想ネットワーク内の他の仮想マシンからでもアクセス可能なよう構成できました。
終わりに
ここまで3回に分けてNested Hyper-Vを構築してきました。
「どんな感じかちょっと試してみたいなー」という軽い気持ちでやってみましたが、まさかホスト外からの通信がこんなにうまくいかないとは思いませんでした。。。
ひとまずはポートフォワーディングで妥協します…