IP virtual y bucle invertido virtual
Importante:
La multisesión de Windows 10 Enterprise no admite virtualización de IP de Escritorio remoto (IP virtual) y nosotros no admitimos IP virtual ni bucle invertido virtual en multisesión con Windows 10 Enterprise.
Las funciones de IP virtual y bucle invertido virtual se admiten en máquinas con Windows Server 2016. Sin embargo, no se aplican a las máquinas con SO de escritorio Windows.
La función de dirección IP virtual de Microsoft proporciona una dirección IP exclusiva a una aplicación publicada, asignada dinámicamente para cada sesión. La función de bucle invertido virtual de Citrix permite configurar aplicaciones que dependen de la comunicación con el host local (127.0.0.1 de forma predeterminada) para utilizar una dirección de bucle invertido virtual exclusiva en el rango del host local (127.*).
Algunas aplicaciones, como CRM y Computer Telephony Integration (CTI), utilizan una dirección IP para el direccionamiento, las licencias, la identificación y otros fines, lo que requiere una dirección IP exclusiva o una dirección de bucle invertido. Otras aplicaciones pueden enlazar con un puerto estático, por lo que, al intentar iniciar instancias adicionales de una aplicación en un entorno multiusuario, se produce un error porque el puerto ya está en uso. Para que estas aplicaciones funcionen correctamente en un entorno Citrix Virtual Apps, se necesita una dirección IP exclusiva para cada dispositivo.
Las funciones de IP virtual y bucle invertido virtual son funciones independientes. Puede usar solo una de ellas o ambas.
Sinopsis de acciones de administrador:
- Para utilizar la dirección IP virtual de Microsoft, habilite y configure esta función en el servidor Windows. (No se necesitan configuraciones de directivas de Citrix).
- Para usar el bucle virtual de Citrix, configure dos parámetros en una directiva de Citrix.
IP virtual
Cuando la función IP virtual está habilitada y configurada en el servidor Windows, cada una de las aplicaciones configuradas que se ejecutan en una sesión parece tener una dirección exclusiva. Los usuarios acceden a dichas aplicaciones en un servidor de Citrix Virtual Apps del mismo modo que acceden a cualquier otra aplicación publicada. Un proceso requiere IP virtual en cualquiera de los siguientes casos:
- El proceso utiliza un número de puerto TCP integrado en el código.
- El proceso utiliza Windows Sockets y requiere una dirección IP exclusiva o un número de puerto TCP específico.
Para determinar si una aplicación necesita utilizar direcciones IP virtuales:
- Obtenga la herramienta TCPView de Microsoft. Esta herramienta muestra todas las aplicaciones que enlazan puertos y direcciones IP específicas.
- Inhabilite la función de resolución de direcciones IP de forma que vea las direcciones en lugar de los nombres de host.
- Ejecute la aplicación y con ayuda de TCPView consulte qué direcciones IP y puertos abre la aplicación y qué nombres de proceso abren estos puertos.
- Configure los procesos que abren la dirección IP del servidor, 0.0.0.0 ó 127.0.0.1.
- Para asegurarse de que la aplicación no abre la misma dirección IP en otro puerto, ejecute otra instancia de la aplicación.
Funcionamiento de la virtualización de IP de Escritorio remoto (RD) de Microsoft
-
El uso de direcciones IP virtuales debe estar habilitado en el servidor de Microsoft.
Por ejemplo, en un entorno de Windows Server 2016, desde el Administrador del servidor, expanda Servicios de Escritorio remoto > Conexiones de host de sesión de Escritorio remoto para activar la función Virtualización de IP de Escritorio remoto y configure los parámetros para asignar direcciones IP dinámicamente mediante el servidor DHCP (Dynamic Host Configuration Protocol) para cada sesión o cada programa. Consulte la documentación de Microsoft para obtener instrucciones.
-
Después de habilitar la función, al comenzar una sesión, el servidor solicita al servidor DHCP las direcciones IP asignadas dinámicamente.
-
La función de Virtualización de IP de Escritorio remoto asigna direcciones IP a las conexiones a escritorios remotos por sesión y por programa. Si se asignan direcciones IP para varios programas, éstos comparten una dirección IP por sesión.
-
Después de asignar una dirección a una sesión, la sesión utiliza la dirección virtual en lugar de la dirección IP principal del sistema, siempre que se efectúan las siguientes llamadas:
bind¸closesocket¸connect
,WSAConnect
,WSAAccept
,getpeername
,getsockname
,sendto
,WSASendTo
,WSASocketW
,gethostbyaddr
,getnameinfo
,getaddrinfo
.
Con la función de virtualización de IP de Microsoft en la configuración de host de sesiones de Escritorio remoto, las aplicaciones se vinculan con direcciones IP específicas mediante la introducción de un componente de “filtro” entre la aplicación y las llamadas de función de Winsock. La aplicación solo ve entonces la dirección IP que debe usar. Cualquier intento de la aplicación de escuchar comunicaciones TCP o UDP se vincula inmediatamente a su dirección IP virtual asignada (o dirección de bucle invertido). Todas las conexiones de origen abiertas por la aplicación se originan desde la dirección IP vinculada a la aplicación.
En funciones que devuelven una dirección, tales como GetAddrInfo()
(que está controlada por una directiva de Windows), si se solicita la dirección IP local del host, la IP virtual examina la dirección IP devuelta y la cambia a la dirección IP virtual de la sesión. Las aplicaciones que intentan obtener la dirección IP del servidor local a través de dichas funciones de nombre solo ven la dirección IP virtual exclusiva asignada a dicha sesión. Esta dirección IP se utiliza con frecuencia en las posteriores llamadas de socket (tales como bind o connect). Para obtener más información acerca de las directivas de Windows, consulte RDS IP Virtualization in Windows Server.
A menudo una aplicación solicita vincularse a un puerto para escuchar en la dirección 0.0.0.0. En ese caso, si además la aplicación utiliza un puerto estático, no podrá ejecutar más de una instancia de la aplicación. La función de dirección IP virtual también busca 0.0.0.0 en estos tipos de llamada y cambia la llamada para escuchar en la dirección IP virtual específica, lo que permite que varias aplicaciones puedan escuchar en el mismo puerto en el mismo equipo, puesto que todas escuchan en diferentes direcciones. La llamada solo se cambia si se está en una sesión ICA y la función de dirección IP virtual está habilitada. Por ejemplo, si dos instancias de una aplicación que se ejecutan en distintas sesiones intentan vincularse a todas las interfaces (0.0.0.0) y un puerto específico, por ejemplo, el 9000, se vinculan a VIPAddress1:9000 y VIPAddress2:9000, por lo que no existen conflictos.
Bucle invertido virtual
La habilitación de la configuración de directiva de Bucle invertido de IP virtual de Citrix permite que cada sesión disponga de su propia dirección de bucle invertido para las comunicaciones. Cuando una aplicación usa la dirección de host local (predeterminada = 127.0.0.1) en una llamada de Winsock, la función de bucle invertido virtual sencillamente sustituye 127.0.0.1 por 127.X.X.X, donde X.X.X es una representación del ID de sesión + 1. Por ejemplo, un ID de sesión de 7 es 127.0.0.8. En el caso improbable de que un ID de sesión fuera superior al cuarto octeto (más de 255), la dirección pasaría al octeto siguiente (127.0.1.0) hasta el máximo de 127.255.255.255.
Un proceso requiere el bucle invertido virtual en los siguientes casos:
- El proceso usa la dirección de bucle invertido de Windows Sockets del host local (127.0.0.1)
- El proceso utiliza un número de puerto TCP integrado en el código.
Use las configuraciones de directiva de bucle invertido virtual para aplicaciones que usan una dirección de bucle invertido para la comunicación entre procesos. No se requiere ninguna configuración adicional. La función de bucle invertido virtual no depende de la dirección IP virtual, de modo que no es necesario configurar el servidor de Microsoft.
- Funcionalidad de bucle invertido de IP virtual. Cuando está habilitada, esta configuración de directiva permite que cada sesión tenga su propia dirección virtual de bucle invertido. Este parámetro está inhabilitado de forma predeterminada. La función solo se aplica a las aplicaciones especificadas en la configuración de directiva lista de programas para bucle invertido de IP virtual.
- Lista de programas para bucle invertido de IP virtual. Esta configuración de directiva especifica las aplicaciones que usan la función de bucle invertido de IP virtual. Esta configuración solo se aplica cuando está habilitada la configuración de directiva Funcionalidad de bucle invertido de IP virtual.
Funciones relacionadas
Se pueden usar los siguientes parámetros del Registro del sistema para garantizar que se da preferencia al bucle invertido sobre la IP virtual. Esta funcionalidad se denomina bucle invertido preferido. Sin embargo, hay que actuar con precaución:
- Utilice el bucle invertido preferido solo cuando tanto IP virtual como Bucle invertido virtual están habilitados. De lo contrario, podría obtener resultados imprevistos.
- Si se modifica el Registro de forma incorrecta, pueden producirse problemas graves que obliguen a reinstalar el sistema operativo. Citrix no puede garantizar que los problemas derivados de la utilización inadecuada del Editor del Registro puedan resolverse. Use el Editor del Registro bajo su propia responsabilidad. Haga una copia de seguridad del Registro antes de modificarlo.
Ejecute regedit en los servidores donde residen las aplicaciones.
- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\VIP
- Nombre: PreferLoopback, Tipo: REG_DWORD, Datos: 1
- Nombre: PreferLoopbackProcesses, Tipo: REG_MULTI_SZ, Datos: <lista de procesos>