Solucionar problemas de integração de rede virtual com Serviço de Aplicativo do Azure

Este artigo descreve ferramentas que você pode usar para solucionar problemas de conexão em Serviço de Aplicativo do Azure que se integram a uma rede virtual.

Observação

Não há suporte para integração de rede virtual para cenários do Docker Compose em Serviço de Aplicativo. As políticas de restrição de acesso são ignoradas se um ponto de extremidade privado estiver presente.

Verificar a integração de rede virtual

Para solucionar problemas de conexão, primeiro você deve verificar se a integração de rede virtual está configurada corretamente e se o IP privado é atribuído a todas as instâncias do Plano Serviço de Aplicativo.

Para fazer isso, use um dos seguintes métodos:

Verificar o IP privado no console de Depuração do Kudu

Para acessar o console do Kudu, selecione o serviço de aplicativo no portal do Azure, acesse Ferramentas de Desenvolvimento, selecione Ferramentas Avançadas e selecione Ir. Na página de serviço kudu, selecione Ferramentas>DepurarCMD do Console>.

Captura de tela que mostra como abrir a página de serviço do Kudu no portal do Azure.

Você também pode ir para o console de Depuração do Kudu diretamente pela URL [sitename].scm.azurewebsites.net/DebugConsole.

No console de Depuração, execute um dos seguintes comandos:

Aplicativos baseados no sistema operacional Windows

SET WEBSITE_PRIVATE_IP

Se o IP privado for atribuído com êxito, você obterá a seguinte saída:

WEBSITE_PRIVATE_IP=<IP address>

Aplicativos baseados no sistema operacional linux

set| egrep --color 'WEBSITE_PRIVATE_IP'

Verifique o IP privado no ambiente kudu

Vá para o ambiente kudu em [sitename].scm.azurewebsites.net/Env e procure por WEBSITE_PRIVATE_IP.

Depois de estabelecermos que a integração de rede virtual está configurada com êxito, podemos prosseguir com o teste de conectividade.

Solucionar problemas de conectividade de saída em Aplicativos Windows

Nos aplicativos nativos do Windows, as ferramentas ping, nslookup e tracert não funcionarão no console devido a restrições de segurança (elas funcionam em contêineres personalizados do Windows).

Acesse o console do Kudu diretamente em [sitename].scm.azurewebsites.net/DebugConsole.

Para testar a funcionalidade DNS, você pode usar nameresolver.exe. A sintaxe é:

nameresolver.exe hostname [optional:DNS Server]

Você pode usar nameresolver para marcar os nomes de host dos quais seu aplicativo depende. Dessa forma, você pode testar se tiver algo configurado incorretamente com seu DNS ou talvez não tenha acesso ao servidor DNS. Você pode ver o servidor DNS que seu aplicativo usa no console examinando as variáveis ambientais WEBSITE_DNS_SERVER e WEBSITE_DNS_ALT_SERVER.

Observação

A ferramenta nameresolver.exe atualmente não funciona em contêineres personalizados do Windows.

Para testar a conectividade TCP com uma combinação de host e porta, você pode usar tcpping. A sintaxe é.

tcpping.exe hostname [optional: port]

O utilitário de tcpping informa se você pode acessar um host e uma porta específicos. Ele só pode mostrar sucesso se houver um aplicativo escutando na combinação host e porta e houver acesso de rede do seu aplicativo ao host e à porta especificados.

Solucionar problemas de conectividade de saída em Aplicativos Linux

Vá para Kudu diretamente em [sitename].scm.azurewebsites.net. Na página de serviço kudu, selecione Ferramentas>DepurarCMD do Console>.

Para testar a funcionalidade DNS, você pode usar o comando nslookup. A sintaxe é:

nslookup hostname [optional:DNS Server]

Dependendo dos resultados acima, você pode marcar se houver algo configurado incorretamente no servidor DNS.

Observação

A ferramenta nameresolver.exe atualmente não funciona em aplicativos Linux.

Para testar a conectividade, você pode usar o comando Curl . A sintaxe é:

curl -v https://hostname
curl hostname:[port]

Depurar o acesso a recursos hospedados em rede virtual

Uma série de fatores pode impedir que seu aplicativo atinja um host e uma porta específicos. Na maioria das vezes, é um dos seguintes:

  • Um firewall está no caminho. Se você tiver um firewall no caminho, você atingirá o tempo limite do TCP. O tempo limite do TCP é de 21 segundos nesse caso. Use a ferramenta de tcpping para testar a conectividade. Os tempos limite de TCP podem ser causados por muitas coisas além de firewalls, mas começam lá.
  • O DNS não está acessível. O tempo limite DNS é de três segundos por servidor DNS. Se você tiver dois servidores DNS, o tempo limite será de seis segundos. Use nameresolver para ver se o DNS está funcionando. Você não pode usar o nslookup porque isso não usa o DNS com o qual sua rede virtual está configurada. Se inacessível, você pode ter um firewall ou NSG bloqueando o acesso ao DNS ou pode ser reduzido. Algumas arquiteturas DNS que usam servidores DNS personalizados podem ser complexas e, ocasionalmente, experimentar tempos limite. Para determinar se esse é o caso, a variável WEBSITE_DNS_ATTEMPTS de ambiente pode ser definida. Para obter mais informações sobre o DNS nos Serviços de Aplicativo, consulte Resolução de nomes (DNS) em Serviço de Aplicativo.

Se esses itens não responderem aos seus problemas, procure primeiro por coisas como:

Integração de rede virtual regional

  • Seu destino é um endereço não RFC1918 e você não tem o Route All habilitado?
  • Há um NSG bloqueando a saída da sub-rede de integração?
  • Se você estiver atravessando o Azure ExpressRoute ou uma VPN, o gateway local está configurado para rotear o tráfego de volta para o Azure? Se você puder alcançar pontos de extremidade em sua rede virtual, mas não local, marcar suas rotas.
  • Você tem permissões suficientes para definir a delegação na sub-rede de integração? Durante a configuração de integração de rede virtual regional, sua sub-rede de integração é delegada para Microsoft.Web/serverFarms. A interface do usuário de integração da VNet delega a sub-rede para Microsoft.Web/serverFarms automaticamente. Se sua conta não tiver permissões de rede suficientes para definir a delegação, você precisará de alguém que possa definir atributos em sua sub-rede de integração para delegar a sub-rede. Para delegar manualmente a sub-rede de integração, acesse a interface do usuário da sub-rede do Azure Rede Virtual e defina a delegação para Microsoft.Web/serverFarms.

A depuração de problemas de rede é um desafio porque você não pode ver o que está bloqueando o acesso a uma combinação de host:porta específica. Algumas causas incluem:

  • Você tem um firewall no host que impede o acesso à porta do aplicativo do intervalo de IP ponto a site. O cruzamento de sub-redes geralmente requer acesso público.
  • Seu host de destino está desligado.
  • Seu aplicativo está inativo.
  • Você tinha o IP ou nome de host errados.
  • Seu aplicativo está escutando em uma porta diferente do esperado. Você pode corresponder sua ID do processo com a porta de escuta usando "netstat -aon" no host do ponto de extremidade.
  • Os grupos de segurança de rede são configurados de maneira que impedem o acesso ao host e à porta do aplicativo do intervalo de IP ponto a site.

Você não sabe qual endereço seu aplicativo realmente usa. Pode ser qualquer endereço na sub-rede de integração ou no intervalo de endereços ponto a site, portanto, você precisa permitir o acesso de todo o intervalo de endereços.

Mais etapas de depuração incluem:

  • Conecte-se a uma VM em sua rede virtual e tente acessar seu host de recursos:porta a partir daí. Para testar o acesso TCP, use o comando Do PowerShell Test-NetConnection. A sintaxe é:
Test-NetConnection hostname [optional: -Port]
  • Crie um aplicativo em uma VM e teste o acesso a esse host e porta do console do seu aplicativo usando o tcpping.

Solução de problemas de rede

Você também pode usar a solução de problemas de rede para solucionar problemas de conexão para os aplicativos no Serviço de Aplicativo. Para abrir a solução de problemas de rede, acesse o serviço de aplicativo no portal do Azure. Selecione Diagnóstico e solucionar problema e, em seguida, pesquise solução de problemas de rede.

Captura de tela que mostra como abrir a solução de problemas de rede no portal do Azure.

Observação

O cenário de problemas de conexão ainda não dá suporte a aplicativos baseados em linux ou contêiner.

Problemas de conexão – ele marcar o status da integração de rede virtual, incluindo verificar se o IP privado foi atribuído a todas as instâncias do Plano Serviço de Aplicativo e as configurações DNS. Se um DNS personalizado não estiver configurado, o DNS padrão do Azure será aplicado. Você também pode executar testes em um ponto de extremidade específico ao qual deseja testar a conectividade.

Captura de tela que mostra a execução de solução de problemas de conexão.

Problemas de configuração – essa solução de problemas marcar se sua sub-rede for válida para a integração de rede virtual.

Captura de tela que mostra como executar a solução de problemas de configuração no portal do Azure.

Problema de exclusão de sub-rede/VNet – Essa solução de problemas marcar se sua sub-rede tiver bloqueios e se tiver algum Links de Associação de Serviço não utilizado que possa estar bloqueando a exclusão da VNet/sub-rede.

Captura de tela que mostra como executar a solução de problemas de exclusão de sub-rede ou de rede virtual.

Coletar rastreamentos de rede

Coletar rastreamentos de rede pode ser útil na análise de problemas. No Azure App Services, os rastreamentos de rede são retirados do processo de aplicativo. Para obter informações precisas, reproduz o problema ao iniciar a coleção de rastreamento de rede.

Observação

O tráfego de rede virtual não é capturado em rastreamentos de rede.

Serviços de Aplicativo do Windows

Para coletar rastreamentos de rede para os Serviços de Aplicativo do Windows, siga estas etapas:

  1. No portal do Azure, navegue até seu Aplicativo Web.
  2. Na navegação à esquerda, selecione Diagnosticar e resolver problemas.
  3. Na caixa de pesquisa, digite Coletar Rastreamento de Rede e selecione Coletar Rastreamento de Rede para iniciar a coleção de rastreamento de rede.

Captura de tela que mostra como capturar um rastreamento de rede.

Para obter o arquivo de rastreamento de cada instância que atende a um Aplicativo Web, em seu navegador, acesse o console do Kudu para o Aplicativo Web (https://<sitename>.scm.azurewebsites.net). Baixe o arquivo de rastreamento da pasta C:\home\LogFiles\networktrace ou D:\home\LogFiles\npasta etworktrace .

Serviços de Aplicativo linux

Para coletar rastreamentos de rede para os Serviços de Aplicativo linux que não usam um contêiner personalizado, siga estas etapas:

  1. Instale o utilitário de tcpdump linha de comando executando os seguintes comandos:

    apt-get update
    apt install tcpdump
    
  2. Conecte-se ao contêiner por meio do Protocolo Secure Shell (SSH).

  3. Identifique a interface que está em execução executando o comando a seguir (por exemplo, eth0):

    root@<hostname>:/home# tcpdump -D
    
    1.eth0 [Up, Running, Connected]
    2.any (Pseudo-device that captures on all interfaces) [Up, Running]
    3.lo [Up, Running, Loopback]
    4.bluetooth-monitor (Bluetooth Linux Monitor) [Wireless]
    5.nflog (Linux netfilter log (NFLOG) interface) [none]
    6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
    7.dbus-system (D-Bus system bus) [none]
    8.dbus-session (D-Bus session bus) [none]
    
  4. Inicie a coleção de rastreamento de rede executando o seguinte comando:

    root@<hostname>:/home# tcpdump -i eth0 -w networktrace.pcap
    

    Substitua eth0 pelo nome da interface real.

Para baixar o arquivo de rastreamento, conecte-se ao Aplicativo Web por meio de métodos como Kudu, FTP ou uma solicitação de API kudu. Aqui está um exemplo de solicitação para disparar o download do arquivo:

https://<sitename>.scm.azurewebsites.net/api/vfs/<path to the trace file in the /home directory>/filename

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.