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 Service
- 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) を使用する場合にのみ利用可能です。したがって、Adaptive Transport を有効にする必要があります。
- HDX Insight を使用している場合、HDX Direct を使用すると、セッションが NetScaler Gateway を経由してプロキシされなくなるため、HDX Insight のデータ収集が妨げられることに注意してください。
- HDX Direct で独自の証明書を使用することは現在サポートされていません。
動作原理
HDX Direct を使用すると、直接通信が可能な場合、クライアントはセッションホストへの直接接続を確立できます。HDX Direct を使用して直接接続が行われる場合、自己署名証明書を使用して、ネットワークレベルの暗号化 (TLS/DTLS) で直接接続を保護します。
内部ユーザー
次の図は、内部ユーザーの HDX Direct 接続プロセスの概要を示しています。

- クライアントは Gateway Service を介して HDX セッションを確立します。
- 接続が成功すると、VDA は VDA マシンの FQDN、その IP アドレスのリスト、および VDA マシンの証明書を HDX 接続を介してクライアントに送信します。
- クライアントは IP アドレスをプローブして、VDA に直接到達できるかどうかを確認します。
- 共有された IP アドレスのいずれかを使用してクライアントが VDA に直接到達できる場合、クライアントは VDA と直接接続を確立します。この接続は、手順 (2) で交換された証明書と一致する証明書を使用して (D)TLS で保護されます。
- 直接接続が正常に確立されると、セッションは新しい接続に転送され、Gateway Service への接続は終了します。
注記:
上記の手順 2 で接続が確立された後、セッションはアクティブになります。その後の手順は、ユーザーが仮想アプリケーションまたはデスクトップを使用する能力を遅らせたり、妨げたりすることはありません。その後のいずれかの手順が失敗した場合でも、Gateway を介した接続はユーザーのセッションを中断することなく維持されます。
外部ユーザー
次の図は、外部ユーザーの HDX Direct 接続プロセスの概要を示しています。

- クライアントは Gateway Service を介して HDX セッションを確立します。
- 接続が成功すると、クライアントと VDA の両方が STUN リクエストを送信して、それぞれのパブリック IP アドレスとポートを検出します。
- STUN サーバーは、クライアントと VDA にそれぞれのパブリック IP アドレスとポートで応答します。
- HDX 接続を介して、クライアントと VDA はそれぞれのパブリック IP アドレスと UDP ポートを交換し、VDA はその証明書をクライアントに送信します。
- VDA はクライアントのパブリック IP アドレスと UDP ポートに UDP パケットを送信します。クライアントは VDA のパブリック IP アドレスと UDP ポートに UDP パケットを送信します。
- VDA からメッセージを受信すると、クライアントはセキュアな接続リクエストで応答します。
- DTLS ハンドシェイク中に、クライアントは証明書が手順 4 で交換された証明書と一致することを確認します。検証後、クライアントはその認証トークンを送信します。これでセキュアな直接接続が確立されます。
- 直接接続が正常に確立されると、セッションは新しい接続に転送され、Gateway Service への接続は終了します。
注記:
上記の手順 2 で接続が確立された後、セッションはアクティブになります。その後の手順は、ユーザーが仮想アプリケーションまたはデスクトップを使用する能力を遅らせたり、妨げたりすることはありません。その後のいずれかの手順が失敗した場合でも、Gateway を介した接続はユーザーのセッションを中断することなく維持されます。
NAT 互換性
外部ユーザーデバイスとセッションホスト間の直接接続を確立するために、HDX Direct は NAT トラバーサルのためのホールパンチングと、クライアントデバイスおよびセッションホストのパブリック IP アドレスとポートマッピングの交換を容易にするための STUN を活用します。これは、VoIP、ユニファイドコミュニケーション、および P2P ソリューションの動作と同様です。
ファイアウォールやその他のネットワークコンポーネントが STUN リクエストおよび HDX セッションの UDP トラフィックを許可するように構成されている限り、外部ユーザー向けの HDX Direct は動作すると予想されます。ただし、ユーザーおよびセッションホストネットワークの NAT タイプが互換性のない組み合わせになる特定のシナリオがあり、その結果、HDX Direct が失敗する可能性があります。
検証
STUNTMAN の STUN クライアントユーティリティ を使用して、クライアントとセッションホストの NAT タイプとフィルタリングを検証できます。
- stunprotocol.org からターゲットプラットフォームに適したパッケージをダウンロードし、内容を抽出します。
- ターミナルプロンプトを開き、内容が抽出されたディレクトリに移動します。
- 次のコマンドを実行します。
./stunclient stunserver2024.stunprotocol.org --mode behavior -
出力をメモします。
バインディングテストと動作テストが成功した場合、binding test と behavior test の両方が成功を報告し、NAT 動作が指定されます。

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

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

クライアントとセッションホストの両方のテスト結果に基づいて、外部ユーザー向けの HDX Direct が動作すると予想されるかどうかを判断するには、次の表を参照してください。
| クライアント NAT 動作 | クライアント NAT フィルタリング | セッションホスト NAT 動作 | セッションホスト NAT フィルタリング | 動作が予想されるか? |
|---|---|---|---|---|
| エンドポイント独立マッピング | 任意 | エンドポイント独立マッピング | 任意 | はい |
| エンドポイント独立マッピング | エンドポイント独立フィルタリング | アドレス依存マッピング | 任意 | はい |
| エンドポイント独立マッピング | アドレス依存フィルタリング | アドレス依存マッピング | 任意 | いいえ |
| エンドポイント独立マッピング | アドレスおよびポート依存フィルタリング | アドレス依存マッピング | 任意 | いいえ |
| エンドポイント独立マッピング | エンドポイント独立フィルタリング | アドレスおよびポート依存マッピング | エンドポイント独立フィルタリング | はい |
| エンドポイント独立マッピング | アドレス依存フィルタリング | アドレス依存マッピング | 任意 | いいえ |
| エンドポイント独立マッピング | アドレスおよびポート依存フィルタリング | アドレス依存マッピング | 任意 | いいえ |
| アドレス依存マッピング | 任意 | エンドポイント独立マッピング | エンドポイント独立フィルタリング | はい |
| アドレス依存マッピング | 任意 | エンドポイント独立マッピング | アドレス依存フィルタリング | いいえ |
| アドレス依存マッピング | 任意 | エンドポイント独立マッピング | アドレスおよびポート依存フィルタリング | いいえ |
| アドレス依存マッピング | 任意 | アドレス依存マッピング | 任意 | いいえ |
| アドレス依存マッピング | 任意 | アドレスおよびポート依存マッピング | 任意 | いいえ |
| アドレスおよびポート依存マッピング | 任意 | エンドポイント独立マッピング | エンドポイント独立フィルタリング | はい |
| アドレスおよびポート依存マッピング | 任意 | エンドポイント独立マッピング | アドレス依存フィルタリング | いいえ |
| アドレスとポート依存マッピング | 任意 | エンドポイント独立マッピング | アドレスとポート依存フィルタリング | いいえ |
| アドレスとポート依存マッピング | 任意 | アドレス依存マッピング | 任意 | いいえ |
| アドレスとポート依存マッピング | 任意 | アドレスとポート依存マッピング | 任意 | いいえ |
| 失敗 | 任意 | 任意 | 任意 | いいえ |
| 任意 | 任意 | 失敗 | 任意 | いいえ |
| 失敗 | 任意 | 失敗 | 任意 | いいえ |