Solución de problemas de integración de la red virtual con el Servicio de la Aplicación de Azure
En este artículo se describen las herramientas que puede usar para solucionar problemas de conexión en App de Azure Servicio 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 presente.
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, utilice 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 el servicio de aplicaciones en 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>Depurar CMD de la consola.>
También puede ir directamente a la consola de depuración de Kudu 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 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 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 hemos 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 tenga acceso al servidor DNS. Para ver el servidor DNS que la aplicación usa en la consola, examine las variables de entorno WEBSITE_DNS_SERVER y WEBSITE_DNS_ALT_SERVER.
Nota
La herramienta nameresolver.exe no funciona actualmente en contenedores de Windows personalizados.
Para probar la conectividad TCP con un host y una combinación de puerto, puede usar tcpping. La sintaxis es .
tcpping.exe hostname [optional: port]
La utilidad tcpping indica si se puede llegar a un host y puerto específicos. Solo se puede mostrar 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 el 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>Depurar CMD de la consola.>
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 no funciona actualmente 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
Varios factores pueden impedir que la aplicación llegue a un host y un puerto específicos. La mayoría de las veces, es una de las siguientes:
- Existe un firewall que lo impide. Si tiene un firewall que lo impide, se agota el tiempo de espera de TCP. El tiempo de espera de TCP es de 21 segundos en este caso. Utilice la herramienta tcpping para probar la conectividad. Los tiempos de espera agotados de TCP pueden tener muchas causas además de los firewalls, pero comience por comprobar los firewalls.
- El DNS no es accesible. El tiempo de espera de DNS es de tres segundos por cada 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 eso 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 más información sobre DNS en App Services, consulte Resolución de nombres (DNS) en App Service.
Si estos elementos no resuelven el problema, plantéese cuestiones como las siguientes:
Integración de red virtual regional
- ¿El destino no es una dirección RFC 1918 y no tiene la opción Enrutar todo habilitada?
- ¿Hay un NSG que bloquea la salida de la subred de integración?
- Si está usando una VPN o Azure ExpressRoute, ¿la puerta de enlace local está configurada para enrutar el tráfico de vuelta a Azure? Si puede acceder a los puntos de conexión de la red virtual pero no a los del entorno local, compruebe las rutas.
- ¿Tiene permisos suficientes para configurar la delegación en la subred de integración? Al configurar la integración de la red virtual regional, la subred de integración se delega en Microsoft.Web/serverFarms. La interfaz de usuario de integración de la red virtual delega la subred en Microsoft.Web/serverFarms automáticamente. Si la cuenta no tiene suficientes permisos de red para establecer la delegación, necesitará que un usuario que pueda configurar atributos en la subred de integración delegue la subred. Para delegar manualmente la subred de integración, vaya a la interfaz de usuario de la subred de Azure Virtual Network y establezca la delegación para Microsoft.Web/serverFarms.
Depurar problemas de red es todo un reto porque no se puede ver lo que está bloqueando el acceso en una combinación de host y puerto específica. Entre las causas se incluyen las siguientes:
- Tiene un firewall en el host que bloquea el acceso al puerto de la aplicación desde el intervalo IP de punto a sitio. A menudo se requiere acceso público para establecer conexiones entre subredes.
- El host de destino está fuera de servicio.
- La aplicación está fuera de servicio.
- La dirección IP o el nombre de host son incorrectos.
- La aplicación escucha en un puerto diferente al esperado. Puede hacer coincidir el id. de proceso con el puerto de escucha usando "netstat -aon" en el host del punto de conexión.
- Los grupos de seguridad de red están configurados de tal manera que evitan el acceso al host y al puerto de la aplicación desde el intervalo IP de punto a sitio.
No se sabe qué dirección usa realmente la aplicación. Podría ser cualquier dirección en el intervalo de direcciones de punto a sitio o de subred de integración, por lo que será necesario permitir el acceso desde el intervalo de direcciones completo.
Entre otros pasos de depuración se incluyen los siguientes:
- Conectarse a una máquina virtual de la red virtual e intentar acceder al recurso host:puerto 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 ese puerto desde la consola de 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 en App Service. Para abrir el solucionador de problemas de red, vaya a App Service en Azure Portal. Seleccione Diagnóstico y solución de problemas y busque Solucionador de problemas de red.
Nota:
El escenario de problemas de conexión aún no admite aplicaciones basadas en contenedores o Linux.
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á azure DNS predeterminado. También puede ejecutar pruebas en un punto de conexión específico al que desea probar la conectividad.
Problemas de configuración: este solucionador de problemas comprobará si la subred es válida para la integración de red virtual.
Problema de eliminación de subred o red virtual: este solucionador de problemas comprobará si la subred tiene bloqueos y si tiene algún vínculo de asociación de servicio sin usar que pueda estar bloqueando la eliminación de la red virtual o la subred.
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 seguimientos 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:
- En Azure Portal, vaya a la aplicación web.
- En el panel de navegación izquierdo, seleccione Diagnosticar y resolver problemas.
- En el cuadro de búsqueda, escriba Recopilar seguimiento de red y seleccione Recopilar seguimiento de red para iniciar la recopilación de seguimientos de red.
Para obtener el archivo de seguimiento de cada instancia que atiende 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:
Instale la utilidad de
tcpdump
línea de comandos mediante la ejecución de los siguientes comandos:apt-get update apt install tcpdump
Conéctese al contenedor a través del protocolo Secure Shell (SSH).
Identifique la interfaz que está en funcionamiento ejecutando el comando siguiente (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]
Inicie la recopilación de seguimiento de red mediante la ejecución del comando siguiente:
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 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.