仮想IPおよび仮想ループバック
重要:
-
Windows 10 Enterprise マルチセッションはリモートデスクトップIP仮想化 (仮想IP) をサポートしていません。また、Windows 10 Enterprise マルチセッションではリモートデスクトップ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)
WindowsサーバーでリモートデスクトップIP仮想化が有効になり構成されると、セッションで実行されている構成済みの各アプリケーションは、一意のアドレスを持っているように見えます。ユーザーは、他の公開アプリケーションにアクセスするのと同じ方法で、Citrix Virtual Appsサーバー上のこれらのアプリケーションにアクセスします。プロセスがリモートデスクトップIP仮想化を必要とするのは、次のいずれかのケースです。
-
プロセスがハードコードされたTCPポート番号を使用している
-
プロセスがWindowsソケットを使用しており、一意のIPアドレスまたは指定されたTCPポート番号を必要としている
アプリケーションがリモートデスクトップIP仮想化アドレスを使用する必要があるかどうかを判断するには:
-
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環境では、サーバーマネージャーからリモートデスクトップサービス > RDセッションホスト接続を展開して、RD IP仮想化機能を有効にし、セッションごとまたはプログラムごとに動的ホスト構成プロトコル (DHCP) サーバーを使用してIPアドレスを動的に割り当てる設定を構成します。リモートデスクトップIP仮想化の構成の詳細については、Microsoftのドキュメントを参照してください。
-
この機能を有効にすると、セッションの起動時に、サーバーは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も検索します。特定のRemote Desktop IP Virtualizationアドレスでリッスンするように呼び出しを変更することで、複数のアプリケーションが同じコンピューター上の同じポートでリッスンできるようになります。これは、すべて異なるアドレスでリッスンしているためです。呼び出しは、ICAセッション内であり、Remote Desktop IP Virtualizationアドレス機能が有効になっている場合にのみ変更されます。たとえば、異なるセッションで実行されているアプリケーションの2つのインスタンスが、すべてのインターフェイス(0.0.0.0)と特定のポート(9000など)にバインドしようとすると、それらはVIPAddress1:9000とVIPAddress2:9000にバインドされ、競合は発生しません。
仮想ループバック
「Citrix Remote Desktop IP Virtualizationループバックポリシー」設定を有効にすると、各セッションが通信用に独自のループバックアドレスを持つことができます。アプリケーションが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, データ: \<プロセスのリスト\>