Compartilhar via


Como habilitar o loopback e solucionar problemas de isolamento de rede (aplicativos do Tempo de Execução do Windows)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Este tópico explica como ativar o loopback para acesso de rede e solucionar problemas de isolamento de rede no Windows 8 para um aplicativo da Windows Store.

O que você precisa saber

Tecnologias

Pré-requisitos

  • As informações a seguir se aplicam a qualquer aplicativo do Tempo de Execução do Windows conectado ou com reconhecimento de rede que precise criar conexões de rede. Isso afeta os aplicativos escritos em JavaScript. Isso também afeta os aplicativos escritos usando o .NET Framework 4.5 em C#, VB.NET e C++.

Ferramenta de diagnóstico para isolamento de rede

Uma ferramenta de diagnóstico interna, CheckNetIsolation.exe, é fornecida para ajudar os desenvolvedores a testar, diagnosticar e solucionar problemas de um aplicativo que requer recursos de rede. CheckNetIsolation.exe é uma ferramenta de linha de comando que pega parâmetros de entrada da linha de comando. Ela tem duas opções principais:

  • LoopbackExempt
    Veja uma lista de aplicativos instalados isentos das restrições de loopback de IP e que têm acesso aos endereços de loopback. Essa opção também permite adicionar o acesso a endereços de loopback de IP a um aplicativo específico durante os testes.

  • Depurar
    Determina os recursos ativados usados por um aplicativo e todos os recursos ativados que não são usados. Todos os recursos ativados que não são usados tornam o aplicativo menos seguro. Essa opção também pode fornecer informações sobre o tráfego de rede descartado, o que pode ter sido não intencional.

CheckNetIsolation.exe pode exibir uma mensagem de ajuda com informações de uso. Para exibir a ajuda, use o comando de exemplo abaixo.

CheckNetIsolation -?

Algumas opções de CheckNetIsolation.exe requerem que seja fornecido o nome ou a identificação do aplicativo. Quando um aplicativo é implantado em um computador de destino, seu nome se encontra na pasta c:\Program Files\Applications. Esse é o nome usado para iniciar o aplicativo. Esse é o nome da família do pacote exibido ao usar o Microsoft Visual Studio 2013 e ele representa o contêiner de aplicativo. A ID do aplicativo se encontra no Registro, na chave:

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

Ativar loopback para acesso de rede

Não é possível usar comunicações de rede com um endereço IP de loopback para comunicação entre processos (entre dois aplicativos diferentes) em um aplicativo do Tempo de Execução do Windows, pois isso é restrito pelo isolamento de rede. A comunicação de rede que usa um endereço IP de loopback é permitida em um aplicativo no mesmo processo com a finalidade de comunicação.

Um desenvolvedor pode usar o loopback para fins de testes ou depuração, embora esse recurso não esteja disponível para clientes. Por exemplo, um aplicativo pode baixar dados de um serviço Web por um aplicativo do Tempo de Execução do Windows. Para fins de desenvolvimento, o desenvolvedor quer testar o aplicativo em um único computador configurado com o serviço Web localmente em 127.0.0.1.

Observação  Loopback é permitido apenas para fins de desenvolvimento. Não é permitido o uso por um aplicativo do Tempo de Execução do Windows instalado fora do Visual Studio. O aplicativo do Tempo de Execução do Windows também pode usar um IP de loopback apenas como o endereço de destino da solicitação de rede do cliente. Portanto, um aplicativo do Tempo de Execução do Windows que usa o DatagramSocket ou o StreamSocketListener para escutar um endereço IP de loopback não pode receber nenhum pacote de entrada.

 

Para ativar o acesso a endereços de loopback, o desenvolvedor deve configurar o isolamento de rede para isentar o aplicativo de restrições de loopback. Para pacotes que devem ser recebidos por um serviço de rede, o ouvinte em uma porta TCP ou UDP também precisa ser autorizado por regras de firewall.

Os aplicativos desenvolvidos e executados em Visual Studio serão registrados automaticamente como isentos das restrições de loopback. Um desenvolvedor pode ver a lista de aplicativos isentos executando o seguinte comando:

CheckNetIsolation.exe LoopbackExempt -s

Um desenvolvedor também pode usar a ferramenta CheckNetIsolation.exe para adicionar isenções de loopback manualmente a um aplicativo.

Para isentar um aplicativo de restrições de loopback, deve ser fornecido a ID de aplicativo do pacote. O comando de exemplo abaixo isenta um aplicativo das restrições de loopback.

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

A isenção das restrições de loopback também pode ser removida de um aplicativo específico. O comando de exemplo abaixo remove a isenção de loopback do mesmo aplicativo.

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

A ferramenta CheckNetIsolation.exe também permite que o desenvolvedor isente um aplicativo dessas restrições de loopback com base no nome do contêiner de aplicativo. O comando de exemplo abaixo isenta um aplicativo das restrições de loopback por nome do contêiner de aplicativo:

CheckNetIsolation.exe LoopbackExempt –a –n=stocks_mw26f2swbd5nr

A isenção das restrições de loopback também pode ser removida de um aplicativo escrito usando o .NET Framework com base no nome do contêiner de aplicativo. O comando de exemplo abaixo remove a isenção de loopback do mesmo aplicativo.

CheckNetIsolation.exe LoopbackExempt –d –n=stocks_mw26f2swbd5nr

A isenção das restrições de loopback também pode ser removida de todos os aplicativos instalados. O comando de exemplo abaixo remove a isenção de loopback de todos os aplicativos instalados no computador local.

CheckNetIsolation.exe LoopbackExempt –c

Depurar problemas de isolamento de rede

A opção de depuração é usada para gerar um relatório de recursos de rede usados por um aplicativo.

A opção de depuração permite identificar se um aplicativo está usando todos os recursos declarados no manifesto do aplicativo. Quando a opção de depuração é usada, o sistema é instruído a rastrear quais dos recursos declarados o aplicativo usa e quais não usa.

Para usar a opção de depuração, primeiro implante o aplicativo no computador de destino e determine a ID e o nome do aplicativo. Então, deve ser aberta uma janela CMD com privilégios elevados (executar como Administrador). O comando de exemplo abaixo define a opção de depuração para uma ID de aplicativo específica.

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

O comando de exemplo abaixo define a opção de depuração para um aplicativo com base no nome do contêiner de aplicativo.

CheckNetIsolation.exe Debug –n=stocks_mw26f2swbd5nr

Quando a opção Debug for definida, inicie o aplicativo de uma janela CMD elevada. Execute e teste o aplicativo em relação às operações que ele executará. Pressione Ctrl-C quando terminar os testes e enquanto o aplicativo ainda estiver em execução. Um relatório resumido é exibido na janela CMD listando o status dos recursos de rede com uma entrada para cada recurso, indicando se ele foi declarado e usado. Quando recursos desnecessários são declarados, o relatório resumido indica que eles não foram usados (o relatório resumido chama isso de Não Usado e Sem Segurança). Um relatório de tráfego detalhado também lista os endereços IP de origem e de destino usados para o acesso de rede.

O texto a seguir mostra a saída de um aplicativo com recursos excessivos ativados.

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

O texto a seguir mostra a saída de um aplicativo com recursos apropriados ativados.

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

Tópicos relacionados

Adicionando suporte a rede

Como configurar recursos de isolamento de rede

Solucionando problemas e depurando conexões de rede