仕事で Nasted VM on Azure を扱うシーンがあり、 KMS 認証の手順が少し特別だったので、今回の記事では Internal Network を構築する方法、実際に Win10 on Nested VM の KMS 認証を通す方法を纏めます。
以下の記事では、VM on Azure のことを「Host VM」、VM on Host VM のことを「Nested VM」と呼ぶことにします。また前提として、Host VM の Hyper-V で Windows 10 を実行していることを前提としています。
Internal Network を構築する
まず Nested VM でもインターネットに接続できるようにネットワークを構築します。Host VM に Internal Network を構築し、その IP アドレスを Hosted VM に割り当てることでインターネットに接続できるようになります。(検証環境等でこの方法は使います。)
まずは Host VM にて Internal Network を構築します。Host VM の Hyper-V Manager より、[Virtual Switch Manager] を開き、"Internal" を選択し、[Create virtual Switch] します。名前は任意ですが、サンプルとしてここでは Internal Azure と名付けました
InternalAzure というネットワークを構成したら、NestedVM 側で以下の PowerShell コマンドを実行します。この二つのコマンドは、NAT 作成と"InternalAzure" 仮想ネットワーク アダプターに対して、IP アドレスを設定しています。
New-NetNat –Name myNAT –InternalIPInterfaceAddressPrefix "172.16.1.0/24"
Get-NetAdapter "vEthernet (InternalAzure)"| New-NetIPAddress -IPAddress 172.16.1.1 -AddressFamily IPv4 -PrefixLength 24
Nested VM を Internal Network に参加させる
上記の手順でネットワークを構築したら、Nested VM を Internal Network に参加させます。まずは Hyper-V の Nested VM の Setting を開き、ネットワークアダプターの設定で、先ほど構築した「InternalAzure」を選択します。
次に Nested VM のネットワークの環境設定にて、以下の情報を手動で割り振る設定をします。NIC のプロパティから IP アドレスを手動で設定します。この例では以下のように設定しました。
IP アドレス: 172.16.1.5 <任意のものでOK>
サブネット マスク: 255.255.255.0
デフォルト ゲートウェイ: 172.16.1.1
DNS サーバー: Azure標準のもの
上記2つを実施すると、Nested VM が外のインターネットに接続することができます。
KMS 認証を実施する
KMS 認証は時々走るライセンスに不正がないか確認するための認証です。この認証をあらかじめ実施するサーバーを決めておくことで、認証が正常に通ったと認められることができます。例えば、Active Derectory の Domain に参加する際には KMS 認証が通っていることが前提となりますので、DC 参加をする際に KMS 認証が通っていないと参加に失敗します。KMS 認証はそんな難しくなく、コマンドで実行することが出来ます。
//System32 まで移動
cd \Windows\System32
cscript slmgr.vbs /ato
これで認証が走ります。実際に KMS サーバーを指定する前に認証を走らせるとどのようなことが起きるでしょうか。
上記のように認証が走りますが、KMS サーバーがないので認証を走らせることができないと怒られます。
KMS サーバーを指定するために、Host VM のコマンドで以下を実行します。
//System32 まで移動
cd \Windows\System32
cscript slmgr.vbs /dlv
これを実行すると Host VM のライセンスが通っている KMS サーバーの IP アドレスを見つけることができます。この IP アドレスを Nested VM の KMS 認証サーバーに指定してあげればよいのです。指定の方法は以下コマンドを実行します。(もちろん Nested VM 側で)。
//System32 まで移動
cd \Windows\System32
cscript slmgr.vbs /skms
cscript slmgr.vbs /ato
これで無事 KMS 認証が通ります。(何回か実行すると成功する場合もあります)
ここまでできれば、あとは DC に参加させたり、色々実施することが可能です。
参考
Nested Hyper-V の VM からの外部への通信について
https://blogs.technet.microsoft.com/jpaztech/2018/04/16/connectivity_from_nested_vm/