Solución de problemas de integración de red virtual con Azure App Service

En este artículo se describen las herramientas que puede usar para solucionar problemas de conexión en Azure App Service que se integran con una red virtual.

Nota:

La integración de red virtual no se admite en escenarios de Docker Compose en App Service. Las directivas de restricción de acceso se omiten si hay un punto de conexión privado.

Comprobación de la integración de red virtual

Para solucionar los problemas de conexión, primero debe comprobar si la integración de red virtual está configurada correctamente y si la dirección IP privada está asignada a todas las instancias del plan de App Service.

Para ello, use uno de los métodos siguientes:

Comprobación de la dirección IP privada en la consola de depuración de Kudu

Para acceder a la consola de Kudu, seleccione app service en el Azure Portal, vaya a Herramientas de desarrollo, seleccione Herramientas avanzadas y, a continuación, seleccione Ir. En la página del servicio Kudu, seleccione Herramientas>Debug Console>CMD.

Captura de pantalla que muestra cómo abrir la página del servicio Kudu en el Azure Portal.

También puede ir a la consola de Depuración de Kudu directamente mediante la dirección URL [sitename].scm.azurewebsites.net/DebugConsole.

En la consola de depuración, ejecute uno de los siguientes comandos:

Aplicaciones basadas en el sistema operativo Windows

SET WEBSITE_PRIVATE_IP

Si la dirección IP privada se asigna correctamente, obtendrá la siguiente salida:

WEBSITE_PRIVATE_IP=<IP address>

Aplicaciones basadas en el sistema operativo Linux

set| egrep --color 'WEBSITE_PRIVATE_IP'

Comprobación de la dirección IP privada en el entorno de Kudu

Vaya al entorno de Kudu en [sitename].scm.azurewebsites.net/Env y busque WEBSITE_PRIVATE_IP.

Una vez que hayamos establecido que la integración de red virtual se ha configurado correctamente, podemos continuar con la prueba de conectividad.

Solución de problemas de conectividad saliente en aplicaciones de Windows

En aplicaciones nativas de Windows, las herramientas ping, nslookup y tracert no funcionarán a través de la consola debido a restricciones de seguridad (funcionan en contenedores de Windows personalizados).

Vaya directamente a la consola de Kudu en [sitename].scm.azurewebsites.net/DebugConsole.

Para probar la funcionalidad de DNS, puede usar nameresolver.exe. La sintaxis es:

nameresolver.exe hostname [optional:DNS Server]

Puede usar nameresolver para comprobar los nombres de host de los que depende la aplicación. De este modo, puede probar si tiene algo mal configurado con el DNS o quizás no tiene acceso al servidor DNS. Puede ver el servidor DNS que la aplicación usa en la consola examinando las variables de entorno WEBSITE_DNS_SERVER y WEBSITE_DNS_ALT_SERVER.

Nota:

La herramienta nameresolver.exe actualmente no funciona en contenedores de Windows personalizados.

Para probar la conectividad TCP con una combinación de host y puerto, puede usar tcpping. La sintaxis es .

tcpping.exe hostname [optional: port]

La utilidad tcpping le indica si puede llegar a un host y puerto específicos. Solo puede mostrarse correctamente si hay una aplicación que escucha en la combinación de host y puerto y hay acceso de red desde la aplicación al host y puerto especificados.

Solución de problemas de conectividad saliente en aplicaciones Linux

Vaya directamente a Kudu en [sitename].scm.azurewebsites.net. En la página del servicio Kudu, seleccione Herramientas>Debug Console>CMD.

Para probar la funcionalidad de DNS, puede usar el comando nslookup. La sintaxis es:

nslookup hostname [optional:DNS Server]

En función de los resultados anteriores, puede comprobar si hay algo mal configurado en el servidor DNS.

Nota:

La herramienta nameresolver.exe actualmente no funciona en aplicaciones Linux.

Para probar la conectividad, puede usar el comando Curl . La sintaxis es:

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

Depuración del acceso a recursos hospedados en la red virtual

Una serie de factores pueden impedir que la aplicación llegue a un host y puerto específicos. La mayoría de las veces, es una de las siguientes:

  • Un firewall está en el camino. Si tiene un firewall en el camino, alcanzará el tiempo de espera de TCP. El tiempo de espera de TCP es de 21 segundos en este caso. Use la herramienta tcpping para probar la conectividad. Los tiempos de espera de TCP pueden deberse a muchas cosas más allá de los firewalls, pero empezar allí.
  • Dns no es accesible. El tiempo de espera de DNS es de tres segundos por servidor DNS. Si tiene dos servidores DNS, el tiempo de espera es de seis segundos. Use nameresolver para ver si el DNS funciona. No puede usar nslookup porque no usa el DNS con el que está configurada la red virtual. Si no es accesible, podría tener un firewall o un grupo de seguridad de red que bloquee el acceso a DNS o podría estar inactivo. Algunas arquitecturas DNS que usan servidores DNS personalizados pueden ser complejas y, en ocasiones, pueden experimentar tiempos de espera. Para determinar si este es el caso, se puede establecer la variable WEBSITE_DNS_ATTEMPTS de entorno. Para obtener más información sobre DNS en App Services, consulte Resolución de nombres (DNS) en App Service.

Si esos elementos no responden a sus problemas, busque primero cosas como:

Integración de red virtual regional

  • ¿Su destino es una dirección que no es RFC1918 y no tiene route all habilitado?
  • ¿Hay un grupo de seguridad de red que bloquee la salida de la subred de integración?
  • Si va a través de Azure ExpressRoute o una VPN, ¿está configurada la puerta de enlace local para enrutar la copia de seguridad del tráfico a Azure? Si puede llegar a puntos de conexión en la red virtual, pero no en el entorno local, compruebe las rutas.
  • ¿Tiene suficientes permisos para establecer la delegación en la subred de integración? Durante la configuración de integración de red virtual regional, la subred de integración se delega en Microsoft.Web/serverFarms. La interfaz de usuario de integración de red virtual delega la subred a Microsoft.Web/serverFarms automáticamente. Si la cuenta no tiene permisos de red suficientes para establecer la delegación, necesitará a alguien que pueda establecer atributos en la subred de integración para delegar la subred. Para delegar manualmente la subred de integración, vaya a la interfaz de usuario de subred de Azure Virtual Network y establezca la delegación para Microsoft.Web/serverFarms.

Depurar problemas de redes es un desafío porque no puede ver lo que bloquea el acceso a una combinación de host:puerto específica. Algunas causas incluyen:

  • Tiene un firewall en el host que impide el acceso al puerto de la aplicación desde el intervalo ip de punto a sitio. El cruce de subredes suele requerir acceso público.
  • El host de destino está inactivo.
  • La aplicación está inactiva.
  • Tenía la dirección IP o el nombre de host incorrectos.
  • La aplicación está escuchando en un puerto diferente al que esperaba. Puede hacer coincidir el identificador de proceso con el puerto de escucha mediante "netstat -aon" en el host del punto de conexión.
  • Los grupos de seguridad de red se configuran de forma que impiden el acceso al host y al puerto de la aplicación desde el intervalo de IP de punto a sitio.

No sabes qué dirección usa realmente la aplicación. Podría ser cualquier dirección de la subred de integración o del intervalo de direcciones de punto a sitio, por lo que debe permitir el acceso desde todo el intervalo de direcciones.

Entre los pasos de depuración se incluyen:

  • Conéctese a una máquina virtual de la red virtual e intente llegar a su host:puerto de recursos desde allí. Para probar el acceso TCP, use el comando Test-NetConnection de PowerShell. La sintaxis es:
Test-NetConnection hostname [optional: -Port]
  • Abra una aplicación en una máquina virtual y pruebe el acceso a ese host y puerto desde la consola desde la aplicación mediante tcpping.

Solucionador de problemas de red

También puede usar el solucionador de problemas de red para solucionar los problemas de conexión de las aplicaciones de la App Service. Para abrir el solucionador de problemas de red, vaya a App Service en el Azure Portal. Seleccione Diagnóstico y solución de problemas y, a continuación, busque Solucionador de problemas de red.

Captura de pantalla que muestra cómo abrir el solucionador de problemas de red en el Azure Portal.

Nota:

El escenario de problemas de conexión aún no admite aplicaciones basadas en linux o contenedor.

Problemas de conexión: comprobará el estado de la integración de red virtual, incluida la comprobación de si la dirección IP privada se ha asignado a todas las instancias del plan de App Service y la configuración de DNS. Si no se configura un DNS personalizado, se aplicará el DNS de Azure predeterminado. También puede ejecutar pruebas en un punto de conexión específico al que desea probar la conectividad.

Captura de pantalla que muestra el solucionador de problemas de ejecución para los problemas de conexión.

Problemas de configuración : este solucionador de problemas comprobará si la subred es válida para la integración de red virtual.

Captura de pantalla que muestra cómo ejecutar el solucionador de problemas de configuración en el Azure Portal.

Problema de eliminación de subred o red virtual : este solucionador de problemas comprobará si la subred tiene bloqueos y si tiene vínculos de asociación de servicio no utilizados que podrían estar bloqueando la eliminación de la red virtual o subred.

Captura de pantalla que muestra cómo ejecutar el solucionador de problemas de eliminación de subredes o redes virtuales.

Recopilación de seguimientos de red

La recopilación de seguimientos de red puede ser útil para analizar problemas. En App de Azure Services, los seguimientos de red se toman del proceso de aplicación. Para obtener información precisa, reproduzca el problema al iniciar la recopilación de seguimiento de red.

Nota:

El tráfico de red virtual no se captura en seguimientos de red.

Windows App Services

Para recopilar seguimientos de red para Windows App Services, siga estos pasos:

  1. En el Azure Portal, vaya a la aplicación web.
  2. En el panel de navegación izquierdo, seleccione Diagnosticar y resolver problemas.
  3. En el cuadro de búsqueda, escriba Recopilar seguimiento de red y seleccione Recopilar seguimiento de red para iniciar la recopilación de seguimiento de red.

Captura de pantalla que muestra cómo capturar un seguimiento de red.

Para obtener el archivo de seguimiento de cada instancia que sirve una aplicación web, en el explorador, vaya a la consola de Kudu para la aplicación web (https://<sitename>.scm.azurewebsites.net). Descargue el archivo de seguimiento de la carpeta C:\home\LogFiles\networktrace o D:\home\LogFiles\networktrace .

Linux App Services

Para recopilar seguimientos de red para Linux App Services que no usan un contenedor personalizado, siga estos pasos:

  1. Instale la utilidad de tcpdump línea de comandos ejecutando los comandos siguientes:

    apt-get update
    apt install tcpdump
    
  2. Conéctese al contenedor mediante secure shell protocol (SSH).

  3. Identifique la interfaz que está en funcionamiento mediante la ejecución del siguiente comando (por ejemplo, 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 la colección de seguimiento de red mediante la ejecución del siguiente comando:

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

    Reemplace por eth0 el nombre de la interfaz real.

Para descargar el archivo de seguimiento, conéctese a la aplicación web a través de métodos como Kudu, FTP o una solicitud de LA API de Kudu. Este es un ejemplo de solicitud para desencadenar la descarga de archivos:

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

Aviso de declinación de responsabilidades sobre la información de terceros

Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.