Introducción
Este documento describe la utilización de aplicaciones VPN integradas en la plataforma universal de Windows (UWP) de Microsoft. Estas aplicaciones suelen aparecer como aplicaciones en la GUI moderna o metropolitana de Windows 8 o superior. Las aplicaciones de escritorio y los programas de estilo Windows tradicionales no utilizan el UWP y no se ven afectados.
Si está viendo problemas con la VPN de Windows sin estilo de aplicación o siempre en VPN, vea nuestra nota sobre VPN de Windows en Umbrella Roaming Client: Guía de compatibilidad para software y VPN .
El módulo de roaming de AnyConnect Umbrella no produce el mismo problema de interoperabilidad.
Impacto
Cuando el cliente de itinerancia está activo, los usuarios de la aplicación VPN UWP reciben un mensaje de error "No se conoce tal host" o similar al intentar iniciar una sesión VPN. Esto impide que el usuario se conecte correctamente a la VPN. Este error no aparece si se detiene el cliente de roaming o si se utiliza la edición de escritorio del cliente VPN.
Por ejemplo, no funcionan:
- Aplicación segura Pulse + cliente de roaming
- SonicWall MobileConnect + cliente de roaming
Para estos, la conexión al mismo terminal VPN funciona:
- Aplicación de escritorio Pulse Secure + cliente de roaming
- Aplicación SonicWall NetExtender o SonicWall Desktop + cliente de roaming
- Módulo de roaming Pulse Secure App + AnyConnect Umbrella*
- Módulo de roaming SonicWall MobileConnect + AnyConnect Umbrella*
*El módulo AnyConnect Umbrella no establece 127.0.0.1 (otra interfaz) como la configuración de DNS, sino que redirige DNS a 127.0.0.1 mediante un controlador de núcleo. Las aplicaciones UWP no son conscientes de que están utilizando un adaptador diferente para DNS y no se ven afectadas en este momento.
Causa raíz
Por diseño, Microsoft construyó aplicaciones "modernas" en Windows 8+ para ser más sandboxing. Una de estas limitaciones se aplica a las aplicaciones VPN. Las VPN integradas en el UWP (aplicaciones) están restringidas para utilizar la interfaz que genera la consulta. Dado que el cliente de roaming de Umbrella está escuchando en 127.0.0.1 - una interfaz diferente l0 - la consulta, por lo tanto, nunca llega al cliente de roaming (o cualquier otro reenvío de DNS se ejecuta en 127.0.0.1).
La siguiente llamada permite restringir la creación de un socket a una sola interfaz. Este es el caso de las aplicaciones UWP VPN conocidas que limitan el DNS a su interfaz:
ConnectAsync(nombreDeHost, cadena, nivelDeProtecciónDeSocket, adaptadorDeRed)
"El mecanismo de resolución de nombres que utiliza el método ConnectAsync(Hostname, String, SocketProtectionLevel, NetworkAdapter) se limita a la interfaz especificada para el espacio de nombres del sistema de nombres de dominio (DNS)." https://learn.microsoft.com/en-us/uwp/api/windows.networking.sockets.streamsocket
Se cree que la API VPN de Windows utiliza este mecanismo de conexión o uno similar, lo que da como resultado VPNs del estilo "app" UWP para no funcionar con el cliente de roaming debido a que usa 127.0.0.1 para DNS. Como resultado, las conexiones VPN fallan ya que DNS se envía a 127.0.0.1; sin embargo, debido a las limitaciones de la llamada, el cliente de roaming nunca la recibe ni contesta. Como resultado, la conexión VPN falla debido a una falla de DNS.
La causa raíz es similar en su origen como limitación de diseño al indicador de conectividad NCSI de Windows, donde 127.0.0.1 no se consulta nunca para confirmar la conectividad DNS (resuelta por Microsoft).
Resolución
En este momento, para el cliente de itinerancia independiente, no hay ninguna actualización del cliente de itinerancia que pueda cambiar este comportamiento de Windows resultante de que 127.0.0.1 se haya establecido como servidor DNS local. Esto es un núcleo
requisito para que el cliente de roaming funcione. Hasta que Microsoft permita que 127.0.0.1 sea utilizado para DNS por una aplicación VPN UWP, la única opción es cambiar a la edición de escritorio del cliente VPN o utilizar el módulo de roaming de AnyConnect que utiliza un controlador de kernel para dirigir DNS.