Cómo habilitar el bucle invertido y solucionar problemas de aislamiento de red (aplicaciones de Windows en tiempo de ejecución)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

En este tema se explica cómo habilitar el bucle invertido para el acceso a la red y cómo solucionar problemas de aislamiento de red en Windows 8 para una aplicación de la Tienda Windows.

Lo que debes saber

Tecnologías

Requisitos previos

  • La siguiente información se aplica a cualquier aplicación de Windows en tiempo de ejecución conectada o que esté preparada para una red que necesite establecer conexiones de red. Esto afecta a las aplicaciones escritas en JavaScript. También afecta a aquellas escritas con .NET Framework 4.5 en C#, VB.NET y C++.

Herramienta de diagnóstico para el aislamiento de red

Se proporciona una herramienta de diagnóstico integrada, CheckNetIsolation.exe, para ayudar a los desarrolladores a probar la aplicación y a diagnosticar y solucionar problemas de las aplicaciones que requieren funcionalidades de red. CheckNetIsolation.exe es una herramienta de la línea de comandos que toma parámetros de entrada de la línea de comandos. Tiene dos opciones principales:

  • LoopbackExempt
    Permite ver una lista de las aplicaciones instaladas que no tienen restricciones de bucle invertido IP y pueden tener acceso a las direcciones de bucle invertido. Esta opción también permite agregar el acceso a direcciones de bucle invertido IP para una aplicación específica durante la prueba.

  • Debug
    Determina las funcionalidades habilitadas que usa una aplicación y cualquier funcionalidad habilitada que no esté en uso. Todas las funcionalidades habilitadas que no se usan hacen que la aplicación sea menos segura. Esta opción también puede ofrecer información sobre el tráfico de red que se descartó, lo cual pudo haber sido sin querer.

CheckNetIsolation.exe puede mostrar un mensaje de ayuda con la información de uso. Para ver la ayuda, usa el comando de ejemplo que se muestra a continuación.

CheckNetIsolation -?

Algunas opciones CheckNetIsolation.exe requieren el id. o el nombre de la aplicación. Una vez que la aplicación se implementa en un equipo de destino, puedes encontrar el nombre de la aplicación en la carpeta c:\Program Files\Applications. Este es el nombre que se usa para iniciar la aplicación. Es el nombre de la familia de paquetes que aparece cuando se usa Microsoft Visual Studio 2013 y representa el contenedor de la aplicación. El identificador de la aplicación se puede encontrar en el Registro bajo la siguiente clave:

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer

Habilitar el bucle invertido para el acceso a la red

Las comunicaciones de red mediante una dirección de bucle invertido IP no se pueden usar para comunicarse entre procesos (entre dos aplicaciones diferentes) en una aplicación de Windows en tiempo de ejecución, dado que esto está restringido por el aislamiento de red. La comunicación de red mediante una dirección de bucle invertido IP está permitida en una aplicación dentro del mismo proceso para fines de comunicación.

Es posible que un desarrollador quiera usar el bucle invertido para realizar pruebas o depuraciones, aunque esa funcionalidad no esté disponible después para los clientes. Por ejemplo, una aplicación quizás quiera descargar datos de un servicio web desde una aplicación de Windows en tiempo de ejecución. Con fines de desarrollo, el desarrollador quiere probar la aplicación en un solo equipo que está configurado con el servicio web localmente en 127.0.0.1.

Nota  El bucle invertido solo está permitido con fines de desarrollo. Las aplicaciones de Windows en tiempo de ejecución instaladas fuera de Visual Studio no pueden usarlo. Además, una aplicación de Windows en tiempo de ejecución solo puede usar un bucle invertido IP como dirección de destino para la solicitud de red de un cliente. Por lo que una aplicación de Windows en tiempo de ejecución que usa DatagramSocket o StreamSocketListener para escuchar en una dirección de bucle invertido IP no podrá recibir ningún paquete entrante.

 

Para permitir el acceso a las direcciones de bucle invertido, el desarrollador debe configurar el aislamiento de red para eximir a la aplicación de las restricciones de bucle invertido. Para los paquetes recibidos por un servicio de red, las reglas de firewall también tienen que permitir la escucha en un puerto TCP o UDP.

Las aplicaciones que se instalen y se ejecuten en Visual Studio se registrarán automáticamente como exentas de las restricciones de bucle invertido. El desarrollador puede ver la lista de aplicaciones exentas si ejecuta el siguiente comando:

CheckNetIsolation.exe LoopbackExempt -s

El desarrollador también puede usar la herramienta CheckNetIsolation.exe para agregar manualmente exenciones de bucle invertido para una aplicación.

Para eximir a una aplicación de las restricciones de bucle invertido, debe proporcionarse el id. de la aplicación para el paquete. El siguiente comando de ejemplo exime a una aplicación de las restricciones de bucle invertido.

CheckNetIsolation.exe LoopbackExempt –a –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

La exención de restricciones de bucle invertido también puede quitarse para una aplicación determinada El siguiente comando de ejemplo quita la exención de bucle invertido para la misma aplicación.

CheckNetIsolation.exe LoopbackExempt –d –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

La herramienta CheckNetIsolation.exe también permite que el desarrollador exima a una aplicación de estas restricciones de bucle invertido en función del nombre del contenedor de aplicación. El siguiente comando de ejemplo exime a una aplicación de las restricciones de bucle invertido por nombre del contenedor de aplicaciones.

CheckNetIsolation.exe LoopbackExempt –a –n=stocks_mw26f2swbd5nr

La exención de las restricciones de bucle también se puede quitar para una aplicación escrita con .NET Framework en función del nombre del contenedor de aplicación. El siguiente comando de ejemplo quita la exención de bucle invertido para la misma aplicación.

CheckNetIsolation.exe LoopbackExempt –d –n=stocks_mw26f2swbd5nr

La exención de restricciones de bucle invertido también puede quitarse para todas las aplicaciones instaladas. El siguiente comando de ejemplo quita la exención de bucle invertido para todas las aplicaciones instaladas en el equipo local.

CheckNetIsolation.exe LoopbackExempt –c

Depurar problemas de aislamiento de red

La opción de depuración se usa para generar un informe de las funcionalidades de red que usa una aplicación.

Esta opción ofrece una forma de identificar si una aplicación está usando todas las funcionalidades declaradas en el manifiesto de la aplicación. Cuando se usa la opción de depuración, el sistema debe realizar un seguimiento de cuáles son las funcionalidades declaradas que está usando la aplicación y cuáles no está usando.

Para usar la opción de depuración, primero implementa la aplicación en el equipo de destino y determina el id. y el nombre de la aplicación. Después se abre una ventana CMD con privilegios elevados (debe ejecutarse como administrador). El comando de ejemplo siguiente establece la opción de depuración para un id. de aplicación específico.

CheckNetIsolation.exe Debug –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

El comando de ejemplo siguiente establece la opción de depuración para una aplicación en función del nombre de la aplicación del contenedor de aplicación.

CheckNetIsolation.exe Debug –n=stocks_mw26f2swbd5nr

Una vez que se establece la opción de depuración, inicia la aplicación desde una ventana CMD con privilegios elevados. Debes ejecutar y probar la aplicación con operaciones que realizará la aplicación. Presiona Ctrl-C cuando la prueba esté lista y mientras la aplicación siga en ejecución. Aparecerá un informe de resumen en la ventana CMD que enumera el estado de las funcionalidades de red con una entrada para cada funcionalidad que indica si la funcionalidad fue declarada o utilizada. Cuando se declararon funcionalidades innecesarias, el informe de resumen indicará que la funcionalidad nunca se usó (el informe de resumen indica que están sin usar y que no son seguras). Un informe de tráfico detallado también enumera la dirección IP de origen y de destino que se usa para acceder a la red.

El siguiente texto muestra la salida de una aplicación que habilita funcionalidades excesivas.

Network Isolation Debug Session started.
Reproduce your scenario, then hit Ctrl-C when done.

Summary Report

Network Capabilities Status
----------------------------------------------------------------------
    InternetClient                Not Used and Insecure
    InternetClientServer          Not Used and Insecure
    PrivateNetworkClientServer    Used and Declared


Detailed Traffic Report
----------------------------------------------------------------------

    InternetClient                Not Used and Insecure

----------------------------------------------------------------------

    InternetClientServer          Not Used and Insecure

----------------------------------------------------------------------

    PrivateNetworkClientServer    Used and Declared

------------------------------------------------------------------
       10.195.58.77    10.195.58.78

El siguiente texto muestra la salida de una aplicación que habilita las funcionalidades apropiadas.

Network Isolation Debug Session started.
Reproduce your scenario, then hit Ctrl-C when done.

Summary Report

Network Capabilities Status
----------------------------------------------------------------------
    PrivateNetworkClientServer    Used and Declared


Detailed Traffic Report
----------------------------------------------------------------------

    PrivateNetworkClientServer    Used and Declared

------------------------------------------------------------------
       10.195.58.77    10.195.58.78

Temas relacionados

Agregar soporte para funciones de red

Cómo configurar las funcionalidades de aislamiento de red

Solución de problemas y depuración de las conexiones de red