Solucionar problemas de integração de redes virtuais com o Serviço de Aplicativo do Azure
Este artigo descreve as ferramentas que você pode usar para solucionar problemas de conexão no Serviço de Aplicativo do Azure que se integram a uma rede virtual.
Observação
Não há suporte para a integração de rede virtual em cenários do Docker Compose no Serviço de Aplicativo. As políticas de restrição de acesso serão ignoradas se um ponto de extremidade privado estiver presente.
Verificar a integração de rede virtual
Para solucionar os problemas de conexão, primeiro você deve verificar se a integração de rede virtual está configurada corretamente e se o IP privado está atribuído a todas as instâncias do Plano do Serviço de Aplicativo.
Para fazer isso, utilize um dos métodos seguintes:
Verifique 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, vá para Ferramentas de Desenvolvimento, selecione Ferramentas Avançadas e, em seguida, selecione Ir. Na página de serviço Kudu, selecione Ferramentas>Depurar Console>CMD.
Você também pode acessar o console de depuração do Kudu diretamente pelo 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 do Windows
Em aplicativos nativos do Windows, as ferramentas ping, nslookup e tracert não funcionarão por meio do console devido a restrições de segurança (elas funcionam em contêineres personalizados do Windows).
Vá para o console Kudu diretamente em [sitename].scm.azurewebsites.net/DebugConsole
.
Para testar a funcionalidade DNS, você pode usar nameresolver.exe. A sintaxe do é:
nameresolver.exe hostname [optional:DNS Server]
Você pode usar nameresolver para verificar os nomes de host de que seu aplicativo depende. Dessa forma, você pode testar se tem algo mal configurado com seu DNS ou talvez não tenha acesso ao seu servidor DNS. Você pode ver o servidor DNS que seu aplicativo usa no console, observando as variáveis de ambiente 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 tcpping informa se você pode acessar um host específico e uma porta. Ele só poderá mostrar êxito se houver um aplicativo escutando na combinação de host e porta e houver acesso à rede do aplicativo para o host e a 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>Depurar Console>CMD.
Para testar a funcionalidade DNS, você pode usar o comando nslookup. A sintaxe do é:
nslookup hostname [optional:DNS Server]
Dependendo dos resultados acima, você pode verificar se há algo mal configurado em seu 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 do é:
curl -v https://hostname
curl hostname:[port]
Depurar o acesso a recursos hospedados na rede virtual
Vários fatores podem impedir que seu aplicativo alcance um host e uma porta específicos. Na maioria das vezes, é um dos seguintes:
- Há um firewall no caminho. Se você tiver um firewall no caminho, atingiu o tempo limite do TCP. O tempo limite de TCP é 21 segundos neste caso. Use a ferramenta tcpping para testar a conectividade. Os tempos limite de TCP podem ser causados por muitas coisas além dos firewalls, mas comece por aí.
- O DNS não está acessível. O tempo limite do DNS é de três segundos por servidor DNS. Se você tiver dois servidores DNS, o tempo limite será de seis segundos. Use o nameresolver para ver se o DNS está funcionando. Você não pode usar nslookup porque ele não usa o DNS com o qual sua rede virtual está configurada. Se estiver inacessível, você pode ter um firewall ou NSG bloqueando o acesso ao DNS ou pode estar inativo. Algumas arquiteturas DNS que usam servidores DNS personalizados podem ser complexas e ocasionalmente podem sofrer 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 DNS nos Serviços de Aplicativos, consulte Resolução de nomes (DNS) no Serviço de Aplicativo.
Se esses itens não resolverem seu problema, procure por coisas simples primeiro, como:
Integração de rede virtual regional
- Seu destino é um endereço não RFC1918 e você não tem Rotear Todos habilitado?
- Há um NSG bloqueando a saída de sua sub-rede de integração?
- Se você estiver entrando no Azure ExpressRoute ou em uma VPN, seu gateway local será configurado para rotear o tráfego de volta para o Azure? Se você puder acessar pontos de extremidade em sua rede virtual, mas não no local, verifique 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 da 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, vá para a interface do usuário da sub-rede da rede virtual do Azure 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 hosts:porta específica. Esses motivos incluem:
- você tem um firewall no seu host que impede o acesso à porta do aplicativo usando o intervalo de IP ponto a site. o cruzamento de sub-redes geralmente exige acesso Público.
- o host de destino está inoperante.
- seu aplicativo está inoperante.
- você tinha o IP ou nome de host incorreto.
- seu aplicativo está escutando em uma porta diferente da que você esperava. Você pode corresponder a sua ID de processo com a porta de escuta usando "netstat -aon" no host do ponto de extremidade.
- Os grupos de segurança de rede estão configurados de modo a impedir o acesso ao host do aplicativo e à porta 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 intervalo de endereços de 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 na sua VNet e tente acessar o host:porta do recurso de lá. Para testar o acesso TCP, use o comando do PowerShell Test-NetConnection. A sintaxe do é:
Test-NetConnection hostname [optional: -Port]
- Abra um aplicativo em uma VM e teste o acesso a esse host e porta a partir do console do seu aplicativo usando 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 solução de problemas e 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 verificará o status da integração de rede virtual, incluindo a verificação se o IP privado foi atribuído a todas as instâncias do Plano do Serviço de Aplicativo e às configurações de 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 com o qual deseja testar a conectividade.
Problemas de configuração – essa solução de problemas verificará se sua sub-rede é válida para integração de rede virtual.
Problema de exclusão de sub-rede/VNet – essa solução de problemas verificará se sua sub-rede tem bloqueios e se ela tem links de associação de serviço não utilizados que possam estar bloqueando a exclusão da VNet/sub-rede.
Coletar rastreamentos de rede
A coleta de rastreamentos de rede pode ser útil na análise de problemas. Nos Serviços de Aplicativos do Azure, os rastreamentos de rede são obtidos do processo de aplicativo. Para obter informações precisas, reproduza o problema ao iniciar a coleta de rastreamento de rede.
Observação
O tráfego de rede virtual não é capturado em rastreamentos de rede.
Serviços de Aplicativos do Windows
Para coletar rastreamentos de rede para os Serviços de Aplicativos do Windows, siga estas etapas:
- No portal do Azure, navegue até seu aplicativo Web.
- No painel de 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 coleta 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\networktrace .
Serviços de Aplicativos do Linux
Para coletar rastreamentos de rede para Serviços de Aplicativos do Linux que não usam um contêiner personalizado, siga estas etapas:
Instale o
tcpdump
utilitário de linha de comando executando os seguintes comandos:apt-get update apt install tcpdump
Conecte-se ao contêiner por meio do Secure Shell Protocol (SSH).
Identifique a interface que está em execução executando o seguinte comando (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 coleta 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 do Kudu. Aqui está um exemplo de solicitação para acionar 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.