Windows Virtual Desktop #9 .rdpファイルの中身

この記事のWVDは”Windows Virtual Desktop Spring 2020 Release”が対象です。

WVD 接続で利用するリモートデスクトップクライアントはOS標準の”mstsc.exe”ではなく”msrdc.exe”です。  この”msrdc.exe”が接続時に読み込む .rdp ファイルの中身を詳細に確認し、どのような情報があるのか、また、実運用時にカスタマイズできそうな要素があるか、など見ていきます。

まずWVD 接続用の.rdp ファイルは%localappdata%\rdclientwpf にあります。実際にはworkspace 毎にもう1階層フォルダがあり、その中にあります。

フォルダ “%localappdata%\rdclientwpf”

フォルダ “%localappdata%\rdclientwpf\3eabc1d8-6480-4047-a1a4-4ffed4a1882d”

.rdp ファイルをエディターなどで開きます。 小さくて見えないとは思いますが以下の感じでパラメータが可読出来る形でファイルに保管されています。 signature は別に公開しても問題ない気はしますが一応マスク。

項目をそれぞれみていきます。 とりあえず、signature 以外の部分です。 リモートデスクトッププロトコル に関する設定と WVD に関する設定の大きく2つにわけられそうです。 WVD に関するものっぽいのはハイライトします。

videoplaybackmode:i:1
audiomode:i:0
redirectdrives:i:1
redirectclipboard:i:1
redirectprinters:i:1
redirectcomports:i:1
redirectsmartcards:i:1
use multimon:i:1
devicestoredirect:s:*
drivestoredirect:s:*
promptcredentialonce:i:1
gatewaycredentialssource:i:0
gatewayusagemethod:i:1
gatewayprofileusagemethod:i:1
enablecredsspsupport:i:1
authentication level:i:1
gatewaybrokeringtype:i:1
wvd endpoint pool:s:224166ba-7eec-44b9-b4b7-02bc184a4ccb
loadbalanceinfo:s:mth://localhost/16432e0a-3209-404c-a2f6-28791e884918/224166ba-7eec-44b9-b4b7-02bc184a4cc
b
workspace id:s:3eabc1d8-6480-4047-a1a4-4ffed4a1882d
gatewayhostname:s:afd-rdgateway-r0.wvd.microsoft.com:443
full address:s:rdgateway-r0.wvd.microsoft.com
alternate full address:s:rdgateway-r0.wvd.microsoft.com
diagnosticserviceurl:s:https://rdweb-r0.wvd.microsoft.com/api/arm/DiagnosticEvents/v1

resourceprovider:s:arm
remoteapplicationprogram:s:||d70656d3-6064-4f6f-33c1-08d7f8bf9016
remoteapplicationmode:i:0
remotedesktopname:s:SessionDesktop

signscope:s:Full Address,Alternate Full Address,EnableCredSspSupport,GatewayHostname,GatewayUsageMethod,GatewayProfileUsageMethod,GatewayCredentialsSource,PromptCredentialOnce,RemoteApplicationProgram,RemoteApplicationMode,RemoteDesktopName,Authentication Level,AudioMode,RedirectDrives,RedirectPrinters,RedirectCOMPorts,RedirectSmartCards,RedirectClipboard,DevicesToRedirect,DrivesToRedirect,LoadBalanceInfo

まずはWVD に関連してそうなパラメータから見ていきます。 以下でマニュアルURL として載せているのはMicrosoft Docs ですがWVD ではなく Windows Server のリモートデスクトップサービスのものです。大きな違いはないとは思いますが参考程度に確認するとよいでしょう。

wvd endpoint pool:s:224166ba-7eec-44b9-b4b7-02bc184a4ccb

これは接続先のhost pools やworkspace や application groups に関するものだとは思うのですがこの識別子を持つオブジェクトを見つけられず。 とは言ってもAzure Portal で検索しただけなので PowerShel でWVD のオブジェクトを扱えば確認できるかもしれません。まだ調べてもいません。

loadbalanceinfo:s:mth://localhost/16432e0a-3209-404c-a2f6-28791e884918/224166ba-7eec-44b9-b4b7-02bc184a4ccb

ロードバランスのアルゴリズムに関する設定なのかどうか。 ためしにWVD のhost 側でロードバランスのアルゴリズムを変えてフィードを更新しても変わらないこと、また、上記の”/224166ba-7eec-44b9-b4b7-02bc184a4ccb“は1つ上のwvd endopoint にある識別子と変わらないので、おそらくですがWVD 側のロードバランサーに渡してあげる情報、クライアント側の一意性を示すような、なのかなと思われます。

workspace id:s:3eabc1d8-6480-4047-a1a4-4ffed4a1882d

こちらは”workspace” のid です。”3eabc1d8-6480-4047-a1a4-4ffed4a1882d”はフォルダ名になっていたものです。

マニュアルURL

gatewayhostname:s:afd-rdgateway-r0.wvd.microsoft.com:443

“gatewayhostname” は接続先です。 このDNS 名は単純にWVD のRD Gateway をポイントするものではないでしょう。途中にリージョン間での地理的ロードバランサー、リージョン内のL4/L7ロードバランサーなどが存在すると思います。 この”afd-rdgateway-r0.wvd.microsoft.com”がどこをポイントするかはパケットキャプチャで別途DNS リクエストを確認することとします。

マニュアルURL

full address:s:rdgateway-r0.wvd.microsoft.com

“full address” として”rdgateway-r0.wvd.microsoft.com” が指定されています。一つ上の”gatewayhostname”とはホスト名部分が異なります。 ここもパケットキャプチャで別途度の順番で接続し、どこに接続していくのか確認することにします。

マニュアル見る限り”gatewayhostname”はRD Gateway 、”full address”はセッションホストを示す模様。ただマニュアルはWVD ではなく OS 標準リモートデスクトップサービスのものなので参考程度に。

マニュアルURL

alternate full address:s:rdgateway-r0.wvd.microsoft.com

“alternate full address” とのことで代わりのアドレスということですが上の”full address”と同じものが設定されています。

マニュアルURL

diagnosticserviceurl:s:https://rdweb-r0.wvd.microsoft.com/api/arm/DiagnosticEvents/v1

こちらはdiagnostic 関連の設定でしょう。 既定では有効にされていないdiagnostic settings を有効にするとリモートデスクトップ クライアントからもログをAzure 上のLog Analytics やStorage Accounts に集約出来るのかもしれません。 これも別途確認です。

resourceprovider:s:arm

“resourceprovider” としてarm を指定しています。 Fall 2019 から Spring 2020 への大きな変更としてある ARM 対応に関連してここで指定しているのでしょう。 Fall 2019 の .rdp ファイルにはこの項目自体はありません。

remoteapplicationprogram:s:||d70656d3-6064-4f6f-33c1-08d7f8bf9016

これはアプリケーション名の名称。

マニュアルURL

remoteapplicationmode:i:0

マニュアルからはRemoteApp Connection を RemoteApp Session として起動するかどうかのフラグ。 0はRemoteApp Session として起動しないになります。

マニュアルURL

remotedesktopname:s:SessionDesktop

これはApplication group type がDesktop だった時の接続先の名前ですね。

signature:s:AQABAAEAAAB8EwAAMIITeAYJKoZIhvcNAQcC~省略~

signagture ですがここを削除すると接続できないとマニュアルに記載ありました。

“Connections to Windows Virtual Desktop are now blocked if the RDP file is missing the signature or one of the signscope properties has been modified.”

その他パラメータはMicrosoft Docs を確認しましょう。 ドライブやクリップボードのリダイレクトの設定、RD Gateway の接続時の設定、など色々あります。 なおこれらの設定はSpring 2020 では Azure Portal 上の以下の画面で設定できるようになっています。 

これまで直接 .rdp ファイルの中を見てきましたが、GUI でも確認できます。 .rdp ファイルを右クリックして”編集”を実行します。

OS 標準のリモートデスクトップクライアント 起動時と同じような画面が開きます。 

同じような画面ということで確認します。 OS 標準のリモートデスクトップクライアントです。 msrdc.exe ではなかったです。

試しにここで設定を変えて保存してどうなるかテストしてみます。 構成を変えて、別の.rdp ファイルとして保存しそのファイルを引数に msrdc.exe を起動しましたが変えた構成は反映されませんでした。 また、.rdp ファイルを msrdc.exe に関連付けすると右クリックからの”編集”メニューはなくなりますのでmsrdc.exe には編集機能は実装されていないということでしょう。

直接 .rdp ファイルでカスタマイズする場合はクライアント側とサーバ側の整合性を保つ必要があるのかもしれません。 上の簡単なテストでは失敗しましたがAzure Portal 上でクリップボードを無効にしていてもクライアント側で有効にした場合にどうなるかは確認しておいた方がよいですね。 Azure Portal での設定が実際のsession host にも反映されていればよいのですが、あくまでクライアント側の設定を変えるだけでは利用者がこのパラメタを変えれば管理者が禁止した行為、ドライブマウントやクリップボードコピーを使えてしまうためです。  これも別途確認です。(触れば触るほど別途確認項目が増えて時間がもっともっと欲しいですね)

今回の記事はここまでとします。