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>.
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.
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.
Problemas de configuração – essa solução de problemas marcar se sua sub-rede for válida para a integração de rede virtual.
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.
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:
- No portal do Azure, navegue até seu Aplicativo Web.
- Na navegação à esquerda, selecione Diagnosticar e resolver problemas.
- Na caixa de pesquisa, digite Coletar Rastreamento de Rede e selecione Coletar Rastreamento de Rede para iniciar a coleção de 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:
Instale o utilitário de
tcpdump
linha de comando executando os seguintes comandos:apt-get update apt install tcpdump
Conecte-se ao contêiner por meio do Protocolo Secure Shell (SSH).
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]
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.