XenApp and XenDesktop

虚拟 IP 和虚拟环回

注意:这些功能仅适用于受支持的 Windows 服务器计算机。它们不适用于 Windows 桌面操作系统计算机。

Microsoft 虚拟 IP 地址功能为每个会话的已发布应用程序提供唯一的动态分配 IP 地址。Citrix 虚拟环回功能允许您配置依赖于与 localhost(默认为 127.0.0.1)通信的应用程序,以使用 localhost 范围 (127.*) 内的唯一虚拟环回地址。

某些应用程序,例如 CRM 和计算机电话集成 (CTI),使用 IP 地址进行寻址、许可、身份识别或其他目的,因此需要在会话中提供唯一的 IP 地址或环回地址。其他应用程序可能会绑定到静态端口,因此在多用户环境中启动应用程序的额外实例的尝试将失败,因为该端口已被占用。为了使此类应用程序在 XenApp® 环境中正常运行,每个设备都需要一个唯一的 IP 地址。

虚拟 IP 和虚拟环回是独立的功能。您可以单独使用其中一个,也可以同时使用两者。

管理员操作概要:

  • 要使用 Microsoft 虚拟 IP,请在 Windows 服务器上启用并配置它。(不需要 Citrix® 策略设置。)
  • 要使用 Citrix 虚拟环回,请在 Citrix 策略中配置两项设置。

虚拟 IP

当在 Windows 服务器上启用并配置虚拟 IP 时,在会话中运行的每个已配置应用程序都将显示为具有唯一的地址。用户访问 XenApp 服务器上的这些应用程序的方式与访问任何其他已发布应用程序的方式相同。在以下任一情况下,进程都需要虚拟 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 2008 R2 环境中,从“服务器管理器”中展开“远程桌面服务”>“RD 会话主机连接”,以启用 RD IP 虚拟化功能并配置设置,以便使用动态主机配置协议 (DHCP) 服务器按会话或按程序动态分配 IP 地址。有关说明,请参阅 Microsoft 文档。

  • 启用该功能后,在会话启动时,服务器会从 DHCP 服务器请求动态分配的 IP 地址。

  • RD IP 虚拟化功能按会话或按程序为远程桌面连接分配 IP 地址。如果您为多个程序分配 IP 地址,它们将共享一个按会话分配的 IP 地址。

  • After an address is assigned to a session, the session uses the virtual address rather than the primary IP address for the system whenever the following calls are made: 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。

通常,应用程序会请求绑定到端口以侦听地址 0.0.0.0。当应用程序执行此操作并使用静态端口时,您无法启动该应用程序的多个实例。虚拟 IP 地址功能还会在此类调用类型中查找 0.0.0.0,并将调用更改为侦听特定的虚拟 IP 地址,这使得多个应用程序可以在同一台计算机上的同一端口上侦听,因为它们都在侦听不同的地址。仅当它处于 ICA 会话中且启用了虚拟 IP 地址功能时,才会更改调用。例如,如果应用程序的两个实例在不同的会话中运行,都尝试绑定到所有接口 (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 超过第四个八位字节(大于 255)的极少数情况下,地址会滚动到下一个八位字节 (127.0.1.0),最大值为 127.255.255.255。

在以下任一情况下,进程都需要虚拟环回:

  • 进程使用 Windows 套接字回送(localhost)地址 (127.0.0.1)
  • 进程使用硬编码的 TCP 端口号

对于使用回送地址进行进程间通信的应用程序,请使用虚拟回送策略设置。无需进行额外配置。虚拟回送不依赖于虚拟 IP,因此您无需配置 Microsoft 服务器。

  • 虚拟 IP 回送支持。启用后,此策略设置允许每个会话拥有自己的虚拟回送地址。此设置默认禁用。此功能仅适用于通过“虚拟 IP 虚拟回送程序列表”策略设置指定的应用程序。
  • 虚拟 IP 虚拟回送程序列表。此策略设置指定使用虚拟 IP 回送功能的应用程序。此设置仅在启用“虚拟 IP 回送支持”策略设置时适用。

相关功能

您可以使用以下注册表设置来确保虚拟回送优先于虚拟 IP;这称为首选回送。但是,请谨慎操作:

  • Preferred loopback is supported only on Windows Server 2008 R2 and Windows Server 2012 R2.
  • 仅当同时启用虚拟 IP 和虚拟回送时才使用首选回送;否则,可能会出现意外结果。
  • 不正确地编辑注册表可能会导致严重问题,甚至可能需要重新安装操作系统。Citrix 无法保证可以解决因不正确使用注册表编辑器而导致的问题。请自行承担使用注册表编辑器的风险。在编辑注册表之前,请务必备份注册表。

在应用程序所在的服务器上运行 regedit。

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\VIP (HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\VIP for 32-bit machines)
  • Name: PreferLoopback, Type: REG_DWORD, Data: 1
  • Name: PreferLoopbackProcesses, Type: REG_MULTI_SZ, Data: <list of processes>
虚拟 IP 和虚拟环回