Citrix Virtual Apps and Desktops 7 2402 LTSR

仮想IPと仮想ループバック

重要:

  • Windows 10 Enterprise multi-session はリモートデスクトップIP仮想化 (仮想IP) をサポートしていません。また、Windows 10 Enterprise multi-session 上でのリモートデスクトップIP仮想化または仮想ループバックもサポートしていません。
  • リモートデスクトップIP仮想化 (仮想IP) は、クラウドホスト型マシンではサポートされていません。 詳細については、Microsoft ドキュメントを参照してください。

リモートデスクトップIP仮想化および仮想ループバック機能は、Windows Server 2016、Windows Server 2019、およびWindows Server 2022マシンでサポートされています。これらの機能は、WindowsデスクトップOSマシンには適用されません。

Microsoft リモートデスクトップIP仮想化アドレス機能は、公開されたアプリケーションにセッションごとに一意の動的に割り当てられたIPアドレスを提供します。Citrix 仮想ループバック機能を使用すると、localhost (デフォルトでは127.0.0.1) との通信に依存するアプリケーションを、localhost範囲 (127.*) 内の一意の仮想ループバックアドレスを使用するように構成できます。

CRMやCTI (Computer Telephony Integration) など、一部のアプリケーションは、アドレス指定、ライセンス、識別、または一意のIPアドレスやループバックアドレスを必要とするその他の目的でIPアドレスを使用します。他のアプリケーションは静的ポートにバインドする可能性があり、その場合、ポートが使用中であるため、マルチユーザー環境でアプリケーションの追加インスタンスを起動しようとすると失敗します。このようなアプリケーションがCitrix Virtual Apps™環境で正しく機能するには、デバイスごとに一意のIPアドレスが必要です。

リモートデスクトップIP仮想化と仮想ループバックは、互いに独立した機能です。どちらか一方、または両方を使用できます。

管理者の操作概要:

  • Microsoft リモートデスクトップIP仮想化を使用するには、Windowsサーバーで有効にして構成します。(Citrix® ポリシー設定は不要です。)
  • Citrix 仮想ループバックを使用するには、Citrix ポリシーで2つの設定を構成します。

リモートデスクトップIP仮想化 (仮想IP)

リモートデスクトップIP仮想化がWindowsサーバーで有効化および構成されている場合、セッションで実行されている構成済みの各アプリケーションは、一意のアドレスを持っているように見えます。ユーザーは、他の公開アプリケーションにアクセスするのと同じ方法で、Citrix Virtual Appsサーバー上のこれらのアプリケーションにアクセスします。プロセスがリモートデスクトップIP仮想化を必要とするのは、次のいずれかのケースです。

  • プロセスがハードコードされたTCPポート番号を使用している場合
  • プロセスがWindowsソケットを使用し、一意のIPアドレスまたは指定されたTCPポート番号を必要とする場合

アプリケーションがリモートデスクトップIP仮想化アドレスを使用する必要があるかどうかを判断するには、次の手順を実行します。

  1. MicrosoftからTCPViewツールを入手します。このツールは、特定のIPアドレスとポートをバインドするすべてのアプリケーションを一覧表示します。TCPViewの詳細については、Microsoft documentationを参照してください。
  2. IPアドレスの解決機能を無効にして、ホスト名ではなくアドレスが表示されるようにします。
  3. アプリケーションを起動し、TCPViewを使用して、アプリケーションが開いているIPアドレスとポート、およびこれらのポートを開いているプロセス名を確認します。
  4. サーバーのIPアドレス、0.0.0.0、または127.0.0.1を開くプロセスを構成します。
  5. アプリケーションが異なるポートで同じIPアドレスを開かないようにするには、アプリケーションの別のインスタンスを起動します。

マイクロソフト リモート デスクトップ (RD) IP仮想化の仕組み

  • 仮想IPアドレス指定はMicrosoftサーバーで有効にする必要があります。

    たとえば、Windows Server 2016環境では、サーバーマネージャーからRemote Desktop Services > RD Session Host Connectionsを展開して、RD IP仮想化機能を有効にし、セッションごとまたはプログラムごとに動的ホスト構成プロトコル (DHCP) サーバーを使用してIPアドレスを動的に割り当てる設定を構成します。リモートデスクトップIP仮想化の構成の詳細については、Microsoft documentationを参照してください。

  • 機能を有効にした後、セッションの開始時に、サーバーはDHCPサーバーから動的に割り当てられたIPアドレスを要求します。

  • RD IP仮想化機能は、リモートデスクトップ接続にセッションごとまたはプログラムごとにIPアドレスを割り当てます。複数のプログラムにIPアドレスを割り当てる場合、それらはセッションごとのIPアドレスを共有します。

  • アドレスがセッションに割り当てられた後、次の呼び出しが行われるたびに、セッションはシステムのプライマリIPアドレスではなく仮想アドレスを使用します: bind¸closesocket¸connect, WSAConnect, WSAAccept, getpeername, getsockname, sendto, WSASendTo, WSASocketW, gethostbyaddr, getnameinfo, getaddrinfo

リモートデスクトップセッションホスティング構成内でMicrosoft IP仮想化機能を使用する場合、アプリケーションとWinsock関数呼び出しの間に「フィルター」コンポーネントを挿入することで、アプリケーションは特定のIPアドレスにバインドされます。これにより、アプリケーションは使用すべき正しいIPアドレスのみを認識します。アプリケーションがTCPまたはUDP通信をリッスンしようとすると、自動的に割り当てられた仮想IPアドレス(またはループバックアドレス)にバインドされます。アプリケーションによって開かれた発信接続は、アプリケーションにバインドされたIPアドレスから発信されます。

アドレスを返す関数(Windowsポリシーが制御するGetAddrInfo()など)では、ローカルホストIPアドレスが要求された場合、リモートデスクトップIP仮想化は返されたIPアドレスを調べ、それをセッションのリモートデスクトップIP仮想化アドレスに変更します。このような名前関数を介してローカルサーバーのIPアドレスを取得しようとするアプリケーションは、そのセッションに割り当てられた一意のリモートデスクトップIP仮想化アドレスのみを認識します。このIPアドレスは、bindやconnectなどの後続のソケット呼び出しでよく使用されます。Windowsポリシーの詳細については、RDS IP Virtualization in Windows Serverを参照してください。

多くの場合、アプリケーションはアドレス0.0.0.0でリッスンするためにポートへのバインドを要求します。アプリケーションがこれを行い、静的ポートを使用する場合、アプリケーションの複数のインスタンスを起動することはできません。リモートデスクトップIP仮想化アドレス機能は、これらの呼び出しタイプで0.0.0.0も検索します。これにより、呼び出しが特定のリモートデスクトップIP仮想化アドレスでリッスンするように変更され、複数のアプリケーションが同じコンピューター上の同じポートでリッスンできるようになります。これは、すべて異なるアドレスでリッスンしているためです。呼び出しは、ICAセッション内であり、リモートデスクトップIP仮想化アドレス機能が有効になっている場合にのみ変更されます。たとえば、異なるセッションで実行されているアプリケーションの2つのインスタンスが両方ともすべてのインターフェイス(0.0.0.0)と特定のポート(9000など)にバインドしようとすると、それらはVIPAddress1:9000とVIPAddress2:9000にバインドされ、競合は発生しません。

仮想ループバック

Citrix Remote Desktop IP Virtualization loopback policy 設定を有効にすると、各セッションが通信用に独自のループバックアドレスを持つことができます。アプリケーションが Winsock 呼び出しで localhost アドレス (デフォルト = 127.0.0.1) を使用する場合、仮想ループバック機能は 127.0.0.1 を 127.X.X.X に置き換えます。ここで、X.X.X はセッション ID + 1 を表します。たとえば、セッション ID が 7 の場合、127.0.0.8 となります。セッション ID が第 4 オクテット (255 を超える) を超えるという万が一の事態が発生した場合、アドレスは次のオクテット (127.0.1.0) に繰り上がり、最大 127.255.255.255 となります。

プロセスが仮想ループバックを必要とするのは、次のいずれかのケースです。

  • プロセスが Windows ソケットループバック (localhost) アドレス (127.0.0.1) を使用している場合
  • プロセスがハードコードされた TCP ポート番号を使用している場合

プロセス間通信にループバックアドレスを使用するアプリケーションには、仮想ループバックポリシー設定 を使用します。追加の設定は不要です。仮想ループバックは仮想 IP に依存しないため、Microsoft サーバーを設定する必要はありません。

  • 仮想 IP ループバックサポート。このポリシー設定を有効にすると、各セッションが独自の仮想ループバックアドレスを持つことができます。この設定はデフォルトで無効になっています。この機能は、仮想 IP 仮想ループバックプログラムリストポリシー設定で指定されたアプリケーションにのみ適用されます。
  • 仮想 IP 仮想ループバックプログラムリスト。このポリシー設定は、仮想 IP ループバック機能を使用するアプリケーションを指定します。この設定は、仮想 IP ループバックサポートポリシー設定が有効になっている場合にのみ適用されます。

関連機能

仮想ループバックが仮想 IP よりも優先されるようにするには、次のレジストリ設定を使用できます。この機能は「優先ループバック」と呼ばれます。ただし、注意して進めてください。

  • 仮想 IP と仮想ループバックの両方が有効になっている場合にのみ、優先ループバックを使用してください。そうしないと、意図しない結果が生じる可能性があります。
  • レジストリを誤って編集すると、オペレーティングシステムの再インストールが必要になるような深刻な問題が発生する可能性があります。Citrix は、レジストリエディターの誤った使用によって生じる問題が解決できることを保証できません。レジストリエディターは自己責任で使用してください。編集する前に必ずレジストリをバックアップしてください。

アプリケーションが常駐するサーバーで regedit を実行します。

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\VIP
  • Name: PreferLoopback, Type: REG_DWORD, Data: 1
  • Name: PreferLoopbackProcesses, Type: REG_MULTI_SZ, Data: <list of processes>
仮想IPと仮想ループバック