仮想IPおよび仮想ループバック
重要:
-
Windows 10 Enterprise multi-session は Remote Desktop IP Virtualization (Virtual IP) をサポートしていません。また、Windows 10 Enterprise multi-session では Remote Desktop IP Virtualization または仮想ループバックをサポートしていません。
-
Remote Desktop IP Virtualization (Virtual IP) は、クラウドホスト型マシンではサポートされていません。 詳細については、Microsoft のドキュメントを参照してください。
Remote Desktop IP Virtualization および仮想ループバック機能は、Windows Server 2016、Windows Server 2019、および Windows Server 2022 マシンでサポートされています。これらの機能は、Windows デスクトップ OS マシンには適用されません。
Microsoft Remote Desktop IP Virtualization アドレス機能は、公開アプリケーションにセッションごとに一意の動的に割り当てられた IP アドレスを提供します。Citrix 仮想ループバック機能を使用すると、localhost (デフォルトでは 127.0.0.1) との通信に依存するアプリケーションを、localhost 範囲 (127.*) 内の一意の仮想ループバックアドレスを使用するように構成できます。
CRMやCTI(Computer Telephony Integration)などの特定のアプリケーションは、アドレス指定、ライセンス、識別、または一意のIPアドレスやループバックアドレスを必要とするその他の目的でIPアドレスを使用します。他のアプリケーションは静的ポートにバインドする可能性があるため、マルチユーザー環境でアプリケーションの追加インスタンスを起動しようとすると、ポートが使用中であるために失敗します。このようなアプリケーションがCitrix Virtual Apps™環境で正しく機能するには、デバイスごとに一意のIPアドレスが必要です。
Remote Desktop IP Virtualization と仮想ループバックは、互いに独立した機能です。どちらか一方、または両方を使用できます。
管理者アクションの概要:
-
Microsoft Remote Desktop IP Virtualization を使用するには、Windows サーバーでこれを有効にして構成します。(Citrix® ポリシー設定は不要です。)
-
Citrix仮想ループバックを使用するには、Citrixポリシーで2つの設定を構成します。
リモートデスクトップIP仮想化 (仮想IP)
Windows サーバーで Remote Desktop IP Virtualization が有効になり構成されると、セッションで実行されている構成済みの各アプリケーションは、一意のアドレスを持っているように見えます。ユーザーは、Citrix Virtual Apps サーバー上のこれらのアプリケーションに、他の公開アプリケーションと同じ方法でアクセスします。プロセスが Remote Desktop IP Virtualization を必要とするのは、次のいずれかのケースです。
-
プロセスがハードコードされたTCPポート番号を使用している
-
プロセスがWindowsソケットを使用しており、一意のIPアドレスまたは指定されたTCPポート番号を必要としている
アプリケーションが Remote Desktop IP Virtualization アドレスを使用する必要があるかどうかを判断するには:
-
Microsoft から TCPView ツールを入手します。このツールは、特定の IP アドレスとポートをバインドするすべてのアプリケーションを一覧表示します。TCPView の詳細については、Microsoft ドキュメント を参照してください。
-
IP アドレスの解決機能を無効にして、ホスト名ではなくアドレスが表示されるようにします。
-
アプリケーションを起動し、TCPView を使用して、アプリケーションが開いている IP アドレスとポート、およびこれらのポートを開いているプロセス名を確認します。
-
サーバーのIPアドレス、0.0.0.0、または127.0.0.1を開くプロセスを構成します。
-
アプリケーションが異なるポートで同じ IP アドレスを開かないようにするには、アプリケーションの別のインスタンスを起動します。
Microsoft Remote Desktop (RD) IP仮想化の仕組み
-
Microsoftサーバーで仮想IPアドレス指定を有効にする必要があります。たとえば、Windows Server 2016 環境では、サーバーマネージャーから Remote Desktop Services > RD Session Host Connections を展開して、RD IP Virtualization 機能を有効にし、セッションごとまたはプログラムごとに動的ホスト構成プロトコル (DHCP) サーバーを使用して IP アドレスを動的に割り当てる設定を構成します。Remote Desktop IP Virtualization の構成の詳細については、Microsoft ドキュメント を参照してください。
-
機能を有効にすると、セッションの起動時に、サーバーはDHCPサーバーから動的に割り当てられたIPアドレスを要求します。
-
The RD IP Virtualization機能は、リモートデスクトップ接続にセッションごとまたはプログラムごとに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よりも仮想ループバックが優先されるように、以下のレジストリ設定を使用できます。この機能は「優先ループバック」と呼ばれます。ただし、注意して進めてください。
-
優先ループバックは、仮想IPと仮想ループバックの両方が有効になっている場合にのみ使用してください。そうしないと、予期しない結果が生じる可能性があります。
-
レジストリを誤って編集すると、オペレーティングシステムの再インストールが必要になるような深刻な問題が発生する可能性があります。Citrixは、レジストリエディターの誤った使用によって生じる問題が解決できることを保証できません。レジストリエディターは自己責任で使用してください。編集する前に必ずレジストリをバックアップしてください。
アプリケーションが常駐するサーバーでregeditを実行します。
-
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\VIP -
名前: PreferLoopback, 種類: REG\_DWORD, データ: 1
-
名前: PreferLoopbackProcesses, 種類: REG\_MULTI\_SZ, データ: \<プロセスのリスト\>