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サイトを利用している環境ばかりでした。ストアの構築実績がなく切り分けが上手く出来なかった事が第一のハマリポイントでした。Citrix Virtual Desktops(XenDesktop)の環境であれば上記のストアURLで問題ないのかもしれませんが、今回の環境はCitrix Virtual Apps(XenApp)の公開デスクトップによる実装のため上手くいきませんでした。
しかしストアのURLをXenApp ServiceサイトのURLに書き換えることで上手く接続できる様になりました。StorefrontはHTTPSを設定していないためHTTPでアクセスさせています。
インストールコマンドのサンプルは以下の通り

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

この他にもADDLOCALオプションを使ってインストールするオプションを細かく指定しています。

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

Citrix Receiver DesktopLockの動作要件に含まれるMicrosoft Visual C++ 2005をインス トールします。まずはMSのサイトからダウンロードするのですがx64なのかx86なのか指定がありません。Citrix Receiverは32bitで動作するためx86版でよいはずですが、手戻りが嫌だったのでx64/x86両方をインストールしました。接続元の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のインストールの項でも記載していますが、XenApp Serviceサイトを有効にしました。有効化の手順はCitrixのナレッジに記載されています。
Receiver for WEBサイトを利用しているユーザーが居るため、デフォルトストアの指定はしません。

XenApp ServiceサイトでのSSO有効化

ここが第2のハマリポイントでした。ストアの認証方法はドメインパススルー(シングルサインオン)に設定していますが、XenApp Serviceサイトはストアの認証方法を引き継がないようです。このままCitrix Receiver DesktopLockの動作テストトを行うと、Citrix ReceiverがXenApp Serviceサイトにアクセスするときに、ユーザーアカウントの入力を求められます。
そこでStorefrontサーバー上でPowershellを実行しXenApp Serviceサイトをシングルサインオンモードに変更する必要があります。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は動作しません。
今回の環境は同じデリバリーコントローラーに公開アプリケーションのデリバリーグループも存在しているため、このままでは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からログオフや切断した場合、自動的にクライアントからもログオフされます。

コメント

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