Product Documentation

仮想IPおよび仮想ループバック

Mar 25, 2016
注:これらの機能は、Windows Server 2008 R2マシンおよびWindows Server 2012 R2マシンでのみ有効です。 WindowsデスクトップOSマシンでは使用できません。

Microsoft社の仮想IPアドレス機能により、セッションごとに動的に割り当てられるIPアドレスを公開アプリケーションで使用できます。 Citrixの仮想ループバック機能を使用すると、ローカルホスト(デフォルトで127.0.0.1)と通信するアプリケーションで、ローカルホストの範囲内(127.*)で固有の仮想ループバックアドレスが使用されるように構成できます。

CRM(Customer Relationship Management)やCTI(Computer Telephony Integration)などの特定のアプリケーションでは、アドレス割り当て、ライセンス付与、識別、またはそのほかの目的でIPアドレスが使用されるため、セッションに固有のIPアドレスまたはループバックアドレスが必要です。 また、一部のアプリケーションでは静的なポートにバインドされるため、マルチユーザー環境でそのアプリケーションの追加インスタンスを起動しようとすると、そのポートが使用済みなので起動に失敗します。 これらのアプリケーションがXenApp環境で正しく動作するためには、クライアントデバイスごとに異なるIPアドレスが使用される必要があります。

仮想IPと仮想ループバックは、それぞれ独立した機能です。 これらの機能のいずれかまたは両方を使用できます。

使用する機能に応じて、管理者は以下の操作を行います。
  • Microsoft社の仮想IP機能を使用するには、Windowsサーバー上で仮想IPを有効にして構成します。
  • Citrixの仮想ループバック機能を使用するには、Citrixポリシーで2つの設定項目を構成します。

仮想IP

Windowsサーバー上で仮想IP機能を有効にすると、セッション内で動作する各アプリケーションで固有のアドレスが使用されるように構成できます。 ユーザーは、これらのアプリケーションを、ほかの公開アプリケーションと同じように使用することができます。 以下のいずれかの動作をするプロセスでは、仮想IPアドレスを設定します。
  • ハードコードされた(固定された)TCPポート番号を使用する。
  • Windowsソケットを使用し、固有のIPアドレスまたは固定されたTCPポート番号を使用する。
アプリケーションで仮想IPアドレスが必要かどうかを判断するには、次の手順に従います。
  1. Microsoft社のWebサイトから、TCPViewツールを入手します。 このツールを使用すると、特定のIPアドレスおよびポートを使用しているすべてのアプリケーションを一覧表示できます。
  2. TCPViewの[Options]メニューで、[Resolve Addresses]を無効にします。これにより、一覧にホスト名ではなくアドレスが表示されるようになります。
  3. 対象となるアプリケーションを起動して、使用されているIPアドレスとポート、およびそれらのポートを開いているプロセスの名前をTCPViewで確認します。
  4. サーバーのIPアドレス0.0.0.0または127.0.0.1を使用するプロセスを構成します。
  5. そのアプリケーションの追加インスタンスを起動して、別のポート上で同じIPアドレスが使用されないことを確認します。
Microsoftリモートデスクトップ(RD)のIP仮想化機能のしくみ
  • 仮想IPアドレスを使用するには、Windowsサーバー上でこの機能を有効にする必要があります。

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

  • この機能を有効にすると、セッション起動時にサーバーは、DHCPサーバーから動的に割り当てられたIPアドレスを要求します。
  • RD IP仮想化機能によって、セッションごとまたはプログラムごとに、リモートデスクトップ接続にIPアドレスが割り当てられます。 複数のプログラムにIPアドレスを割り当てる場合、これらのプログラム間でセッションごとのIPアドレスが共有されます。
  • アドレスが割り当てられたセッションでは、bind、closesocket、connect、WSAConnect、WSAAccept、getpeername、getsockname、sendto、WSASendTo、WSASocketW、gethostbyaddr、getnameinfo、getaddrinfoの各コールに対して、システムのプライマリIPアドレスではなく仮想アドレスが使用されます。

リモートデスクトップセッションのホスト環境でMicrosoftのIP仮想化機能を使用すると、アプリケーションとWinsockコールとの間に「フィルター」コンポーネントを挿入することで、アプリケーションと特定のIPアドレスがバインドされます。 IPアドレスがバインドされると、アプリケーションはそのアドレスだけで要求を待ち受けるようになります。 アプリケーションのTCPリスナーまたはUDPリスナーは自動的に仮想IPアドレス(または仮想ループバックアドレス)にバインドされ、アプリケーションからの接続はその仮想アドレスから開かれます。

Windowsポリシーにより制御されるGetAddrInfo()など、アドレスを返すファンクションでローカルホストIPアドレスが要求されると、返されたIPアドレスがそのセッションの仮想IPアドレスに変換されます。 このようなファンクションでローカルサーバーのIPアドレスを取得しようとするアプリケーションには、セッション固有の仮想IPアドレスだけが渡されます。 このようにしてアプリケーションに渡されたIPアドレスは、後続のソケットコール(bindやconnectなど)で使用されます。

アプリケーションでは、アドレス0.0.0.0で、リスナー用のポートのバインドが必要になる場合があります。 このようなアプリケーションで静的なポート番号が使用されると、競合が発生するため、複数のインスタンスを起動できなくなります。 仮想IPアドレス機能では、0.0.0.0へのファンクションコールが特定の仮想IPアドレスに変換されます。これにより、セッションごとに異なるアドレス上のポートが使用されるため、同じポート番号を使用する複数のアプリケーションを実行できるようになります。 このファンクションコールは、仮想IPアドレス機能が有効なICAセッションでのみ変換されます。 たとえば、すべてのインターフェイス(0.0.0.0)と特定のポート(9000など)にバインドするアプリケーションの2つのインスタンスが、それぞれ異なるセッションで実行される場合、VIPAddress1:9000とVIPAddress2:9000にバインドされるため、競合が起きません。

仮想ループバック

Citrixポリシーで仮想IPループバック機能を有効にすると、各セッションで通信に独自のループバックアドレスが使用されるようになります。 アプリケーションがWinsockコールでローカルホストのアドレス(デフォルトで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に依存しないため、Windowsサーバーの構成は不要です。
  • 仮想IPループバックサポート: このポリシー設定を有効にすると、各セッション固有の仮想ループバックアドレスが使用されるようになります。 このチェックボックスは、デフォルトでオフになっています。 この機能は、[仮想IPループバックプログラム一覧]ポリシー設定で指定したアプリケーションにのみ適用されます。
  • 仮想IPループバックプログラム一覧: このポリシー設定では、仮想IPループバック機能を使用するアプリケーションを指定します。 この設定は、[仮想IPループバックサポート]ポリシー設定が有効になっている場合のみ適用されます。

関連機能

次のレジストリ設定により、仮想ループバックが仮想IPよりも優先されるようになります(優先ループバック機能)。 ただし、以下の点に注意してください。
  • 優先ループバックはWindows 2008 R2でのみサポートされます。
  • 仮想IPアドレスと仮想ループバックの両方の機能を有効にする場合にのみ、優先ループバック機能を使用してください。そうしないと、意図しない結果が生じる可能性があります。
  • レジストリエディターの使用を誤ると、深刻な問題が発生する可能性があり、Windowsの再インストールが必要になる場合もあります。 レジストリエディターの誤用による障害に対して、Citrixでは一切責任を負いません。 レジストリエディターは、お客様の責任と判断の範囲でご使用ください。 また、レジストリファイルのバックアップを作成してから、レジストリを編集してください。
アプリケーションのホストサーバー上で、regeditを実行します。
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\VIP(32ビットマシンではHKEY_LOCAL_MACHINE\SOFTWARE\Citrix\VIP)
  • 値の名前:PreferLoopback、種類:REG_DWORD、値のデータ:1
  • 値の名前:PreferLoopbackProcesses、種類:REG_MULTI_SZ、値のデータ:<list of processes>。ここで、はプロセスの一覧です。