虚拟IP和虚拟环回
注意:这些功能仅适用于受支持的Windows服务器计算机。不适用于Windows桌面操作系统计算机。
微软虚拟IP地址功能为每个会话的已发布的应用程序提供动态分配的唯一IP地址。借助Citrix虚拟环回功能,可以将依赖于与localhost(默认为127.0.0.1)通信的应用程序配置为使用localhost范围(127。*)之内的唯一虚拟环回地址。
一些应用程序(例如CRM和计算机电话集成(CTI))将IP地址用于寻址,许可,身份验证或其他目的,因此,这些应用程序在会话中需要使用唯一的IP地址或环回地址。其他应用程序可能绑定到某个静态端口,因此,在多用户环境中尝试启动应用程序的其他实例将失败,因为该端口已在使用中。要使这些应用程序能够在XenApp环境中正常运行,需要为每个设备设置唯一的IP地址。
虚拟IP和虚拟环回是两个独立的功能。可以使用其中一项功能,也可以同时使用两项功能。
管理员操作摘要:
- 要使用微软虚拟IP,请在Windows服务器上启用并配置此功能。(不需要Citrix策略设置)。
- 要使用Citrix虚拟环回,请在Citrix策略中配置两项设置。
虚拟IP
在Windows服务器上启用并配置虚拟IP后,会话中运行的每个已配置应用程序显示为具有唯一的地址。用户可以在XenApp服务器上访问这些应用程序,访问方式与访问任何其他已发布应用程序的方式相同。进程在以下情况下需要虚拟IP:
- 进程使用硬编码的TCP端口号
- 进程使用Windows套接字并需要唯一IP地址或指定的TCP端口号
确定应用程序是否需要使用虚拟IP地址:
- 获得微软提供的TCPView工具。此工具可以列出所有绑定特定IP地址和端口的应用程序。
- 禁用“解析IP地址”功能,这样您看到的将是地址而不是主机名。
- 启动应用程序,然后使用TCPView查看该应用程序打开了哪些IP地址和端口以及哪些进程名称正在打开这些端口。
- 配置任何打开服务器的IP地址(0.0.0.0或127.0.0.1)的进程。
- 为确保应用程序不会在其他端口上打开相同的IP地址,请启动该应用程序的另一实例。
微软远程桌面(RD) IP虚拟化的工作方式
必须在微软服务器上启用虚拟IP地址。
例如,在Windows Server 2008 R2环境中,从服务器管理器,展开“远程桌面服务”>“RD会话主机连接”以启用RD IP虚拟化功能,并配置设置以使用动态主机配置协议(DHCP)服务器基于每个会话或每个程序动态分配IP地址。请参微软阅文档以了解相关说明。
启用此功能后,服务器将在会话启动时从DHCP服务器请求动态分配的IP地址。
RD IP虚拟化功能在每会话或每程序基础上将IP地址分配给远程桌面连接。如果为多个程序分配IP地址,则它们将共享每会话IP地址。
将地址分配给会话后,该会话将在进行以下调用时使用分配的虚拟地址,而不是系统的主IP地址:绑定,closesocket,连接,WSAConnect, WSAAccept, getpeername, getsockname、sendto, WSASendTo, WSASocketW, gethostbyaddr, getnameinfo和getaddrinfo
在“远程桌面”会话托管配置中使用微软知识产权虚拟化功能时,在应用程序和Winsock函数调用之间插入“过滤器”组件,可将该应用程序绑定到特定的IP地址。然后,应用程序只能看到自己应该使用的IP地址。该应用程序对侦听TCP或UDP通信的任何尝试都会自动绑定到其分配的虚拟IP地址(或环回地址),并且该应用程序打开的任何原始连接都源自绑定到该应用程序的IP地址。
在返回地址的函数(如GetAddrInfo(),由Windows策略控制)中,如果请求本地主机IP地址,则虚拟IP将查看返回的IP地址并将其更改为会话的虚拟IP地址。尝试通过此类名称函数获得本地服务器IP地址的应用程序,仅会看到分配给该会话的唯一虚拟IP地址。此IP地址通常用于后续套接字调用,如绑定或连接。
通常,应用程序会请求绑定到一个端口以侦听地址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;这称为环回优先。但是,操作时请注意以下事项:
- 首选环回仅在Windows Server 2008 R2和Windows Server 2012 R2中受支持。
- 仅在同时启用了虚拟IP和虚拟环回的情况下使用环回优先,否则可能会导致意外结果。
- 注册表编辑不当会导致严重问题,可能需要重新安装操作系统。Citrix 无法保证因注册表编辑器使用不当导致出现的问题能够得以解决。使用注册表编辑器需自担风险。在编辑注册表之前,请务必进行备份。
在应用程序所在的服务器运行注册表。
- HKEY_LOCAL_MACHINE \ Wow6432Node \ Citrix \ \软件VIP(对于32位计算机为HKEY_LOCAL_MACHINE \ SOFTWARE \ Citrix \ VIP)
- 名称:PreferLoopback类型:REG_DWORD,数据:1
- 名称:PreferLoopbackProcesses类型:REG_MULTI_SZ,数据:进程列表>