Citrix DaaS™

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

重要:

Windows 10 Enterprise マルチセッションはリモートデスクトップIP仮想化 (仮想IP) をサポートしておらず、Windows 10 Enterprise マルチセッションでは仮想IPも仮想ループバックもサポートしていません。

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

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

  • アプリケーションが仮想IPアドレスを使用する必要があるかどうかの判断:
  1. MicrosoftからTCPViewツールを入手します。このツールは、特定のIPアドレスとポートにバインドするすべてのアプリケーションを一覧表示します。
  2. [IPアドレスの解決] 機能を無効にして、ホスト名ではなくアドレスが表示されるようにします。
  3. アプリケーションを起動し、TCPViewを使用して、アプリケーションによってどのIPアドレスとポートが開かれているか、およびどのプロセス名がこれらのポートを開いているかを確認します。
  4. サーバーのIPアドレス、0.0.0.0、または127.0.0.1を開くプロセスを構成します。
  5. アプリケーションが異なるポートで同じIPアドレスを開かないようにするには、アプリケーションの追加インスタンスを起動します。

Microsoftリモートデスクトップ (RD) IP仮想化の仕組み

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

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

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

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

  • アドレスがセッションに割り当てられると、次の呼び出しが行われるたびに、システムプライマリIPアドレスではなく仮想アドレスを使用します: bind¸closesocket¸connectWSAConnectWSAAcceptgetpeernamegetsocknamesendtoWSASendToWSASocketWgethostbyaddrgetnameinfogetaddrinfo

リモートデスクトップセッションホスティング構成内で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仮想IPループバックポリシー設定を有効にすると、各セッションが通信用の一意のループバックアドレスを持つことができます。アプリケーションが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
  • 名前: PreferLoopback, 種類: REG_DWORD, データ: 1
  • 名前: PreferLoopbackProcesses, 種類: REG_MULTI_SZ, データ: <プロセスリスト>
仮想IPと仮想ループバック

この記事の概要