Citrix Receiver for Windows Desktop Lockを利用する

Citrix関連技術

久しぶりにCitrixネタの投稿です。
Citrix Receiver for Windows Desktop Lockを使用するとローカル(接続元端末)のデスクトップの操作を一切させず、接続元端末へログオンすると即座にVDIへ接続することが可能になります。シンクライアント端末を利用する場合や、接続元端末を触らせたくない場合に有効です。
そんなCitrix Receiver for Windows Desktop Lockの環境構築でちょっとハマってしまい、ググっても実装方法を日本語で解説しているサイトが少なく困ってしまったので、備忘録として記載します。

Citrix Receiver Desktop Lockのシステム要件

システム要件は以下の通り

  • Microsoft Visual C++ 2005 Service Pack 1再頒布可能パッケージ
  • Windows 7 (Embedded Editionを含む)、Windows 7 ThinPC、Windows 8、Windows 8.1、Windows 10 (Anniversary Updateを含む)でサポートされます
  • ネイティブプロトコルのみを介してStoreFrontに接続します
  • ドメイン参加および非ドメイン参加のエンドポイント
  • ユーザーデバイスをローカルエリアネットワーク(LAN) またはワイドエリアネットワー ク(WAN)に接続する必要があります

詳細はCitrixのナレッジを参照してください。私が構築した環境は以下の通りでシステム要件は満たしています

  • Windows 10 IoTエディション搭載のシンクライアント端末
  • ドメイン参加している
  • ローカルエリアネットワークのみでWANはなし
  • ネイティブプロトコルのみ

インストール

Citrix Receiver Desktop Lockを有効にするため、お作法に従って接続元のクライアントにソフトをインストールしていきます。

Citrix Receiverのインストール

Citrix ReceiverはSSOを有効かつ、ストアを構成した状態でインストールする必要があります。Citrixのナレッジにはインストールコマンドのサンプルとして以下の通り記載されています。

CitrixReceiver.exe /includeSSON STORE0=”DesktopStore;https://my.storefront server/Citrix/MyStore/discovery;on;Desktop Store”

 私が面倒みている環境ではストアは使わず、Receiver for WEBサイトを利用している環境ばかりです。そのため、ストアの構築実績がなく、Desktop Lockがうまく動かない時に切り分けが出来ませんでした。これが第一のハマリポイントでした。
 Citrix Virtual Desktops(XenDesktop)の環境であれば上記のストアURLで問題ないのかもしれませんが、私が今回構築した環境はCitrix Virtual Apps(XenApp)の公開デスクトップのため、意図通りにストアの検出が出来ませんでした。
 解決方法は、ストアのURLをXenApp ServiceサイトのURLに書き換えることでした。XenApp ServiceサイトのURLに変更すると、公開デスクトップに接続できる様になりました。インストールコマンドのサンプルは以下の通り。

CitrixReceiver.exe /includeSSON STORE0=”DesktopStore; http://my.storefront server/Citrix/MyStore/PNAgent/config.xml;on;Desktop Store”

 今回構築したのはHTTPSを構成していないStorefrontのため、HTTPでアクセス出来るように設定しています。このサンプルコマンド以外にも、ADDLOCALオプションを使用してインストールするオプションを細かく指定しています。

Microsoft Visual C++ 2005 Service Pack 1のインストール

 Citrix Receiver DesktopLockの動作要件に含まれるMicrosoft Visual C++ 2005をインストールします。MSのサイトから Microsoft Visual C++ 2005 のインストーラーをダウンロードしたいのですが、Citrix Receiver DesktopLockの動作に必要な Microsoft Visual C++ 2005が、x64なのかx86なのか指定がありません。システム要件に書いといてくださいよ、という感じです。
 Citrix Receiverは32bitで動作するアプリケーションのため、x86版でよいはずです。しかし、手戻りが嫌だったのでx64/x86両方をインストールしました。今回の環境では接続元端末のOSが64bitだったので混乱しましたが、OSが32bitであればx86だけ大丈夫です。

MS公式のダウンロードサイトはこちらです
https://www.microsoft.com/ja-jp/download/details.aspx?id=26347

Citrix Receiver DesktopLockのインストール

 いよいよCitrix Receiver DesktopLockのインストールです。単にインストールできれば良いものなので、手順らしい物はありません。サクッとサイレントインストールします。Citrixナレッジに記載されているサンプルコマンドのままではインストール後に再起動してしまうので、/norestartオプションを追加してインストールしました。

msiexec /i CitrixReceiverDesktopLock.msi /an /norestart

 この一連のインストールはスクリプト化して、大量導入の場合でも少ない人手で出来るようにしました。

Storefrontの設定

クライアント側の設定は出来ましたがサーバー側(Storefront)への設定も必要です。

XenApp Service Siteの有効化

 Citrix Receiverのインストールの項でも記載していますが、Citrix Receiver Desktop LockをインストールしたクライアントからXenApp公開デスクトップに接続する場合は、Storeサイトではなく、XenApp Serviceサイトにアクセスさせる必要があります。
 XenApp Serviceサイトはデフォルトでは無効のため有効化する必要があります。XenApp Serviceサイトの有効化手順はCitrixのナレッジに記載されています。
 今回構築した環境では、Receiver for WEBサイトを利用している既存ユーザーが居るため、デフォルトストアの指定はしませんでした。

XenApp ServiceサイトでのSSO有効化

 XenApp ServiceサイトでSSOを有効化する必要があるのですが、ここが第2のハマリポイントでした。ストアの認証方法はドメインパススルー(シングルサインオン)に設定していますが、XenApp Serviceサイトは、初期状態ではストアの認証方法を引き継がないようです。
 このままCitrix Receiver DesktopLockをインストールした端末から接続テストを行うと、Citrix ReceiverがXenApp Serviceサイトにアクセスするときに、資格情報の入力を求められます。これを解決するため、XenApp Serviceサイトをシングルサインオンモードに変更する様に、Storefrontサーバー上でPowershellコマンドを実行する必要があります。コマンドは以下の通りです。

& ‘C:\Program Files\Citrix¥Receiver StoreFront¥Scripts\EnablePnaForStore.ps1’ -SiteID 1 -ResourcesVirtualPath /Citrix/MyStore -LogonMethod sson

 実行するPS1のパスはStorefrontのインストール環境によって異なるので適宜書き換えが必要です。記載しているサンプルはデフォルパスの場合です。オプションの意味は以下の通りです。
-SiteID
  Storefrontが実装されているIISのIDです。 Storefrontだけが乗っている環境なら「1」 のはずです。
-ResourcesVirtualPath
  ストアのパスを記載します
-LogonMethod
  ssonを指定することでシングルサインオンモードに変わります。
  sson以外のオプションは次の通りです {prompt | sson | smartcard_sson | smartcard_prompt}。デフォルトは「prompt」です。

利用可能なアプリをデスクトップ1つに制限

 Citrixのナレッジに「Citrix Receiver for Windows Desktop Lockを使用するユーザーには、単一の仮想デスクトップだけのアクセスを付与します。」と記載されているように、複数のデスクトップが存在したり、公開アプリケーションが存在したりするとCitrix Receiver for Windows Desktop Lockは動作しません。
 今回の環境は同じデリバリーコントローラーに公開アプリケーションのデリバリーグループも存在しているため、デフォルトのままでXenApp Serviceサイトにアクセスすると、利用可能なアプリケーションも検出してしまいます。このままではCitrix Receiver for Windows Desktop Lockの妨げになってしまいます。
 そこで、公開デスクトップ用と公開アプリケーション用でストアを分け、公開デスクトップのストアにはデスクトップのデリバリーグループのみが表示されるように設定します。これはストアフロントのフィルターで設定が可能です。詳しくはCitrixナレッジに記載されています。

まずはPowershellを起動してStorefrontのコマンドに必要なモジュールを読み込ませます。
& ‘C:\Program Files\CitrixReceiver StoreFront\Scripts¥ImportModules. ps1″

現在ストアに設定されているフィルターを確認します。
Get-DSResourceFilterType -Siteld 1 -VirtualPath /Citrix/MyStore
デフォルトであれば制限なし(すべてのオブジェクトが入っている)状態なので、以下の値が返ってくるはずです。
Applications
Desktops
Documents

次にSet-DSResourceFilterTypeで「デスクトップ」のリソースだけが表示されるよう設定します。
Set-DSResourceFilterType -Siteld 1 -VirtualPath /Citrix/MyStore -IncludeTypes @ (“Desktops”)

もう一度Get-DSResourceFilterTypeを実行すると「Desktops」だけが返ってくる事が確認できるはずです。切り戻すにはIncludeTypesを @(“Applications”, “Desktops”, “Documents”) にすればOKです。
リソースタイプによるフィルターだけではなく、Set-DSResourceFilterKeywordコマンドを利用すればキーワードによるフィルターも可能です。
ただし、うっかり同じキーワードが入るアプリケーションを公開した時に問題になる可能性があるため、リソースタイプのフィルターの方が運用しやすいと思います。

設定完了

 以上でCitrix Receiver for Windows Desktop Lockの準備が整いましたので、正しく動作するか確認しましょう。
 VDIを表示しているとき、従来と同じように [Shift] + [F2] は有効なので、ウインドウモードに変更することが出来ます。しかしウインドウの下は真っ白な背景で覆われているため、クライアントのデスクトップは操作する事が出来ません。またVDIからログオフや切断した場合、自動的にクライアントからもログオフされます。

スクリーンロックが掛かるとセッションが「切断済み」になる

 Citrix Receiver for Windows Desktop Lockを構成した端末でスクリーンロックが掛かると、VDIとのセッションが切断され、Citrix StudioやCitrix Directorでセッションの状態が「切断済み」になります。これは Citrix Receiver for Windows Desktop Lockのデフォルトの挙動です。
 ユーザーが端末のスクリーンロックを解除すると、即座に仮想デスクトップのリソースに再接続しますので、切断済みになる挙動が問題になる場面は少ないと思います。また、Desktop Lockの設計思想的にはデフォルトの挙動のままで運用すべきだと思います。

 しかし、仮想デスクトップ側のリソース上の懸念から、一定時間が経過した切断セッションをログオフする設定をしている場合は事情が違ってきます。ユーザーから「しばらく離席して戻ってきたら編集中のドキュメントが無くなっていた!」という、そりゃそうだろうという問い合わせを受ける場合が出てくるはずです。

 このような場合は、スクリーンロック時にもセッションを維持するように変更することで、回避できます。

Desktop Lock disconnect the session if “WSCReconnectMode” is set to a number higher than 7

Set the registry key WSCReconnectMode to a number lower than 8. The registry key can be found in:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Citrix\Dazzle
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\Dazzle
That key can me used in conjunction with LiveInDesktopDisconnectonLock

On 32-bit Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\Dazzle
Name: LiveInDesktopDisconnectonLock
Type: REG_SZ
Value: False

On 64-bit Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\Dazzle
Name: LiveInDesktopDisconnectonLock
Type: REG_SZ
Value: False

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\Dazzle
LiveInDesktopDisconnectonLock
の値はデフォルトではTrueになっています。
これがTrue場合スクリーンロック時にセッションを切断します。Falseに変更するとセッションは維持されますので、問題の事象が回避できます。

コメント

タイトルとURLをコピーしました