リモートデスクトップサービス(RDS)のRDGateway(ゲートウェイ)はダウンすると、即RDSサービスダウンにつながります。
なので、RDGatewayを冗長化する方法を調べました。
レジュメ
前提条件・環境
- Windows Server 2016 でRDS環境を構築
- 検証としてAWS環境を使用
結論、RDP over https のリモートデスクトップゲートウェイは冗長化構成可能
まず初めに、ダウンすると即サービス停止になるRD gatewayは冗長化可能です。
RD Gatewayの役割は、RDPプロトコルをhttps上の中で実装する、RDP over httpsを実行していることです。
なので、RD gatewayを冗長化させるのは普通のhttpsのwebサーバーを冗長化させる方法と同じになります。
参考:RD Web およびゲートウェイ Web フロントに高可用性を追加する | Microsoft Docs
このマイクロソフトドキュメントのように、AWS上でRDゲートウェイを冗長化させた場合、RDゲートウェイ1とRDゲートウェイ2では証明書が異なったものが自動で用意されました。(工夫が必要ですね)
注意点、RDP over httpsはSSL・TLS複合化すると通信できない。
RDP over httpsは通信の経路途中でSSL証明書による複合化してしまうと、クライアントとRDSが通信できなくなります。
なので、AWSでいうところのALBをロードバランサーとして導入すると通信できませんでした。
この構成の場合、「このコンピューターはリモートコンピューターに接続できません。リモートデスクトップゲートウェイサーバーが一時的に使用できません。後で再接続試行するか、サポートが必要な場合はネットワーク管理者に問い合わせてください。」のRemoteAppが切断されましたエラーがクライアント側に出ます、。
RemoteAppが切断されましたエラーの原因
上記「このコンピューターはリモートコンピューターに接続できません。リモートデスクトップゲートウェイサーバーが一時的に使用できません。後で再接続試行するか、サポートが必要な場合はネットワーク管理者に問い合わせてください。」エラーが出た場合、原因が何個か考えられます。
- 本当にRD gatewayがダウンしている場合(RemoteAppが切断されましたエラーが表示されるまでに時間がかかるケース)
- 証明書がクライアントとサーバーで一致無い場合(ALBのように経路の途中で証明書が複合化されている場合)
があります。
参考までに、RDP over httpsは「netsh winhttp」のプロキシを経由し接続しに行きます。プロキシで証明書が複合化されているケースも考えられます。
クライアント側にRDゲートウェイの証明書が無い場合は?
「このコンピュータはRDゲートウェイのIDを確認できません。IDを確認できないサーバーへの接続は安全ではありません。サポートが必要な場合は、ネットワーク管理者に問い合わせてください」
というメッセージが表示されます。
「証明書の表示」ボタンを押し、
「ファイルにコピー」ボタンで証明書をパソコンに保存し、その保存した証明書のインストールを行います。保存する証明書ストアは、「信頼されたルート証明機関」へ保管します。
証明書をインストールすることにより、RDゲートウェイに接続できるようになります。
RDPクライアントのRDS接続ステータス遷移
RDS接続する時のRDPクライアントの接続ステータス遷移です。
以下のステータス変化でクライアントからRDSに接続していました。
- (このRemoteAppプログラムの発行元を識別できません。接続してこのプログラムを実行しますか?)
- リモート接続を開始しています…
- (資格情報を入力してください)
- リモート接続を開始しています…
- ----RDゲートウェイに接続----
- リモート接続を保護しています…
- ----RD接続ブローカーに接続----
- (このリモートコンピュータのIDを識別できません。接続しますか?)
- リモート接続を保護しています…
- リモートセッションを構成しています…
- 仮想マシンを読み込んでいます…
- リモート接続を開始しています…
- ----RDセッションホストに接続----
- リモート接続を保護しています…
- リモートセッションを構成しています…
- 接続品質の評価中…
- リモートセッションを構成しています…
クライアントからRDSへ接続中時にエラーが出た時は、このステータスの箇所でどこに問題があるかのわかりかもしれませんね。