Hyper-Vには、1つのHyper-Vホストから別のHyper-VホストへのVMレプリケーションのための組み込みツールがあります。これは、障害発生時のフェイルオーバーに便利です。多くの場合、Hyper-Vレプリケーションは、Active Directoryドメインに接続されたHyper-Vサーバーおよびクラスター内に構成されます。しかし、Hyper-Vを実行しているサーバーがワークグループにある場合でも、Hyper-Vレプリケーションを構成することが可能です。これには、証明書が必要です。
このブログ投稿では、組み込みのWindows Server 2016ツールを使用してワークグループでHyper-Vレプリケーションを構成するための証明書の作成方法について説明します。
Hyper-Vで証明書を使用する理由
証明書ベースのレプリケーションを使用すると、Hyper-VホストをWindowsドメインやクラスターに追加せずに仮想マシンをレプリケーションできます。この機能は、3つまたは4つのサーバーを持ち、Active Directoryを使用してドメインを構成したり、クラスターを展開したりしたくない小規模企業に特に有用です。
ワークグループで証明書を使用したHyper-Vレプリケーションを使用する別の理由はセキュリティです。VMレプリケーションプロセスに関与するHyper-Vサーバーがドメインのメンバーである場合、これらのHyper-Vサーバーは、ユーザーがActive Directory管理アカウントの資格情報を持っている場合に完全に制御される可能性があります。特定の望ましくないシナリオ、例えばランサムウェア攻撃の場合、ADドメイン管理者の資格情報を持っていれば、攻撃者はアクセスできるリソース上のすべての情報を破壊できます。そのため、VMレプリケーションに使用されるHyper-Vサーバーをワークグループに残す方が、いくつかの場合にはより安全であることがあります。
Hyper-Vは、2種類の認証をサポートしています:KerberosとHTTPS証明書。KerberosはActive Directoryドメイン内のコンピューターで使用され、HTTPS証明書は非ドメイン環境で使用されます。HTTPSセキュア接続時にSSL証明書リクエストが実行されます。
主要な手順の概要
ワークグループでのHyper-Vレプリケーションの構成には、詳細なワークフローの説明を開始する前に、実行する必要のある主要な手順をリストアップしましょう。
- 両方のHyper-Vサーバーでホスト名を構成します。Hyper-Vサーバーの役割を有効にする必要があります。
- WindowsファイアウォールでHTTPSトラフィックと必要なインバウンド接続を有効にします。
- 最初のサーバーで証明書を作成および構成します。証明書のエクスポート/インポートを行います。
- 証明書を2番目のサーバーにコピーします。
- 証明書を使用して2番目のサーバーでレプリケーションを構成します。
- 最初のサーバーでレプリケーションを構成します。VMにはチェックポイントがない必要があります。
当社のブログ記事では、Hyper-V役割がインストールされた2台のWindows Server 2016マシンを使用しています。
サーバーのホスト名の構成
ホスト名の編集から始めましょう。ソースサーバー(プライマリサーバー)とレプリカサーバー(2番目のサーバーまたは宛先サーバー)のDNS名を構成します。メインDNSサフィックスを追加する必要があります。証明書を使用するには完全修飾ドメイン名(FQDN)が必要です。例では、サーバーの名前は次のとおりです:
Hyper-v-prim.test.net – プライマリサーバー(最初のサーバー)
Hyper-v-repl.test.net – レプリカサーバー(第2サーバー)
ホスト名を変更するには、システム設定を開きます(マイコンピューターまたはこのPCアイコンを右クリックしてください)、そして、コンピューター名、ドメイン、およびワークグループの設定セクションで、設定をクリックします。 コンピューター名タブで、変更をクリックします。 次に、コンピューター名/ドメインの変更ウィンドウで、コンピューター名を入力し、ワークグループ(ドメインではなく)を選択し、その他をクリックして、コンピューターのプライマリDNS接尾辞を入力します。 前述のように、Hyper-Vホストで証明書を使用してレプリケーションを有効にするには、DNS接尾辞を含む完全な名前が必要です。 接尾辞はこの例ではtest.netです。 ホスト名がhyper-v-primである場合、完全修飾ドメイン名はプライマリサーバーのHyper-v-prim.test.netです。
以下のスクリーンショットで、プライマリサーバーのコンピューター名設定を確認できます。
両方のサーバーでホスト名を設定したら、サーバーで証明書を作成できます。
プライマリサーバーで証明書を作成する
証明書は複数の方法で作成できます。 通常、コマンドラインインターフェースがこの目的に使用されます。 最初のオプションは、MakeCertツールを使用して自己署名証明書を作成することです。 現在、MakeCertツールは非推奨ですので、別の解決策を使用します。
MakeCertツールの代わりに、現代の代替手段としてNew-SelfSignedCertificateコマンドレットを使用して自己署名証明書を作成します。
プライマリホスト(Hyper-v-prim.test.net)で、以下のコマンドをPowerShell(管理者として)で実行して証明書を生成します:
New-SelfSignedCertificate -DnsName “Hyper-v-prim.test.net” -CertStoreLocation “cert:\LocalMachine\My” -TestRoot
New-SelfSignedCertificate -DnsName “Hyper-v-repl.test.net” -CertStoreLocation “cert:\LocalMachine\My” -TestRoot
次に、生成された証明書を確認し、サーバーの設定を続行します。これらのコマンドを実行した後に、3つの証明書が作成される必要があります(2つのサーバー証明書と1つのルート証明書)。
MMCで作成された証明書を確認する
最初のサーバーでMMC(Microsoft Management Console)を開きます。MMCを開くには、PowerShellでmmcと入力します。
Windows GUI(グラフィカルユーザーインターフェース)で証明書を管理するための新しいスナップインを追加します。
ファイル>スナップインの追加/削除…
開いたウィンドウの左側(利用可能なスナップイン)で、証明書を選択し、追加をクリックします。
ポップアップウィンドウで、コンピューターアカウントを選択し、次へをクリックします。
(デフォルトで選択されている)ローカルコンピューターが選択されたままにして、完了をクリックします。
右側のペイン(選択されたスナップイン)に証明書(ローカルコンピューター)が表示されます。
スナップインの追加または削除ウィンドウで、OKをクリックします(既にスナップインが選択されています)。
追加されたスナップインをMMCに保存できます。
[ファイル] > [名前を付けて保存]をクリックします。
ファイル名を入力してください。例: Certificates1.msc。
[証明書(ローカル コンピューター)/個人/証明書]に移動します。以前にPowerShellで作成した2つの証明書、Hyper-v-prim.test.netとHyper-v-repl.test.netが表示されます。
証明書の詳細を表示するには、証明書をダブルクリックします。2番目のサーバー(Hyper-v-repl.test.net)の証明書は現在信頼されていません。
[証明書(ローカル コンピューター)/中間認証局/証明書]に移動します。正常な動作に必要なCertReq Test Root証明書を見つけます。この証明書をダブルクリックして詳細を表示します。CAルート証明書が信頼されていません。
[中間認証局/証明書]から証明書要求テストルート証明書を信頼されたルート認証局/証明書にコピーして証明書を信頼されたものにします。証明書を選択し、コピーするにはCtrl+Cを押し、貼り付けるにはCtrl+Vを押します。
[証明書要求テストルート]証明書は、スクリーンショットに示されているように、信頼されたルート認証局/証明書にある必要があります。
再度、個人/証明書にある証明書を確認してください。まず、レプリカサーバー(Hyper-v-repl.test.net)の証明書を確認します。証明書は信頼され、有効期限は一般タブで確認できます。WindowsでSSL証明書の有効期限を確認する方法もわかりました。
詳細タブ(拡張キーの使用)と認証パスタブで他のパラメーターを確認します。この証明書はOKです。
次に、プライマリサーバーの証明書をレプリカサーバーの証明書と同じように確認してください。
プライマリサーバー(Hyper-v-prim.test.net)の証明書を構成し、2番目のサーバーに証明書を構成する必要があります。必要な証明書を2番目のサーバー(Hyper-v-repl.test.net)にコピーする必要があります。これを行うには、証明書をエクスポートします。
最初のサーバーから証明書をエクスポート
最初のサーバーで、個人/証明書にある2番目のサーバー(Hyper-v-repl.test.net)に必要な証明書を選択します。証明書を右クリックし、コンテキストメニューですべてのタスク>エクスポートをクリックします。
証明書エクスポートウィザードが開きます。
1.ようこそ。ようこそ画面では設定する項目はありません。続行するには各ステップで次へをクリックしてください。
2.プライベートキーのエクスポート。プライベートキーをエクスポートすることを選択します。はい、プライベートキーをエクスポートします。
3. エクスポートファイル形式。 個人情報交換 – PKCS #12 (.PFX) を選択し、可能な限り認証パス内のすべての証明書を選択します。
4. セキュリティ。セキュリティを維持し、秘密鍵を保護するためのパスワードを入力してください。
5. エクスポートするファイル。エクスポートしたいファイルの名前と場所を指定してください。例:C:\temp\Hyper-v-repl.pfx
6. 証明書エクスポートウィザードの完了。構成を確認し、完了をクリックしてください。
エクスポートが成功しましたというメッセージが表示されます。すべてが正常に行われました。
最初のサーバーからルート証明書をエクスポートする
。 2 つの証明書がエクスポートされました。これで、同じ方法でルート証明書をエクスポートする必要があります。 操作は最初のサーバー (Hyper-v-prim.test.net) で実行されます。
Trusted Root Certification Authorities / Certificates 内にある CertReq Test Root 証明書を選択します。
証明書を右クリックし、すべてのタスク > エクスポート をクリックします。
証明書エクスポートウィザードが開きます。
1. ようこそ。続行するには 次へ をクリックします。
2. エクスポートファイル形式。使用する形式を選択してください:
DER エンコードされたバイナリ X.509 (.CER)
3. エクスポートするファイル。ファイル名と保存する場所を入力してください。例:C:\temp\testRoot.cer
4. 証明書エクスポートウィザードの完了。構成を確認してエクスポートを完了します。
証明書は、最初のサーバーのC:\temp\にあるHyper-v-repl.pfxおよびTestRoot.cerファイルにエクスポートされました。
エクスポートされた証明書を第2サーバーにコピー
最初のサーバーから第2サーバーに2つのエクスポートされた証明書ファイル(Hyper-v-repl.pfxおよびTestRoot.cer)をコピーします。
第2サーバーのC:\temp\にファイルをコピーします。
ネットワーク経由で証明書をコピーするには、ネットワークパス\\Hyper-v-repl\C$または\\192.168.101.213\C$を使用できます(192.168.101.213はこの場合のレプリカサーバーのIPアドレスです)。ファイアウォールの構成ではSMBプロトコルの接続を許可する必要があります。
第2サーバーに証明書をインポート
証明書をレプリカサーバーにコピーしたら、これらの証明書をレプリカサーバーにインポートする必要があります。
MMCをレプリカサーバー(第2サーバー)で開きます(プライマリサーバーと同様に)。
MMCウィンドウにスナップインを追加します。
ファイル> スナップインの追加/削除をクリックします。
証明書を選択し、追加をクリックします。
コンピューターアカウントを選択し、ローカルコンピューターを選択します。
OKをクリックします。
Windows GUIでこのスナップインを開くショートカットとして、Windows CMDまたはPowerShellで次のコマンドを使用できます:
certlm.msc
このコマンドは、ローカルマシン証明書を構成するためのWindows証明書マネージャー(証明書管理コンソール)を開きます。
証明書(ローカルコンピューター)/パーソナルに移動します。
空白のスペースを右クリックし、コンテキストメニューですべてのタスク>インポートをクリックします。
証明書インポートウィザードが開きます。
1. ようこそ。 ローカルマシンを選択します。
2. インポートするファイル。 Hyper-v-repl.pfxファイルを参照します。 参照をクリックし、すべてのファイルを表示するように選択し、Hyper-v-repl.pfxを選択します。
3. 秘密鍵の保護。証明書をエクスポートする際に設定したパスワードを入力します。
4. 証明書ストア。すべての証明書を以下のストアに配置します:
証明書ストア:パーソナル
5. 証明書インポートウィザードの完了。構成を確認し、完了をクリックします。
すべてが正しい場合、メッセージが表示されます:インポートが成功しました。
今、Hyper-v-repl.test.net証明書はレプリカサーバー(2番目のサーバー)の
CertReq Test Root証明書は
証明書失効チェック
証明書失効チェックはデフォルトで必須ですが、自己署名証明書はWindows Server 2012では失効チェックをサポートしていません。そのため、テスト証明書の証明書失効チェックを無効にする必要があります。両方のマシンのWindowsレジストリに設定を追加してください。以下のコマンドを管理者としてCMDまたはPowerShellで実行してください。
reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication” /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f
マシンを再起動する必要があるかもしれません。
ホスト名の解決
ワークグループで作業している場合(マシンがActive Directoryドメインのメンバーでない場合)、ホスト名をIPアドレスに解決するために
192.168.101.209 Hyper-v-prim.test.net
192.168.101.213 Hyper-v-repl.test.net
レプリカサーバー上のレプリケーション設定の構成
VMレプリカが保存される第2サーバーで以下の操作を実行します。
Hyper-V マネージャーを開きます。
レプリカサーバー(Hyper-v-repl.test.net の場合)を右クリックし、コンテキストメニューで Hyper-V 設定 を選択します。
Hyper-V 設定 ウィンドウの左ペインで レプリケーション構成 を選択します。
レプリケーション構成 の中で、次のチェックボックスを選択します:
- このコンピューターをレプリカサーバーとして有効にする
- 証明書ベースの認証 (HTTPS) を使用する
証明書の選択 をクリックします。
Windows セキュリティ ポップアップウィンドウに証明書に関する情報が表示されます。この証明書を選択するには OK をクリックします。
レプリケーション構成 で、指定されたサーバーからのレプリケーションを許可する オプションを選択し、追加 をクリックします。
認証エントリの追加 ウィンドウでパラメーターを構成します。
プライマリサーバーを指定します: Hyper-v-prim.test.net
レプリカファイルを保存するデフォルトの場所を指定します: C:\Hyper-V\Virtual Hard Disks\(これは例です – C: 以外のカスタムロケーションを使用してください)
信頼グループを指定します: レプリケーション
Windows ファイアウォールの構成
ファイアウォールを設定して、入方向のトラフィックを許可する。レプリカサーバー上で443ポートの入方向のTCP接続を有効にしてください(テストのために一時的にファイアウォールを無効にすることもできます)。
Enable-Netfirewallrule -displayname “Hyper-V Replica HTTPS Listener (TCP-In)” “
netsh advfirewall firewall show rule name=all dir=in | find “Hyper-V “
最初のサーバー上のレプリケーションの設定
プrimary Hyper-V server上でVMを作成してレプリケートします。レプリケーションを有効にする前に、元のVMにスナップショットがないことを確認してください。これは主なサーバー(私たちの場合はHyper-v-prim.test.net)での第一台の装置のレプリケーションを有効にします。
VMを右クリックし、上下文メニューからEnable Replicationを選択します。
Enable Replicationウィザードが開きます。
Before You Beginに移動し、Nextを押して続行します。
Specify Replica Server.レプリカサーバーの名前を入力してください。私たちの場合、Hyper-v-repl.test.netをレプリカサーバーとして使用します。
Specify Connection Parameters。証明書を使用した認証(HTTPS)を選択し、Select Certificateをクリックします。
Select Certificateを押すと、以前設定した証明書の詳細についてのポップアップウィンドウが開きます。この証明書を使用するにはOKを押します。
レプリケーションVHDの選択。レプリケーションする必要があるVM仮想ディスクを選択します。すべてのVM仮想ディスクを選択するか、一部のみを選択することができます。
レプリケーション頻度の設定。変更がレプリカサーバーに送信される頻度を選択します。例えば、5分。
この仮想マシンの追加リカバリポイントの設定。この例では、追加の毎時リカバリポイントを作成することを選択します。必要に応じて最適なオプションを選択してください。リカバリポイントはインクリメンタルレプリケーション(スナップショットベース)の結果です。
初期レプリケーション方法の選択。ネットワーク経由で初期コピーを送信する送信を選択します。
ウィザードを閉じるために、証明書を使用してワークグループでネイティブHyper-Vレプリケーションの構成を終了するには完了を選択します。
ネイティブHyper-Vレプリケーションの代替手段
組み込みのHyper-V機能を使用してレプリケーションを実行することは便利です。しかし、Hyper-Vレプリケーションと仮想マシンフェイルオーバーを実行するための拡張機能が必要な場合もあります。ネイティブのHyper-Vレプリケーションの良い代替手段があります。
NAKIVO Backup & Replicationは、Hyper-V仮想マシンのバックアップとVMフェイルオーバーを実行できる汎用データ保護ソリューションです。この製品は、Active DirectoryドメインとワークグループでのHyper-Vレプリケーションをサポートしています。以下の機能が含まれています:
- アプリケーション認識レプリケーション。実行中の状態でVMをレプリケートすると、Microsoft Volume Shadow Copy(VSS)サービスを使用しているため、VMレプリカ内のデータは一貫しています。
- MicrosoftのResilient Change Tracking(RCT)を使用した増分レプリケーションにより、ディスクスペースと時間を節約できます。レプリケーションジョブの最初の実行では、ソースVMのすべてのデータがコピーされ、その後、適切なリカバリポイントを作成してVMレプリカに変更されたデータのみがコピーされます。
- 柔軟な保持設定と<GFS保持ポリシー。さまざまな時間帯のリカバリポイントを広範囲に保持し、バックアップリポジトリで使用されるストレージスペースを最適化します。
- データ圧縮を使用してレプリケーションスピードを高速化するネットワークアクセラレーションにより、時間を節約できます。
- Microsoft ExchangeおよびSQLのログ切り捨てにより、Hyper-V VMをレプリケートする際のデータベースを実行しているHyper-V VMのストレージスペースを節約できます。
- 自動化されたVMフェイルオーバーにより、短時間でVMを回復できます。
- サイトリカバリを使用すると、Hyper-V VMのレプリケーションとフェイルオーバーを含む複数のアクションを使用した複雑な災害復旧シナリオを作成できます。
物理サーバーバックアップからVMにマシンを回復するか、Hyper-V VMバックアップからVMware VMに回復できます。災害が発生するのを待たずに、NAKIVO Backup & Replicationをダウンロードして今日のHyper-V VMを保護してください!
結論
Hyper-Vレプリケーションは、Hyper-V仮想マシンを保護し、障害の後に短時間でデータと負荷を復旧できるようにする重要な機能です。 Active Directoryドメインに属していないHyper-Vサーバーであり、ワークグループに属している場合、Hyper-Vレプリケーションを非ドメイン環境で設定する必要があることがあります。
ワークグループ内でHyper-VVMをレプリケートするために自署名証明書を作成し、これらの証明書を使用してHyper-Vサーバーの認証を設定する必要があります。設定は、Hyper-V宿主机のVMレプリケーションを構成する前に、ホスト名、ファイアウォール、証明書取り消しの確認に適用されます。
Source:
https://www.nakivo.com/blog/how-to-request-ssl-certificates-for-hyper-v/