EC2 Windows ServerでRemote Desktop Serviceを構成する手順(フルインストール)

2020.10.27

しばたです。

前回の記事でEC2 Windows ServerでRemote Desktop Serviceを構築する際の構成例を紹介しましたが、今回はその中で紹介したRemote Desktop Serviceの全ての機能を利用可能な「フルインストール」を行う場合のセットアップ手順を紹介します。

検証環境

今回は下図の構成を検証環境とします。

  • 任意のVPC内のPrivate Subnet内に、Domain Controller、RD License Server、RDSH Serverの3台のWindows Server 2019 EC2を構築
    • AMIは現時点で最新の ami-0e7b9e09087bb9a79 (Windows_Server-2019-Japanese-Full-Base-2020.10.14) を使用
  • EC2はPrivate Subnetに配置するがNAT Gateway(NAT Instanceでも可)によりインターネットアクセスは可能な状態
  • 各EC2間で必要な通信は可能な状態にセキュリティグループは設定済み

なお、本記事ではVPCをはじめとしたネットワーク周りの構築手順、Domain Controllerの構築手順は割愛します。 Active Directory環境(corp.contoso.com)が用意され、各サーバーはドメインに参加済みの状態をスタート地点とします。

1. RD License Serverの構築

はじめにRD License Serverの構築手順を紹介します。

RD License Serverには「Remote Desktop License」の機能を追加しライセンスサーバーとしての土台を作成したのち、購入したRDS CAL/RDS SALを登録してやります。
ライセンスの登録はRDS CALの場合はユーザー自身で行いますが、RDS SALの場合はSPLAの規約上SPLAの販売元が行う必要があります。
今回は検証用に購入したRDS SALを使いますのでライセンス登録手順の一部を紹介できませんがご了承ください。

1-1. 機能の追加

機能の追加方法は一般的なWindowsにおける手順と変わりません。
PowerShellからであればInstall-WindowsFeatureを実行してやるだけでOKです。

# 要管理者権限
# -IncludeManagementTools オプションを付けることで管理ツールも同時にインストールする
Install-WindowsFeature -Name RDS-Licensing -IncludeManagementTools

GUIで行う場合はサーバーマネージャーから「役割と機能の追加」を選択しウィザードからインストールします。

ウィザードが開始されるので「次へ」

「役割ベースまたは機能ベースのインストール」を選び「次へ」
(※今回の構成ではリモートデスクトップサービスのインストールではないので注意)

ローカルサーバーを選択し「次へ」

役割の選択で「リモートデスクトップサービス」を選択し「次へ」

機能の選択では何も選ばずそのまま「次へ」

そのまま「次へ」

リモートデスクトップに関連した役割の選択になりますので、ここで「リモートデスクトップライセンス」を選択。

すると管理ツールを含めるかのウィンドウが表示されるのでチェックをつけて「機能の追加」をクリック。

「リモートデスクトップライセンス」にチェックが付いていることを確認し「次へ」

最終確認になるので「必要に応じて対象サーバーを自動的に再起動する」にチェックを付けて「インストール」をクリック。

これで役割のインストールが開始されるので終了するまで待ちます。
完了すると以下の画面になるのでウィザードを閉じて終了です。

1-2. ライセンスサーバーのアクティブ化

機能の追加後は管理ツールに「リモートデスクトップライセンスマネージャー」がインストールされていますので、スタートメニューから起動します。
初期状態では下図の様に「非アクティブ」な状態であるためアクティブ化してやる必要があります。

最初に右ペインの構成欄が「確認」となっている場合、この「確認」をクリックします。

下図の様なウィンドウが表示されるので「グループに追加」をクリック。

確認ダイアログが出るので「続行」

元の画面に戻り警告が無くなり、構成欄が「OK」になっていることを確認。

ここから対象サーバー欄を右クリックし、「サーバーのアクティブ化」を選択。

アクティブ化のウィザードが始まるので「次へ」をクリック。

ここからはMicrosoftに接続しアクティブ化を行い、その方式は複数あるのですが、今回は「自動接続」するパターンを紹介します。

会社名と担当者の情報を入力し「次へ」

必要に応じ各種情報を記載し「次へ」

しばらく待つとアクティブ化が完了します。

ウィザードを閉じ、サーバーの状態が「アクティブ化」となっていれば完了です。

1-3. RDS SALの登録

ここからRDS SALの登録を行います。
RDライセンスマネージャーのサーバー欄を右クリックし「ライセンスのインストール」をクリックします。

ライセンス追加ウィザードが開始されるので「次へ」をクリック。

ここでRDS CAL/RDS SALの購入形態に応じた追加作業を行ってやります。
RDS SALの場合はライセンスプログラムを「Services Provider License Agreement」にして作業します。

以降の作業はSPLA販売元の作業のため割愛します。

-- (割愛) --

最終的にライセンスが登録されると下図の様になります。

この図ではRDS SALを3ユーザー分購入した場合の結果となります。
Windows Server側ではCAL/SALの区別をしていないため画面表示は「RDS CAL(接続ユーザー数)」となっていますがこちらは問題ありません。

2. RDSH Serverの構築

次にRDSH Serverの構築を行います。

2-1. 機能の追加

RD Connection Brokerをはじめとした各種機能をインストールします。
こちらはPowerShellから行うこともできるのですが、GUIでインストールするほうが分かりやすいので今回はPowerShellでのインストール例を紹介する程度にとどめておきます。

サーバーマネージャーから「役割と機能の追加」を選択しウィザードからインストールします。

ウィザードが開始されるので「次へ」

「リモートデスクトップサービスのインストール」を選択し「次へ」

今回はRD License Serverとその他でサーバーを分けているので「標準の展開」を選択し「次へ」

「セッションベースのデスクトップ展開」を選択し「次へ」

そのまま「次へ」

RD Connection Brokerをインストールするサーバーを選び「次へ」

RD Web Accessをインストールするサーバーを選び「次へ」

RDSHをインストールするサーバーを選び「次へ」

最終確認になるので「必要に応じてターゲットサーバーを自動的に再起動する」にチェックを付けて「展開」をクリック。

各機能を対象サーバー(今回はすべて同一サーバーですが)にインストールしますので完了するまで待ちます。

途中でサーバーの再起動が行われますので、再起動後、改めてサーバーマネージャーを起動すると処理が再開されます。

-- (再起動後) --

全ての機能をインストールすると下図の様になりますのでウィザードを閉じます。

2-2. ライセンスサーバーの追加

次にRDSHサーバーが参照するライセンスサーバーの登録を行います。

サーバーマネージャーを起動し、左ペインから「リモートデスクトップサービス」→「概要」を選択すると下図の画面が表示されます。
画面中央の「展開の概要」にはインストール済み/設定済みの機能がある場合はアイコンが表示されます。

ライセンスサーバーの登録をしていないため「RDライセンス」の欄はまだ「+」マークのままとなっています。
この「+」マークをクリックします。

するとライセンスサーバーの指定ウィザードが開始されますのでライセンスサーバーを選択し「次へ」をクリック。
(※サーバープールに対象サーバーが表示されない場合は事前に「サーバープールへの追加」をしておいてください。)

確認画面になるので「追加」をクリック。

追加作業が開始され、完了すると以下の画面になるのでウィザードを終了させます。

これでRD License Serverの追加が完了しアイコンが表示されます。
アイコンを右クリックして「RDライセンスモードを選択」をクリックします。

この設定画面では利用するRDS CAL/RDS SALのモード(User or Device)を指定します。
対象サーバーは前の手順で追加済みですので、ライセンスモードを「対象ユーザー数」にして「OK」ボタンをクリックします。

以上でライセンスサーバーの設定は完了となります。

以降は適宜RDSHサーバーの設定、RemoteAppの設定などを実施してください。

2-3. ライセンス設定の確認

RDSHサーバーが参照するライセンスサーバーの状況は以下のPowerShellコマンドで確認できます。

# 要管理者権限
$obj = Get-WmiObject -Namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
Write-Output ("RD Licensing Server : {0}`r`nライセンスモード : {1}" -f $($obj.GetSpecifiedLicenseServerList().SpecifiedLSList -split ','), $obj.LicensingName)

この結果に何も表示されない場合は何らかの理由でライセンスサーバーの指定が上手くいっていない事になります。
ライセンスサーバーの指定が上手くいっていない場合は、以下のドキュメントやブログにある手順を参考に「ローカルグループポリシー」か「PowerShellでレジストリ設定」をしてみてください。

本記事では「PowerShellでレジストリ設定」する手順を以下に記載します。

# 要管理者権限
# ライセンスサーバーの指定
New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers -Value "<ライセンスサーバーのFQDN>" -PropertyType MultiString

# ライセンスモードの指定 (4 : 接続ユーザー数)
$obj = Get-WmiObject -Namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.ChangeMode(4)

補足:DNSサフィックスについて

今回の検証を行うにあたり、ドメイン名に対するDNSサフィックスが設定されていないとライセンスの使用状況の確認でエラーとなることが頻発しました。
おそらくRDSHサーバーなどがライセンスサーバーを参照するときはDNSサフィックスが設定されている前提でホスト名でしかサーバーを検索していない様に見受けられます。

Remote Desktop Serviceを使う各サーバーでは下図の様にドメイン名のDNSサフィックスを付ける様にしておくと良いでしょう。

最後に

以上となります。

長々と解説しましたが、この手順はRemote Desktop Serviceを構成する一般的な手順でもあります。
AWS関係なく他社クラウドやオンプレ環境でも役に立つと思いますのでぜひ役立ててください。