Problemen met de integratie van virtuele netwerken met Azure App Service oplossen
In dit artikel worden hulpprogramma's beschreven die u kunt gebruiken om verbindingsproblemen op te lossen in Azure App Service die zijn geïntegreerd met een virtueel netwerk.
Opmerking
Integratie van virtuele netwerken wordt niet ondersteund voor Docker Compose-scenario's in App Service. Toegangsbeperkingsbeleid wordt genegeerd als er een privé-eindpunt aanwezig is.
Integratie van virtueel netwerk controleren
Als u de verbindingsproblemen wilt oplossen, moet u eerst controleren of de integratie van het virtuele netwerk correct is geconfigureerd en of het privé-IP-adres is toegewezen aan alle exemplaren van het App Service Plan.
Gebruik hiervoor een van de volgende methoden:
Controleer het privé-IP-adres in de Kudu-foutopsporingsconsole
Voor toegang tot de Kudu-console selecteert u de app-service in de Azure Portal, gaat u naar Ontwikkelhulpprogramma's, selecteert u Geavanceerde hulpprogramma's en selecteert u vervolgens Go. Selecteer op de pagina Kudu-service de optie Hulpprogramma's>foutopsporingsconsole>CMD.
U kunt ook rechtstreeks via de URL [sitename].scm.azurewebsites.net/DebugConsole
naar de Kudu-foutopsporingsconsole gaan.
Voer in de foutopsporingsconsole een van de volgende opdrachten uit:
Windows-besturingssysteem-apps
SET WEBSITE_PRIVATE_IP
Als het privé-IP-adres is toegewezen, krijgt u de volgende uitvoer:
WEBSITE_PRIVATE_IP=<IP address>
Op Linux-besturingssysteem gebaseerde apps
set| egrep --color 'WEBSITE_PRIVATE_IP'
Controleer het privé-IP-adres in de Kudu-omgeving
Ga naar de Kudu-omgeving op [sitename].scm.azurewebsites.net/Env
en zoek WEBSITE_PRIVATE_IP
naar .
Zodra we hebben vastgesteld dat de integratie van het virtuele netwerk is geconfigureerd, kunnen we doorgaan met de connectiviteitstest.
Problemen met uitgaande connectiviteit in Windows-apps oplossen
In systeemeigen Windows-apps werken de hulpprogramma's ping, nslookup en tracert niet via de console vanwege beveiligingsbeperkingen (ze werken in aangepaste Windows-containers).
Ga rechtstreeks naar de Kudu-console op [sitename].scm.azurewebsites.net/DebugConsole
.
Als u de DNS-functionaliteit wilt testen, kunt u nameresolver.exegebruiken. De syntaxis is:
nameresolver.exe hostname [optional:DNS Server]
U kunt nameresolver gebruiken om de hostnamen te controleren waar uw app van afhankelijk is. Op deze manier kunt u testen of er iets onjuist is geconfigureerd met uw DNS of misschien geen toegang hebt tot uw DNS-server. U kunt de DNS-server zien die uw app gebruikt in de console door te kijken naar de omgevingsvariabelen WEBSITE_DNS_SERVER en WEBSITE_DNS_ALT_SERVER.
Opmerking
Het hulpprogramma nameresolver.exe werkt momenteel niet in aangepaste Windows-containers.
Als u TCP-connectiviteit met een combinatie van host en poort wilt testen, kunt u tcpping gebruiken. De syntaxis is.
tcpping.exe hostname [optional: port]
Het tcpping-hulpprogramma geeft aan of u een specifieke host en poort kunt bereiken. Het kan alleen succesvol zijn als er een toepassing is die luistert naar de combinatie van host en poort en er netwerktoegang is vanuit uw app naar de opgegeven host en poort.
Problemen met uitgaande connectiviteit in Linux-apps oplossen
Ga rechtstreeks naar Kudu op [sitename].scm.azurewebsites.net
. Selecteer op de pagina Kudu-service de optie Hulpprogramma's>foutopsporingsconsole>CMD.
Als u de DNS-functionaliteit wilt testen, kunt u de opdracht nslookup gebruiken. De syntaxis is:
nslookup hostname [optional:DNS Server]
Afhankelijk van de bovenstaande resultaten kunt u controleren of er iets onjuist is geconfigureerd op uw DNS-server.
Opmerking
Het hulpprogramma nameresolver.exe werkt momenteel niet in Linux-apps.
Als u de connectiviteit wilt testen, kunt u de opdracht Curl gebruiken. De syntaxis is:
curl -v https://hostname
curl hostname:[port]
Fouten opsporen in toegang tot door een virtueel netwerk gehoste resources
Een aantal factoren kan voorkomen dat uw app een specifieke host en poort bereikt. Meestal is dit een van de volgende:
- Een firewall staat in de weg. Als u een firewall in de weg staat, hebt u de TCP-time-out bereikt. De TCP-time-out is in dit geval 21 seconden. Gebruik het tcpping-hulpprogramma om de connectiviteit te testen. TCP-time-outs kunnen worden veroorzaakt door veel dingen buiten firewalls, maar begin daar.
- DNS is niet toegankelijk. De DNS-time-out is drie seconden per DNS-server. Als u twee DNS-servers hebt, is de time-out zes seconden. Gebruik nameresolver om te zien of de DNS werkt. U kunt nslookup niet gebruiken omdat dit niet de DNS gebruikt waarmee uw virtuele netwerk is geconfigureerd. Als het niet toegankelijk is, kan er een firewall of NSG zijn die de toegang tot DNS blokkeert, of kan deze offline zijn. Sommige DNS-architecturen die gebruikmaken van aangepaste DNS-servers kunnen complex zijn en kunnen af en toe time-outs ervaren. Om te bepalen of dit het geval is, kan de omgevingsvariabele
WEBSITE_DNS_ATTEMPTS
worden ingesteld. Zie Naamomzetting (DNS) in App Service voor meer informatie over DNS in App Services.
Als deze items uw problemen niet oplossen, kijkt u eerst naar zaken als:
Integratie van regionaal virtueel netwerk
- Is uw bestemming een niet-RFC1918 adres en hebt u Route All niet ingeschakeld?
- Is er een NSG die uitgaand verkeer van uw integratiesubnet blokkeert?
- Als u Azure ExpressRoute of een VPN gebruikt, is uw on-premises gateway dan geconfigureerd om verkeer terug te sturen naar Azure? Als u eindpunten in uw virtuele netwerk kunt bereiken, maar niet on-premises, controleert u uw routes.
- Hebt u voldoende machtigingen om delegatie in te stellen op het integratiesubnet? Tijdens de configuratie van regionale virtuele netwerkintegratie wordt uw integratiesubnet gedelegeerd aan Microsoft.Web/serverFarms. De gebruikersinterface van VNet-integratie delegeert het subnet automatisch naar Microsoft.Web/serverFarms. Als uw account onvoldoende netwerkmachtigingen heeft om delegatie in te stellen, hebt u iemand nodig die kenmerken kan instellen op uw integratiesubnet om het subnet te delegeren. Als u het integratiesubnet handmatig wilt delegeren, gaat u naar de gebruikersinterface van azure Virtual Network subnet en stelt u delegering in voor Microsoft.Web/serverFarms.
Het opsporen van netwerkproblemen is een uitdaging omdat u niet kunt zien wat de toegang tot een specifieke combinatie van host:poort blokkeert. Enkele oorzaken zijn:
- U hebt een firewall op uw host die toegang tot de toepassingspoort vanaf uw punt-naar-site-IP-bereik voorkomt. Voor kruising van subnetten is vaak openbare toegang vereist.
- Uw doelhost is offline.
- Uw toepassing is niet beschikbaar.
- U had het verkeerde IP-adres of de verkeerde hostnaam.
- Uw toepassing luistert op een andere poort dan u had verwacht. U kunt uw proces-id koppelen aan de luisterpoort met behulp van 'netstat -aon' op de eindpunthost.
- Uw netwerkbeveiligingsgroepen zijn zodanig geconfigureerd dat ze toegang tot uw toepassingshost en -poort vanuit uw punt-naar-site-IP-bereik voorkomen.
U weet niet welk adres uw app daadwerkelijk gebruikt. Dit kan elk adres in het integratiesubnet of het adresbereik punt-naar-site zijn, dus u moet toegang toestaan vanuit het hele adresbereik.
Meer stappen voor foutopsporing zijn:
- Maak verbinding met een virtuele machine in uw virtuele netwerk en probeer van daaruit uw resourcehost:poort te bereiken. Als u wilt testen op TCP-toegang, gebruikt u de PowerShell-opdracht Test-NetConnection. De syntaxis is:
Test-NetConnection hostname [optional: -Port]
- Start een toepassing op een VM en test de toegang tot die host en poort vanuit de console vanuit uw app met behulp van tcpping.
Probleemoplosser voor netwerken
U kunt ook de probleemoplosser voor netwerken gebruiken om de verbindingsproblemen voor de apps in de App Service op te lossen. Als u de probleemoplosser voor netwerken wilt openen, gaat u naar de app-service in de Azure Portal. Selecteer Diagnose en probleem oplossen en zoek vervolgens naar Probleemoplosser voor netwerken.
Opmerking
Het scenario met verbindingsproblemen biedt nog geen ondersteuning voor Linux- of container-apps.
Verbindingsproblemen: hiermee wordt de status van de integratie van het virtuele netwerk gecontroleerd, inclusief het controleren of het privé-IP-adres is toegewezen aan alle exemplaren van het App Service Plan en de DNS-instellingen. Als er geen aangepaste DNS is geconfigureerd, wordt standaard Azure DNS toegepast. U kunt ook tests uitvoeren op een specifiek eindpunt waarmee u de connectiviteit wilt testen.
Configuratieproblemen : deze probleemoplosser controleert of uw subnet geldig is voor integratie van virtuele netwerken.
Probleem met verwijderen van subnet/VNet : met deze probleemoplosser wordt gecontroleerd of uw subnet vergrendelingen heeft en of er ongebruikte koppelingen voor servicekoppelingen zijn die het verwijderen van het VNet/subnet blokkeren.
Netwerktraceringen verzamelen
Het verzamelen van netwerktraceringen kan handig zijn bij het analyseren van problemen. In Azure-app Services worden netwerktraceringen uit het toepassingsproces gehaald. Als u nauwkeurige informatie wilt verkrijgen, reproduceert u het probleem tijdens het starten van de netwerktraceringsverzameling.
Opmerking
Het verkeer van het virtuele netwerk wordt niet vastgelegd in netwerktraceringen.
Windows App Services
Volg deze stappen om netwerktraceringen voor Windows App Services te verzamelen:
- Navigeer in de Azure Portal naar uw web-app.
- Selecteer in het linkernavigatievenster Problemen vaststellen en oplossen.
- Typ in het zoekvak Netwerktracering verzamelen en selecteer Netwerktracering verzamelen om de netwerktraceringsverzameling te starten.
Als u het traceringsbestand wilt ophalen voor elk exemplaar dat een web-app aangaat, gaat u in uw browser naar de Kudu-console voor de web-app (https://<sitename>.scm.azurewebsites.net
). Download het traceringsbestand uit de map C:\home\LogFiles\networktrace of D:\home\LogFiles\networktrace .
Linux App Services
Voer de volgende stappen uit om netwerktraceringen te verzamelen voor Linux App Services die geen aangepaste container gebruiken:
Installeer het
tcpdump
opdrachtregelprogramma door de volgende opdrachten uit te voeren:apt-get update apt install tcpdump
Maak verbinding met de container via het Secure Shell Protocol (SSH).
Identificeer de interface die actief is door de volgende opdracht uit te voeren (bijvoorbeeld
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]
Start de netwerktraceringsverzameling door de volgende opdracht uit te voeren:
root@<hostname>:/home# tcpdump -i eth0 -w networktrace.pcap
Vervang door
eth0
de naam van de werkelijke interface.
Als u het traceringsbestand wilt downloaden, maakt u verbinding met de web-app via methoden zoals Kudu, FTP of een Kudu-API-aanvraag. Hier volgt een voorbeeld van een aanvraag voor het activeren van het downloaden van het bestand:
https://<sitename>.scm.azurewebsites.net/api/vfs/<path to the trace file in the /home directory>/filename
Disclaimerinformatie van derden
De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Feedback-community van Azure.