Linux Virtual Delivery Agent

Linux向けHDX Direct

Citrixが提供するリソースにアクセスする場合、HDX Directを使用すると、内部および外部の両方のクライアントデバイスはセッションホストとのセキュアな直接接続を確立できます(直接通信が可能な場合)。

システム要件

HDX Directを使用するためのシステム要件は次のとおりです:

  • コントロールプレーン

    • Citrix DaaS
    • Citrix Virtual Apps and Desktops 2503以降
  • Virtual Delivery Agent(VDA)

    • Linux:バージョン2503以降
  • Workspaceアプリ

    • Windows:バージョン2503以降
    • Linux:バージョン2411以降
    • Mac:バージョン2411以降
  • アクセス層

    • Citrix Workspace
    • Citrix StoreFront 2503以降
    • Citrix Gatewayサービス
    • Citrix NetScaler Gateway

ネットワークの要件

HDX Directを使用するためのネットワーク要件は次のとおりです:

セッションホスト

セッションホストにファイアウォールがある場合は、内部接続に対して次の受信トラフィックを許可する必要があります。 | 説明 | 送信元 | プロトコル | ポート | | — | — | — | — | | 直接内部接続 | クライアント | TCP | 443 | | 直接内部接続 | クライアント | UDP | 443 |

クライアント側ネットワーク

次の表に、内部ユーザーと外部ユーザーのクライアントネットワークを示します。

内部ユーザー

説明 プロトコル 送信元 送信元ポート 送信先 送信先ポート     直接内部接続 TCP クライアントネットワーク 1024~65535 VDAネットワーク 443   直接内部接続 UDP クライアントネットワーク 1024~65535 VDAネットワーク 443

外部ユーザー

説明 プロトコル 送信元 送信元ポート 送信先 送信先ポート     STUN(外部ユーザーのみ) UDP クライアントネットワーク 1024~65535 インターネット(下記の注を参照) 3478、19302   外部ユーザー接続 UDP クライアントネットワーク 1024~65535 データセンターのパブリック IPアドレス 1024~65535

データセンターネットワーク

次の表に、内部ユーザーと外部ユーザーのデータセンターネットワークを示します。

内部ユーザー

説明 プロトコル 送信元 送信元ポート 送信先 送信先ポート     直接内部接続 TCP クライアントネットワーク 1024~65535 VDAネットワーク 443   直接内部接続 UDP クライアントネットワーク 1024~65535 VDAネットワーク 443

外部ユーザー

説明 プロトコル 送信元 送信元ポート 送信先 送信先ポート     STUN(外部ユーザーのみ) UDP VDAネットワーク 1024~65535 インターネット(下記の注を参照) 3478、19302   外部ユーザー接続 UDP DMZ / 内部ネットワーク 1024~65535 VDAネットワーク 55000~55250   外部ユーザー接続 UDP VDAネットワーク 55000~55250 クライアントのパブリックIP 1024~65535

VDAとWorkspaceアプリは両方とも、STUN要求を以下のサーバーにこの順序で送信しようとします:

  • stun.cloud.com:3478
  • stun.cloudflare.com:3478
  • stun.l.google.com:19302

[HDX Directのポート範囲] ポリシー設定を使用して外部ユーザー接続のデフォルトのポート範囲を変更する場合、カスタムポート範囲が対応するファイアウォール規則を満たしている必要があります。

構成

デフォルトでは、HDX Directは無効になっています。 この機能を構成するには、Citrixポリシーの [HDX Direct] 設定を使用します。

  • HDX Direct:機能を有効または無効にします。
  • HDX DirectモードHDX Directを内部クライアントのみで使用可能にするか、内部クライアントと外部クライアントの両方で使用可能にするかを設定します。
  • HDX Directのポート範囲:VDAが外部クライアントからの接続に使用するポート範囲を定義します。

注意事項

HDX Directを使用するための注意事項は次のとおりです:

  • HDX Directを外部ユーザーが使用できるようにするには、トランスポートプロトコルとしてEDT(UDP)を使用する必要があります。 このため、[アダプティブトランスポート] を有効にする必要があります。
  • HDX Insightを使用している場合は、HDX Directを使用すると、セッションがNetScaler Gatewayの仲介によるアクセス対象にされなくなるため、HDX Insightのデータ収集が妨げられることに注意してください。
  • HDX Directでの独自の証明書の使用は現在サポートされていません。

機能

HDX Directを使用すると、直接通信が利用できる場合、クライアントはセッションホストへの直接接続を確立できます。 HDX Directで直接接続を行うと、自己署名証明書により、ネットワークレベルの暗号化(TLS/DTLS)で直接接続が保護されます。

内部ユーザー

次の図は、内部ユーザーのHDX Direct接続プロセスの概要を示しています。

HDX Directの概要

  1. クライアントは、Gateway Serviceを通じてHDXセッションを確立しようとします。
  2. 接続が成功すると、VDAは、VDAマシンのFQDN、そのIPアドレスの一覧、およびVDAマシンの証明書をHDX接続経由でクライアントに送信します。
  3. クライアントはIPアドレスをプローブして、VDAに直接アクセスできるかどうかを確認します。
  4. クライアントは共有IPアドレスのいずれかを使用してVDAに直接接続できる場合、手順(2)で交換した証明書と一致する証明書を使用して、(D)TLSで保護された、VDAとの直接接続を確立しようとします。
  5. 直接接続が正常に確立されると、セッションが新しい接続に転送されるので、Gateway Serviceへの接続は終了します。

上記の手順2で接続を確立すると、セッションがアクティブになります。 後続の手順を実行しても、仮想アプリケーションまたはデスクトップを使用しようとする場合に遅延や妨害が生じることはありません。 後続の手順のいずれかが失敗した場合でも、Gatewayを介した接続はユーザーのセッションを中断することなく維持されます。

外部ユーザー

次の図は、外部ユーザーのHDX Direct接続プロセスの概要を示しています:

HDX Direct接続プロセス

  1. クライアントは、Gateway Serviceを通じてHDXセッションを確立しようとします。
  2. 接続が成功すると、クライアントとVDAの両方がパブリックなIPアドレスとポートを検出するためのSTUN要求を送信します。
  3. STUNサーバーは、対応するパブリックなIPアドレスとポートを使用してクライアントとVDAに応答します。
  4. HDX接続を通じて、クライアントとVDAはパブリックなIPアドレスとUDPポートを交換し、VDAは証明書をクライアントに送信します。
  5. VDAは、クライアントのパブリックなIPアドレスとUDPポートにUDPパケットを送信します。 クライアントは、UDPパケットをVDAのパブリックなIPアドレスとUDPポートに送信します。
  6. クライアントはVDAからメッセージを受信すると、セキュリティで保護された接続の要求で応答します。
  7. DTLSハンドシェイク中に、クライアントは証明書が手順4で交換された証明書と一致することを確認します。 検証後、クライアントは承認トークンを送信します。 これで、セキュリティで保護された直接接続が確立されました。
  8. 直接接続が正常に確立されると、セッションが新しい接続に転送されるので、Gateway Serviceへの接続は終了します。

上記の手順2で接続を確立すると、セッションがアクティブになります。 後続の手順を実行しても、仮想アプリケーションまたはデスクトップを使用しようとする場合に遅延や妨害が生じることはありません。 後続の手順のいずれかが失敗した場合でも、Gatewayを介した接続はユーザーのセッションを中断することなく維持されます。

NAT互換性

外部ユーザーのデバイスとセッションホスト間の直接接続を確立するために、HDX DirectはSTUNとNATトラバーサルのホールパンチングを利用して、クライアントデバイスとセッションホストの間でパブリックなIPアドレスとポートのマッピングを交換できるようにします。 これは、VoIP、統合コミュニケーション、P2Pソリューションの仕組みと似ています。

ファイアウォールおよびその他のネットワークコンポーネントがHDXセッションおよびSTUN要求のUDPトラフィックを許可するように構成されている限り、外部ユーザー向けのHDX Directは機能することが期待できます。 ただし、ユーザーネットワークのNATタイプとセッションホストネットワークのNATタイプに互換性がない場合にHDX Directが失敗する場合もあります。

検証

クライアントとセッションホストのNATタイプとフィルタリングを検証するには、STUNTMANのSTUNクライアントユーティリティを使用します:

  1. ターゲットプラットフォームに適切なパッケージをstunprotocol.orgからダウンロードし、内容を抽出します。
  2. コマンドウィンドウを開き、内容が抽出されたディレクトリに移動します。
  3. 次のコマンドを実行します: ./stunclient stunserver2024.stunprotocol.org --mode behavior
  4. 出力をメモします。

    バインドテストと動作テストが成功した場合、binding testbehavior testの両方によって成功が報告され、NATの動作が指定されます:

    NATの成功

    テストが失敗した場合、binding testおよび/またはbehavior testによって失敗が報告されます。

    NATの失敗

  5. 次のコマンドを実行します: ./stunclient stunserver2024.stunprotocol.org --mode filtering
  6. 出力をメモします。

    NATのフィルタリング

次の表を参照すると、外部ユーザー向けのHDX Directが動作することを期待できるかどうかを、クライアントテストとセッションホストテストの両方の結果に基づいて判断することができます: | クライアントNATの動作 | クライアントNATフィルタリング | セッションホストのNATの動作 | セッションホストのNATフィルタリング | 機能しますか? | | — | — | — | — | — | | エンドポイントに依存しないマッピング | 任意 | エンドポイントに依存しないマッピング | 任意 | はい | | エンドポイントに依存しないマッピング | エンドポイントに依存しないマッピング | アドレス依存マッピング | 任意 | はい | | エンドポイントに依存しないマッピング | アドレス依存フィルタリング | アドレス依存マッピング | 任意 | いいえ | | エンドポイントに依存しないマッピング | アドレスおよびポート依存のフィルタリング | アドレス依存マッピング | 任意 | いいえ | | エンドポイントに依存しないマッピング | エンドポイントに依存しないフィルタリング | アドレスおよびポート依存のマッピング | エンドポイントに依存しないフィルタリング | はい | | エンドポイントに依存しないマッピング | アドレス依存フィルタリング | アドレス依存マッピング | 任意 | いいえ | | エンドポイントに依存しないマッピング | アドレスおよびポート依存のフィルタリング | アドレス依存マッピング | 任意 | いいえ | | アドレス依存マッピング | 任意 | エンドポイントに依存しないマッピング | エンドポイントに依存しないフィルタリング | はい | | アドレス依存マッピング | 任意 | エンドポイントに依存しないマッピング | アドレス依存フィルタリング | いいえ | | アドレス依存マッピング | 任意 | エンドポイントに依存しないマッピング | アドレスおよびポート依存のフィルタリング | いいえ | | アドレス依存マッピング | 任意 | アドレス依存マッピング | 任意 | いいえ | | アドレス依存マッピング | 任意 | アドレスおよびポート依存のマッピング | 任意 | いいえ | | アドレスおよびポート依存のマッピング | 任意 | エンドポイントに依存しないマッピング | エンドポイントに依存しないフィルタリング | はい | | アドレスおよびポート依存のマッピング | 任意 | エンドポイントに依存しないマッピング | アドレス依存フィルタリング | いいえ | | アドレスおよびポート依存のマッピング | 任意 | エンドポイントに依存しないマッピング | アドレスおよびポート依存のフィルタリング | いいえ | | アドレスおよびポート依存のマッピング | 任意 | アドレス依存マッピング | 任意 | いいえ | | アドレスおよびポート依存のマッピング | 任意 | アドレスおよびポート依存のマッピング | 任意 | いいえ | | 失敗| 任意 | 任意 | 任意 | いいえ | | 任意 | 任意 | 失敗| 任意 | いいえ | | 失敗| 任意 | 失敗| 任意 | いいえ |

Linux向けHDX Direct