RDSがWindows OS起動後にリモートデスクトップ接続できない時がある

RDS(リモートデスクトップサービス)

  • RD接続ブローカー
  • RDセッションホスト
  • RD webアクセス

を使用したサービスを利用した時に、Windowsを起動したら

時々リモートデスクトップサービスが接続できないことがある

という事象が起こりました。

こちらの原因と対策を紹介します。

環境・前提条件

今回の現象は、クラウドAWS上のEC2で発生しました。

EC2へリモートデスクトップ接続できないなんて致命的ですよね。

  • AWS EC2
  • Windows Server 2019 (1台にAD、RD接続ブローカー、RDセッションホスト、RD Webアクセス、RDライセンスがインストールされている)

上記環境で発生しました。

わかっていることは、

「Remote Desktop Connection Broker」サービス (RD接続ブローカー) が起動できていない事でした。

結論、Windows起動後少し経ったらRD接続ブローカーサービスを起動させてあげる

Windows OS起動後に、リモートデスクトップ接続できない時は、「Remote Desktop Connection Broker」サービスを起動させてあげれば再度リモートデスクトップサービス接続できるようになります。

具体的には、

net start Tssdis

コマンドを実行してあげれば、RD接続ブローカーが停止している時は起動できますし、

RD接続ブローカーが開始していれば、コマンドエラーとなりそのままの状況が維持できます。

もしくは、「Remote Desktop Connection Broker」サービスのスタートアップを「自動(遅延開始)」にして遅延起動にしても回避できるかもしれませんね(未確認)。
遅延開始の遅延時間は、デフォルトで2分のようです。

RD接続ブローカーサービスが停止している状態でリモートデスクトップ接続する方法

今回の事象が起きている(RD接続ブローカーサービスが停止した)状態に、通常のリモートデスクトップ接続では接続できません。

リモートデスクトップ接続のユーザー名とパスワードまで聞かれるので、接続出来そうに見えて、最終的に上記画面の「このコンピューターはリモートコンピューターに接続できません。」エラーが発生し、接続できません。

つまり、

リモートデスクトップの3389ポートはリッスンしている

にも関わらず接続出来ない状態です。

しかし、以下のコマンドでリモートデスクトップ接続をすると、今回の事象が起きている状態でも、リモートデスクトップ接続できます。

mstsc /admin

このコマンドで、リモートデスクトップ接続してから復旧作業が出来ます。

【原因】OS起動タイミングでIPアドレスが割り当てられる前に接続ブローカーが開始されている

なぜこのような、時々RD接続ブローカーが起動しない状態が起きるのかといいますと、

  • NICドライバーが読み込まれていない状態や
  • DHCPにてIPアドレスが割り振られていない状態

でRD接続ブローカーサービスが起動してしまうと、RD接続ブローカーがダウンしてしまうようです。

なので、Windows OS起動のタイミングによって、この事象が起きたり起きなかったりするという状況です。

RDSサービス一式はどのような順番でサービスが起動しているのか?サービス依存関係

RDサービス一覧のスタートアップ状態を見ますと、以下のようになってます。

Noサービス名スタートアップの種類
1Remote Desktop Configuration手動
2Remote Desktop Connection Broker自動
3自動
4Remote Desktop Management自動(遅延起動)
5Remote Desktop Services手動
6Remote Desktop Services UserMode Port Redirector手動
7RemoteApp and Desktop Connection Management自動

スタートアップが「起動」になっているサービスは

  • Remote Desktop Connection Broker (RD接続ブローカー)
  • Remote Desktop Licensing (RDライセンス)
  • RemoteApp and Desktop Connection Management

の3つです。

今回、RD接続ブローカーサービスの依存関係を見てみますと、

上記のようになっています。

つまり、「Remote Desktop Connection Broker」サービスを起動させる前に、「このサービスが依存するシステムコンポーネント」のサービスを起動させます。

当然、RD接続ブローカーが起動する前には「Windows Internal Database」サービスが起動していないと駄目ですよね。

そして、意外なのは「Remote Desktop Services」サービスとは依存関係はないということです。

コメントを残す

メールアドレスが公開されることはありません。