Azure で Hyper-V on VM を動作させる

Azureを使って Hyper-V を構築して、そこへ Hyper-V の VM を動かすことができます。
この機能の事を Nested Virtualization と言います。
知っている人は知っている、だけど　知らない人は知らない・・・というネタだと思って取り上げました。

# 初めてやる時にハマるところ
- Azureでは、一部の VM サイズのみが Nested Virtualization をサポートしています<br>誤った VM を選択すると エラーが出て 作成することができません。
　
- Hyper-V上の VM をインターネットに接続させる方法が良くわからない<br>VMを作る事はできるが、仮想ネットワークをどう構成すべきかは Azure と Hyper-V のネットワークについて理解しておく必要があります。

# 前提事項
この記事は、以下の方々を想定しております
- Azure VM を展開することができる
- 作成した Azure VM へ RDP接続することができる
- Azure の利用環境を持っている
　※ Azure の サインアップ手順は こちら
　https://qiita.com/carol0226/items/066c06d95cb68427f1d0
- Windows Server 2019 を 日本語化することができる
　※ 日本語化 の手順は こちら
　https://qiita.com/carol0226/items/454271ea7924bc587d1e

# 目標
- Azure 上の VM に Hyper-Vの役割サービスを稼働させ、その仮想基盤上に Hyper-V の仮想マシンを動作させる
- この VM を使って インターネットへの接続ができるようにする

# Hyper-V 環境の構築
## Hyper-V 用の Azure VM の展開
Windows Server 2019 のイメージを指定して VM を展開します。
VM を作成する際に、Nested Virtualization に対応したサイズを選択することがポイントです。

1. 下記の図の通り、Azure で 仮想マシンの作成時に「すべてのサイズを表示」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/18816e20-8e2d-4aae-0b29-6e6c94fffc5c.png)

1. VM サイズの選択画面では、左上の赤枠欄へ _v3 と入力することで 作成予定のリージョンにおいて、Nested Virtualization に対応した VM のみフィルタされます。
下記の図では、３種類のサイズがフィルタされている中から vCPU と メモリ を想定して選択すると良いと思います。
無料評価版のサブスクリプションを利用している人は、同一リージョン内には vCPU が最大４個という制限があるので、注意してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/aa14bdc5-61bc-c0cb-74df-eeb8d009be17.png)

1. 基本 タブの設定項目の入力が一通り終わったら、ディスク タブへ移動します。
データディスクの作成は任意となりますが、 Azure VM 標準の Cドライブは 127GB しか無い為、Hyper-V の VM を作成するための領域としては不足する可能性があります。Hyper-V の VM のサイズが肥大化して、OSのディスク領域を圧迫する事になるため、ここで ディスクを増設することを強く推奨します。
以後の解説も ディスクを増設した場合の前提で記載しています。

1. ディスク タブでは、赤枠の「新しいディスクを作成し接続する」のリンクをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a2973875-41d9-bd02-bc7c-31fc50fde3b1.png)

1. 下記の画面が表示されるため、1024 GiB（約 1TB）で良ければ、このまま「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/cb7c2f0f-86e9-dd1f-b3c2-b21fdafd9859.png)
サイズ変更の場合は、上図 赤枠の「サイズを変更します」を押して、変更してください。
以下の画面では、256 GB を選択した場合です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a2f6d66a-5c4b-7ff7-9f97-1d180c43fc05.png)

1. データディスクの指定が終わったら、下図のような表示になるため、「確認および作成」をクリックして VM を作成してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a295e15b-24b9-223c-fed4-0a72199d5569.png)

1. VM が展開されたら、リモートデスクトップで接続してください。

1. 任意となりますが、ここで OS を日本語化しておきましょう。
英語版のままでも動きますが、以後の説明は 日本語化した OS を利用しています。
以下のサイトで、日本語化についての解説をしてありますので、参考にしてください。
https://qiita.com/carol0226/items/454271ea7924bc587d1e

## データディスクの初期化
VM を展開し、適宜 日本語化を終えたら、データディスクが利用できるように初期化が必要です。
下図は サインイン後に エクスプローラーを表示したところです。
ここで表示されている Dドライブは 追加したデータディスクでは無い事に注意してください。
作成した データディスクは これとは別に 見えないところに用意されています。
★Azure では、OSのページファイルを保存するための領域として 標準で Dドライブが用意されています。
この Dドライブに保存したファイルは、VM を停止すると消えてしまうので使わないようにしましょう。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/bdf46781-b3e8-fbd7-7cfc-01941ba21142.png)

以下の手順で、データディスクを初期化してください。
1. スタートボタンを右クリックして、「ディスクの管理」をクリックします。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/017da31f-26d5-358a-8860-579a1019bb38.png)

1. 下記の図が表示されますが、一旦「キャンセル」を押してください。
このまま、「OK」を押しても良いのですが、次の手順で説明のためにそうしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/58a25948-3ab4-9ac0-f58c-f47218745baf.png)

1. 下記の図を確認します。ウィンドウが小さい場合は、広げて表示してください。
ここで、「ディスク2」で「未割り当て」の部分が 追加で作成した データディスクです。
ご自身で追加したデータディスクのサイズになっていることを確認してください。
若干の差異があります（私は 256 GB のディスクを作りましたが、ここでは 255.98 GB になっています。
未割り当てなので、この領域には まだファイルを置くことが出来ない状態です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/95a20ede-6765-28a3-8925-b440e6815f37.png)

1. 未割り当て領域を初期化します。
下図の マウスポインタ付近で右クリックして表示されるメニューから、赤枠「新しいシンプルボリューム」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c37fe736-2a2d-0416-8abb-8708bb507928.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/86bbeb47-6469-4c31-27f6-78c801b31cd9.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ca6d0a4e-df44-9410-836e-9b53891da6e6.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/74479962-6580-29af-021f-9dee36db1972.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/47bc5a36-58d7-d41e-6479-745893a6db7f.png)

1. 下記の図では、そのまま「完了」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7439d6da-d68a-53a0-b0ba-bc6aee7fcab3.png)

1. データディスクが初期化されて、「ボリューム(F:)」が利用できるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ef9cfbe9-b8ef-4460-7313-ad680ce96c4f.png)
エクスプローラーでも、Fドライブ を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/485b3ba3-6553-9954-88d9-5f04e7a12ade.png)

## Hyper-V 役割サービスの導入
続いて、Hyper-V の機能をインストールします。

1. サーバーマネージャー から、「管理」－「役割と機能の追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3da36246-e823-f5b6-e6ec-4d414573f570.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ef0e10d8-ed42-d679-8386-f4117265c40b.png)

1. 下記の図では、「役割ベースまたは機能ベースのインストール」が選択されていることを確認して、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d32ed1bb-03b0-de60-e136-7d728a97fb89.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2bcfd7bd-1c15-df32-4d13-d5f1ef94706b.png)

1. 下記の図では、「Hyper-V」にチェックを入れてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f71c701f-8f83-2aaf-93b9-c9032f6114cd.png)

1. すると、下記の図が表示されるため、「機能の追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/85bc80b3-38b9-50f1-f02a-ee9152bb0a11.png)

1. 下記の図の通り、Hyper-V にチェックが入っている事を確認して、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/614ca834-d147-6a67-e838-124311e26638.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7eb676de-c6b3-9a22-5c43-46f176128339.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/dbcf19a7-35ff-2fa3-3e68-5af8ed1e402b.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7a702ae2-6d83-3822-9c2b-a783978f5eab.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/0875e3c0-370a-74a3-0459-fb440a1adef2.png)

1. 下記の図は、作成する Hyper-V 仮想マシンの情報を保存する場所を指定するところです。
ここでは、前章の手順で用意した データディスク（Fドライブ）を指定しておきます。
「参照」ボタンをクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2ea88aa2-25b8-c9f2-ccdc-481ce9936686.png)

1. 下記の図では、初めは Fドライブ配下にフォルダが存在しないため「新しいフォルダーの作成」ボタン押して、Hyper-V というフォルダを作ります。さらに「新しいフォルダーの作成」ボタン押して、Virtual Hard Disks というフォルダを作ってください。画面と同じ状態になったら、「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a0dd3550-1192-0e52-0623-07aea2fb3615.png)

1. 下記の図で、仮想ハードディスクのファイルの既定の場所が、上記で設定したフォルダになっていることを確認してください。続けて、赤枠の「参照」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8eca4470-a1e1-ce4e-8f5a-d7c1413519db.png)

1. 下記の図では、先ほど作成済みの Hyper-V というフォルダを選択して、「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/414b6f93-1920-5cbd-7ee7-2d8c122ac631.png)

1. 下記の図の通りの設定になったことを確認して、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/290ac697-2f5a-5ffe-8abb-d499ae0f9122.png)

1. 下記の図では、「必要に応じて対象サーバーを自動的に再起動する」にチェックを入れて、「インストール」をクリックします。
そのあと、確認画面が表示され、「必要に応じて、このサーバーは通知なしで自動的に再起動されます。自動的に再起動しますか？」と聞かれるので、「はい」をクリックします。
元の画面に戻るので、再度「インストール」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e7ca18a0-d222-1f37-bda6-d5522d3a322c.png)

1. インストールが始まると、以下のような画面となります。
インストールが完了すると、マシンが自動的に再起動されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e7e3a9e8-26aa-54d7-e4a0-52e8c2581a55.png)

1. 再起動中に VM は、Hyper-V として再構成されために、通常よりも起動に時間が掛かります。
待機中に、Azure Portal で、ブート診断 のメニューで 処理中の画面を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1b0d44a7-0af2-5993-a6b8-58cead688abd.png)

1. 下記の図の通り、「最新の情報に更新」をクリックしながら待機していると、Windowsの画面ロックの場面に変わります。こうなると VM へリモートデスクトップ接続が可能な状態です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b0fca4ae-efd4-08a3-a07b-93c38b257d7d.png)

1. VM へリモートデスクトップ接続を実施して、サインインしてください。
初めに 自動起動されたサーバーマネージャーを見ると、赤枠「Hyper-V」はありませんが、少し待つと表示されます。
ここで、サーバー名を右クリックして、「Hyper-Vマネージャー」をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c76f72d5-7210-8a7a-5917-189edf5a91d3.png)

1. 下記の図の通り、Hyper-V マネージャー が起動されれば Hyper-V の構成は全て完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8c39f524-2abb-c946-4307-2f26eb4cb8f1.png)

# 内部仮想スイッチを構成する
Azure上に Hyper-Vを構成した場合は、Hyper-V上に作った 仮想マシンは Azure仮想ネットワーク と通信をすることができません。これは Azureでの制約です。
これを回避するために、Hyper-V内 に閉じたネットワーク（内部仮想スイッチ）を作成して VMに割り当てて利用する必要があります。

1. Hyper-Vマネージャーで、「仮想スイッチマネージャー」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a18e6a39-b116-9e29-e99b-f69c26270521.png)

1. 仮想スイッチの作成画面で、「内部」を選択して、「仮想スイッチの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b755ac0c-0d5d-6d2a-d876-ac31759c7e0d.png)

1. 下記の図の通り、名称「内部仮想スイッチ」を命名（任意の名前）して、「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a521e80b-aac8-61f0-a9a4-0ba3c6f14162.png)

# Hyper-V環境へ OSをインストールする
Hyper-V環境が構成できたため、早速 仮想マシンを作成しましょう。
別の記事で、Hyper-V上に Windows 10 と Windows Server 2019 をインストールする手順を記載していますので、この通りに作業してみてください。
【Windows10】
https://qiita.com/carol0226/items/60a22fc1bb5e3556a183
【Windows Server 2019】
https://qiita.com/carol0226/items/53ef3c6bc9948a2b79f9

# Hyper-Vサーバ（ホストOS）と、ゲストOS間を接続する
仮想基盤を提供する Hyper-Vサーバの事を、ホストOSとも呼びます。
これに対して、仮想基盤上にインストールして動作する仮想マシンの事を ゲストOSとも呼びます。

前章では、ホストOS上に 内部仮想スイッチを準備していますので、ここでは ホストOSと ゲストOSをネットワークで通信できるようにします。

方法は２通りあります。
**１つ目** は、内部スイッチ内に NAT と DHCP を構成して、ネットワーク的に 外と通信できるようにする事です。以下の記事が参考になります。私の方では オンプレの Hyper-V では検証済みなのですが、Azure 上では 未検証ですが、理論上は 問題無く動作するはずです。

**参考記事：How to Setup Nested Virtualization for Azure VM/VHD**
https://techcommunity.microsoft.com/t5/itops-talk-blog/how-to-setup-nested-virtualization-for-azure-vm-vhd/ba-p/1115338

**２つ目** は、以下のとおり、PROXY を使う方法です。
本記事では、PROXY を使う方法で、最後まで紹介していきますので、ご承知おきください。

AzureVMを使って、Hyper-V仮想基盤を構築した場合、ゲストOSは Azure仮想ネットワークに接続することができません。これは Azureの仕様によるもので ゲストOSにIPアドレスを付与する事ができないからです。
これを回避し、ゲストOSをインターネットなどの外部ネットワークと通信させる方法を紹介します。

図にすると、以下のような構成となり、内部仮想スイッチを経由し、PROXYアプリケーションが外部との通信を介在してくれるような形となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b10ad3f7-b682-8af9-0aa3-1f21ac22da35.png)

## ホストOS側の IPアドレスを付与する
1. 下記の図の通り、「スタートボタン」から、「ネットワーク接続」をクリックします。<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/689257be-5e94-5a1c-2c9f-1bf5665526b2.png)

1. 下記の図の通り、「アダプターのオプションを変更する」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c4694b12-785c-a01c-d932-d1339a832f0f.png)

1. 下記の図を見てください。緑下線が 内部仮想スイッチです。
ここでは、赤枠の「イーサネット〇」の方は、Azureの仮想ネットワークと接続されているインタフェースのため、こちらの名前を判りやすく変更しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a8b18dc8-05a0-a284-d281-1770943f841b.png)

1. 下記の図で、緑下線部分を「Azureの仮想ネットワーク」と命名しました。
続いて、「内部仮想スイッチ」を右クリックして、「プロパティ」を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e9e565e1-66a1-3b28-7941-772a9b486a5f.png)

1. 下記の図の通り、「インターネットプロトコルバージョン4(TCP/IPv4)」を選択後に、「プロパティ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3c2bd595-6332-9337-0a39-08da06e32940.png)

1. 下記の図の通り、「次のIPアドレスを使う」を選択後、IPアドレスとサブネットマスクを指定し、「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9453582c-2b64-284a-f040-60a951084893.png)

1. 下記の図の画面に戻るため、「閉じる」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/802ffa5e-c888-bc96-f185-a444c221453c.png)

1. IPアドレスの構成ができたので、確認を行います。
下記の図の通り。「スタートボタン」を押して、「Windows PowerShell(管理者)」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/fbdb24f4-066d-04e5-2690-cd5053421474.png)

1. 下記の図のように表示されることを確認します。
ここで、緑枠部分は Azureの仮想ネットワークに接続されている方の設定値です。
赤枠部分が、直前に設定した 内部仮想スイッチ のIPアドレスです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8995b154-4252-5bd1-9e7b-0e7641b9a191.png)

以上で、ホストOS の IPアドレス設定 は完了です。

## ゲストOS側のIPアドレスを付与する
1. 下記の図の通り、Hyper-Vマネージャーを使って、ゲストOSのデスクトップ画面を表示してください。
※必要に応じて、電源ONや、サインイン等してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/34a65aa3-cd8c-b501-9573-0ccaabd5aaae.png)

1. ゲストOSを操作して IPアドレスを付与していきます。
「スタートボタン」を押して、「ネットワーク接続」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f9a42643-f547-f56a-7bad-2729c35d1323.png)

1. 下記の図では、「アダプターのオプションを変更する」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e271cc58-0b33-9810-9424-2ea3debfcccc.png)

1. 下記の図では、「イーサネット」を右クリックし、「プロパティ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e42912d1-0075-6d24-c142-7cc15fb29bb0.png)

1. 下記の図では、「インターネットプロトコルバージョン4(TCP/IPv4)」を選択して、「プロパティ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9575fe20-f1cc-9045-325d-ac6cb7543a90.png)

1. 下記の図では、「次のIPアドレスを使う」をクリックして、IPアドレスとサブネットマスクを設定し、「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7402755a-92c5-3d69-91a0-780a0032d9ff.png)

1. 下記の図に戻るため、「閉じる」をクリックして、ウィンドウを閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/50c0e1a3-0208-c926-7226-8ec292868c3c.png)

以上で、ゲストOS の IPアドレス設定 は完了です。

## 設定した IPアドレスの確認

1. 下記の図のように、ipconfigコマンドを実行して、ホストOS側 (橙枠) と ゲストOS側 (緑枠) の IPアドレス (赤枠) を表示して IPアドレスに設定ミスが無いかどうか、最終確認をしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/dc688ae7-60e8-7a7c-9e04-e35f83ae02ac.png)

1. 下記の図のように、Pingコマンドで 相手側のIPを入力して、疎通確認を行ってください。
ホストOSでは、Ping 192.168.100.2（ゲストOSのIP）を実行します。
ゲストOSでは、Ping 192.168.100.1（ホストOSのIP）を実行します。
結果が 2パターンありえるので、以下に説明します。
【緑枠パターン】
　このように表示された場合は、正しく疎通しています。OKです。
【橙枠パターン】
　「要求がタイムアウトしました」と表示された場合は 疎通できていません。
　ですが、Windows Firewall によってブロックされているだけの場合があります。
　続けて、arp -a というコマンドを叩いて、結果の一覧に 相手のIPアドレスがあればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d11f26e5-2a29-0533-560a-10e012926f59.png)
★緑枠パターン、橙枠パターンのどちらかでOKとなれば良いですが、NGの場合は IPの設定を再確認してください。

以上で、ホストOS と、ゲストOS の IPアドレス設定 の確認が完了です。

## PROXYアプリ の導入
前章までの手順の実施で、ホストOSとゲストOSは 通信を行う事ができるようになっています。
この章では、PROXYアプリを稼働させて、ゲストOS でWebサイトの閲覧を行った場合に ホストOSを経由してインターネットへ接続できるようにします。

### PROXYアプリ のインストール
PROXYのアプリケーションは、以前から私が利用している Black Jumbo Dog を紹介します。
このアプリケーションは、フリーで利用ができ 簡単にPROXYの機能を利用できるので便利です。

1. ホストOS側でブラウザを開き、以下のURLへアクセスします。
https://forest.watch.impress.co.jp/library/software/blackjmbdog/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f7d55fba-d7fb-d725-d42e-afdbf0235aeb.png)

1. 以下のダウンロード画面が表示されたら、「実行」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b72ccd9b-3d31-cab9-edc7-381cf881a184.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/80186554-943d-bac8-4ade-8cdced953d62.png)

1. BlackJumboDog のインストーラーが起動します。「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/97c8c4da-3c1b-30de-6f06-5fcd5164498e.png)

1. 下記の図では、そのまま 「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7790d9a2-e602-a1a5-6f1a-97415ab70c73.png)

1. 下記の図では。「インストール」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ec1a87d7-556e-b66d-f2d3-156b72c15921.png)

1. 下記の図では、「完了」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d36ab538-74f4-c3d1-899e-9d15769d90ba.png)

以上で、BlackJumboDog のインストールが完了です。

### PROXYアプリ の初期設定
1. 下記の図では、「スタートボタン」を押して、「Launch BJD.exe」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/34ed252b-f571-6b94-526f-a87f0431b9fd.png)

1. 下記の図では、「オプション」を選択し、「プロキシサーバ」－「ブラウザ」の順に選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/abfd07b5-9889-b000-9bb8-b75351905146.png)

1. まず初めに左上の「プロキシサーバ[Browser]を使用する」にチェックを入れると、下記の図のように表示されます。
ここで、緑枠部分が「8080」となっている事を覚えておきましょう。
続いて、「ACL」のタブを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/31bd890b-a9d0-8b70-df02-5b83ce69ee21.png)

1. 下記の図では、「禁止する」を選択して、「OK」をクリックします。
ここで、なぜ 「禁止」を選んでいるのかというと、これは、BlackJumboDogのアクセスコントロールの設定になっており、「指定したアドレスからのアクセスのみを」という項目になっています。
つまり、「許可」にした場合には、下段の「利用者(アドレス)の指定」欄にIPアドレスを設定したPCからのアクセスしか許可されません。これでは面倒です。
「禁止」にすると、下段の「利用者(アドレス)の指定」欄に入力した IPアドレスをブロックする動作に変わります。それ以外のIPは全て許可されるため、こちらの方が楽です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3dd2ebec-3153-6811-c0c9-fc925b69a315.png)

1. 下記のようになると、プロキシサーバとして稼働しています。
続けて、BlackJumboDog をサービス登録しておきます。
サービス登録は、任意なのですが これを行っておくと、ホストOS のシャットダウンなどを行っても、次回起動時に勝手に動作してくれるため、便利に扱えます。
サービス登録しない場合は、ご自身で 都度アプリを起動してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4af9db65-7c97-f388-eb49-417353b1f07f.png)

1. 「サーバ停止」にすると、「サービス設定」が選択できるようになるため選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f9f4c700-40a2-b897-f6c0-5906cf6ef2b0.png)

1. 「登録」をクリックします。
稀に、ここで 登録 ができないエラーが発生する事があるようです。
その場合は、自動起動は使えないのですが サーバー起動の都度 Black Jumbo Dog を起動すればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f4ad828f-3a0d-b7f5-9083-ae8c7bab05a1.png)

1. 下記の図の通り、「状態」欄の「開始」と、「スタートアップの種類」欄の「自動」をクリックします。
すると、赤下線部分が、「実行中」と「自動」になります。
ここまで設定ができたら「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2c727392-99f1-7d48-7abe-0ebd66636183.png)

ここまで設定を行うと、PROXYアプリ（BlackJumboDog）は常に稼働した状態になります。

## Windows Firewall の設定
ここまで構成が終わったら、あと一息です。
前章までの構成で、ほぼ完成なのですが、このままだと ゲストOSからの接続に対して、ホストOS側の Windows Firewall が通信を遮断してしまいます。
そのため、BlackJumboDog への通信であれば、許可するルールを追加する必要があります。

1. 下記の図では、「ホストOSのサーバーマネージャー」から、「セキュリティが強化されたWindows Defender ファイアウォール」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/73725a21-2a40-f6d1-0dd0-263f1a251ad8.png)

1. 下記の図では、「受信の規則」を右クリックして、「新しい規則」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5667786e-ecf0-95f3-b279-7cdf5e942d58.png)

1. 下記の図では、「ポート」を選択して、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4f9a0fd1-3478-c6ad-58bc-6a6809ccc9dc.png)

1. 下記の図では、「特定のローカルポート」を選択して、「8080」と入力します。
これば、BlackJumboDog の初期設定時に「8080」を憶えておいてください・・と説明しましたが、この数字と一致している必要があります。
この設定が、ゲストOSから、ホストOS に対して 8080ポートの通信があった場合に「許可」する仕組みとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9c106de4-ab11-d823-0545-352a73f571af.png)

1. 下記の図では、「接続を許可する」にチェックが入っていること確認して、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9446c959-024b-8979-3a05-029a6ab271fe.png)

1. 下記の図では、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/84aaf3e1-dc7d-44aa-f984-a17baf0f894b.png)

1. 下記の図では、ルールの名称を設定します。設定後に、「完了」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/519f4946-2fda-63f0-1f47-b3efccf0e5d2.png)

1. 下記の図のように 設定が追加されていればOKです。右上の「×」を押してウィンドウを閉じてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/96147c82-5975-743e-d795-19b43120d370.png)

以上で、Windows Firewall の設定は完了です。

# ゲストOS からインターネットへ接続する
## ブラウザのプロキシ設定
1. ゲストOS に接続して、ブラウザ を起動してみてください。
この段階では、インターネットへアクセスできないことが判ると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/bcac0cdc-4eca-0cda-91e6-38b58784f2f5.png)

1. プロキシサーバの設定を行うために、スタートボタンを押し、「歯車」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/59b34208-979b-90e3-0a3d-ef6d0bb2d117.png)

1. 下記の図では、「ネットワークとインターネット」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b382d838-32d2-809f-146f-347805fc012a.png)

1. 下記の図では、「プロキシサーバを使う」を「オン」に設定したあと、「アドレス」と「ポート」を設定します。ここでのアドレスは、ホストOSのIPアドレスと BlackJumboDog のポート番号になります。
設定したら、「保存」をクリックし、このウィンドウを閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a68b1818-fb31-2c6c-5b58-77071d1a5d05.png)

## インターネットへの接続確認
★ ゲストOSが Windows Server 2019 の場合は、IE ESC強化の構成を「OFF」にしておく必要があります。
下記の記事の「Internet Explorer の設定変更」の章を参考にしてください。
https://qiita.com/carol0226/items/454271ea7924bc587d1e#internet-explorer-%E3%81%AE%E8%A8%AD%E5%AE%9A%E5%A4%89%E6%9B%B4
ゲストOS が Windows 10 の場合は、このアクションは必要ありません。

以上で、ゲストOS のブラウザで インターネットの Webサイト を閲覧できるようになりました。
URL欄に、Webサイトのアドレスを入力して、閲覧できることを確認してください。
それから、右下の緑枠部分を見ると、アイコンが変わっている事を確認してください。
このアイコンが出ている場合には、インターネットに接続出来ている事を意味しています。
前ページの画面の同じ個所を見ると、「地球マーク＋通行止め」のアイコンになっていることが判ると思いますが、これは インターネット接続不可・・という事を意味しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/42668e1f-b565-06b5-1458-5154fd00e5f4.png)

ご苦労様でした。
以上で、全作業が完了です。

ここまでの構成が行えるようになると、Azure上に Hyper-V を稼働させられるので、このテクニックを活用することで、さまざまな検証環境を構築できるようになります。

まさにスタート地点ですね。今後は、この環境を基本として、色々な応用した構成を紹介して行きたいと思っています。

# Next Step
Hyper-V が構築できたら、以下にもチャレンジしてみてください。

https://qiita.com/carol0226/items/53ef3c6bc9948a2b79f9

https://qiita.com/carol0226/items/60a22fc1bb5e3556a183

https://qiita.com/carol0226/items/eeced2b88e6d8a9914e7

# 参考サイト
**【Windows Server での Hyper-v の概要】**
https://docs.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/get-started/get-started-with-hyper-v-on-windows?wt.mc_id=mvp_407731

**【入れ子になった仮想化のしくみ】**
https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/user-guide/nested-virtualization?wt.mc_id=mvp_407731

**【その他の役割サービス】**

https://qiita.com/carol0226/items/0dea96f5ce09b8cf89a6