Diagnose uitvoeren voor een probleem met netwerkverkeersfilters op een virtuele machine
In dit artikel leert u hoe u een probleem met een netwerkverkeersfilter kunt vaststellen door de beveiligingsregels van de netwerkbeveiligingsgroep (NSG) te bekijken die effectief zijn voor een virtuele machine (VM).
Met NSG's kunt u de typen verkeer beheren die in en uit een VIRTUELE machine stromen. U kunt een NSG koppelen aan een subnet in een virtueel Azure-netwerk, een netwerkinterface die is gekoppeld aan een virtuele machine of beide. De effectieve beveiligingsregels die worden toegepast op een netwerkinterface zijn een aggregatie van de regels die bestaan in de NSG die zijn gekoppeld aan een netwerkinterface en het subnet waarin de netwerkinterface zich bevindt. Regels in verschillende NSG's kunnen soms met elkaar conflicteren en invloed hebben op de netwerkconnectiviteit van een VIRTUELE machine. U kunt alle effectieve beveiligingsregels bekijken van NSG's die worden toegepast op de netwerkinterfaces van uw VM. Als u niet bekend bent met de concepten van virtueel netwerk, netwerkinterface of NSG, raadpleegt u het overzicht van virtuele netwerken, netwerkinterface en netwerkbeveiligingsgroepen.
Scenario
U probeert via poort 80 verbinding te maken met een virtuele machine via internet, maar de verbinding mislukt. Als u wilt bepalen waarom u geen toegang hebt tot poort 80 vanaf internet, kunt u de effectieve beveiligingsregels voor een netwerkinterface bekijken met behulp van Azure Portal, PowerShell of de Azure CLI.
Bij de volgende stappen wordt ervan uitgegaan dat u een bestaande VIRTUELE machine hebt om de effectieve beveiligingsregels voor te bekijken. Als u geen bestaande VM hebt, implementeert u eerst een Linux - of Windows-VM om de taken in dit artikel te voltooien. De voorbeelden in dit artikel zijn voor een VIRTUELE machine met de naam myVM met een netwerkinterface met de naam myVMVMNic. De VM en netwerkinterface bevinden zich in een resourcegroep met de naam myResourceGroup en bevinden zich in de regio VS - oost. Wijzig de waarden in de stappen, indien van toepassing, voor de VM waarvoor u het probleem wilt vaststellen.
Diagnoses uitvoeren met Behulp van Azure Portal
Meld u aan bij Azure Portal met een Azure-account met de benodigde machtigingen.
Voer bovenaan Azure Portal de naam van de virtuele machine in het zoekvak in. Wanneer de naam van de virtuele machine wordt weergegeven in de zoekresultaten, selecteert u deze.
Selecteer Onder INSTELLINGEN de optie Netwerken, zoals wordt weergegeven in de volgende afbeelding:
De regels die u in de vorige afbeelding ziet, zijn voor een netwerkinterface met de naam myVMVMNic. U ziet dat er REGELS voor BINNENKOMENDE POORT zijn voor de netwerkinterface van twee verschillende netwerkbeveiligingsgroepen:
- mySubnetNSG: gekoppeld aan het subnet waarin de netwerkinterface zich bevindt.
- myVMNSG: gekoppeld aan de netwerkinterface in de VM met de naam myVMVMNic.
De regel met de naam DenyAllInBound voorkomt inkomende communicatie naar de VIRTUELE machine via poort 80, zoals beschreven in het scenario. De regel bevat 0.0.0.0/0 voor SOURCE, waaronder internet. Geen andere regel met een hogere prioriteit (lager getal) staat inkomend verkeer van poort 80 toe. Zie Een probleem oplossen om poort 80 binnenkomend naar de virtuele machine vanaf internet toe te staan. Zie Netwerkbeveiligingsgroepen voor meer informatie over beveiligingsregels en hoe Azure deze toepast.
Onder aan de afbeelding ziet u ook REGELS VOOR UITGAANDE POORT. Onder dat zijn de regels voor uitgaande poort voor de netwerkinterface. Hoewel in de afbeelding slechts vier binnenkomende regels voor elke NSG worden weergegeven, hebben uw NSG's mogelijk veel meer dan vier regels. In de afbeelding ziet u VirtualNetwork onder SOURCE en DESTINATION en AzureLoadBalancer onder SOURCE. VirtualNetwork en AzureLoadBalancer zijn servicetags. Servicetags vertegenwoordigen een groep IP-adresvoorvoegsels om de complexiteit voor het maken van beveiligingsregels te minimaliseren.
Zorg ervoor dat de VM de status Actief heeft en selecteer vervolgens Effectieve beveiligingsregels, zoals weergegeven in de vorige afbeelding, om de effectieve beveiligingsregels weer te geven, weergegeven in de volgende afbeelding:
De vermelde regels zijn hetzelfde als u in stap 3 hebt gezien, hoewel er verschillende tabbladen zijn voor de NSG die is gekoppeld aan de netwerkinterface en het subnet. Zoals u in de afbeelding kunt zien, worden alleen de eerste 50 regels weergegeven. Als u een .csv-bestand met alle regels wilt downloaden, selecteert u Downloaden.
Als u wilt zien welke voorvoegsels elke servicetag vertegenwoordigt, selecteert u een regel, zoals de regel Met de naam AllowAzureLoadBalancerInbound. In de volgende afbeelding ziet u de voorvoegsels voor de servicetag AzureLoadBalancer :
Hoewel de servicetag AzureLoadBalancer slechts één voorvoegsel vertegenwoordigt, vertegenwoordigen andere servicetags verschillende voorvoegsels.
In de vorige stappen zijn de beveiligingsregels voor een netwerkinterface met de naam myVMVMNic weergegeven, maar u hebt ook een netwerkinterface met de naam myVMVMNic2 in een aantal van de vorige afbeeldingen gezien. Aan de VM in dit voorbeeld zijn twee netwerkinterfaces gekoppeld. De effectieve beveiligingsregels kunnen verschillen voor elke netwerkinterface.
Als u de regels voor de netwerkinterface myVMVMNic2 wilt zien, selecteert u deze. Zoals wordt weergegeven in de volgende afbeelding, heeft de netwerkinterface dezelfde regels gekoppeld aan het subnet als de myVMVMNic-netwerkinterface , omdat beide netwerkinterfaces zich in hetzelfde subnet bevinden. Wanneer u een NSG aan een subnet koppelt, worden de bijbehorende regels toegepast op alle netwerkinterfaces in het subnet.
In tegenstelling tot de myVMVMNic-netwerkinterface heeft de myVMVMNic2-netwerkinterface geen netwerkbeveiligingsgroep eraan gekoppeld. Aan elke netwerkinterface en elk subnet kan nul of één NSG zijn gekoppeld. De netwerkbeveiligingsgroep die aan elke netwerkinterface of elk subnet is gekoppeld, kan hetzelfde of verschillend zijn. U kunt dezelfde netwerkbeveiligingsgroep koppelen aan zoveel netwerkinterfaces en subnetten als u kiest.
Hoewel effectieve beveiligingsregels zijn bekeken via de VIRTUELE machine, kunt u ook effectieve beveiligingsregels bekijken via een afzonderlijk:
- Netwerkinterface: informatie over het weergeven van een netwerkinterface.
- NSG: informatie over het weergeven van een NSG.
Diagnose stellen met behulp van PowerShell
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
U kunt de opdrachten uitvoeren die volgen in De Azure Cloud Shell of door PowerShell uit te voeren vanaf uw computer. Azure Cloud Shell is een gratis interactieve shell. In deze shell zijn algemene Azure-hulpprogramma's vooraf geïnstalleerd en geconfigureerd voor gebruik met uw account. Als u PowerShell vanaf uw computer uitvoert, hebt u de Azure PowerShell-module versie 1.0.0 of hoger nodig. Voer Get-Module -ListAvailable Az
deze uit op uw computer om de geïnstalleerde versie te vinden. Als u PowerShell wilt upgraden, raadpleegt u De Azure PowerShell-module installeren. Als u PowerShell lokaal uitvoert, moet u ook worden uitgevoerd Connect-AzAccount
om u aan te melden bij Azure met een account met de benodigde machtigingen].
Haal de effectieve beveiligingsregels voor een netwerkinterface op met Get-AzEffectiveNetworkSecurityGroup. In het volgende voorbeeld worden de effectieve beveiligingsregels opgehaald voor een netwerkinterface met de naam myVMVMNic, die zich in een resourcegroep bevindt met de naam myResourceGroup:
Get-AzEffectiveNetworkSecurityGroup `
-NetworkInterfaceName myVMVMNic `
-ResourceGroupName myResourceGroup
Uitvoer wordt geretourneerd in json-indeling. Zie de uitvoer van de opdracht interpreteren voor meer informatie over de uitvoer. Uitvoer wordt alleen geretourneerd als een NSG is gekoppeld aan de netwerkinterface, het subnet waarin de netwerkinterface zich bevindt of beide. De VM moet de status Actief hebben. Een VM kan meerdere netwerkinterfaces hebben waarop verschillende NSG's zijn toegepast. Voer bij het oplossen van problemen de opdracht uit voor elke netwerkinterface.
Als u nog steeds een verbindingsprobleem ondervindt, raadpleegt u aanvullende diagnose en overwegingen.
Als u de naam van een netwerkinterface niet weet, maar wel de naam weet van de VIRTUELE machine waaraan de netwerkinterface is gekoppeld, retourneren de volgende opdrachten de id's van alle netwerkinterfaces die zijn gekoppeld aan een VIRTUELE machine:
$VM = Get-AzVM -Name myVM -ResourceGroupName myResourceGroup
$VM.NetworkProfile
U ontvangt uitvoer die vergelijkbaar is met het volgende voorbeeld:
NetworkInterfaces
-----------------
{/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic
In de vorige uitvoer is de naam van de netwerkinterface myVMVMNic.
Diagnoses uitvoeren met Behulp van Azure CLI
Als u Azure CLI-opdrachten gebruikt om taken in dit artikel uit te voeren, voert u de opdrachten uit in Azure Cloud Shell of voert u de Azure CLI uit vanaf uw computer. Voor dit artikel is Azure CLI versie 2.0.32 of hoger vereist. Voer az --version
uit om te kijken welke versie is geïnstalleerd. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren. Als u de Azure CLI lokaal uitvoert, moet u ook Azure uitvoeren az login
en aanmelden met een account met de benodigde machtigingen.
Haal de effectieve beveiligingsregels voor een netwerkinterface op met az network nic list-effective-nsg. In het volgende voorbeeld worden de effectieve beveiligingsregels opgehaald voor een netwerkinterface met de naam myVMVMNic die zich in een resourcegroep bevindt met de naam myResourceGroup:
az network nic list-effective-nsg \
--name myVMVMNic \
--resource-group myResourceGroup
Uitvoer wordt geretourneerd in json-indeling. Zie de uitvoer van de opdracht interpreteren voor meer informatie over de uitvoer. Uitvoer wordt alleen geretourneerd als een NSG is gekoppeld aan de netwerkinterface, het subnet waarin de netwerkinterface zich bevindt of beide. De VM moet de status Actief hebben. Een VM kan meerdere netwerkinterfaces hebben waarop verschillende NSG's zijn toegepast. Voer bij het oplossen van problemen de opdracht uit voor elke netwerkinterface.
Als u nog steeds een verbindingsprobleem ondervindt, raadpleegt u aanvullende diagnose en overwegingen.
Als u de naam van een netwerkinterface niet weet, maar wel de naam weet van de VIRTUELE machine waaraan de netwerkinterface is gekoppeld, retourneren de volgende opdrachten de id's van alle netwerkinterfaces die zijn gekoppeld aan een VIRTUELE machine:
az vm show \
--name myVM \
--resource-group myResourceGroup
In de geretourneerde uitvoer ziet u informatie die vergelijkbaar is met het volgende voorbeeld:
"networkProfile": {
"additionalProperties": {},
"networkInterfaces": [
{
"additionalProperties": {},
"id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic",
"primary": true,
"resourceGroup": "myResourceGroup"
},
In de vorige uitvoer is de naam van de netwerkinterface myVMVMNic-interface.
Opdrachtuitvoer interpreteren
Ongeacht of u PowerShell of de Azure CLI hebt gebruikt om het probleem vast te stellen, ontvangt u uitvoer die de volgende informatie bevat:
- NetworkSecurityGroup: de id van de netwerkbeveiligingsgroep.
- Koppeling: Of de netwerkbeveiligingsgroep is gekoppeld aan een NetworkInterface of Subnet. Als een NSG aan beide is gekoppeld, wordt de uitvoer geretourneerd met NetworkSecurityGroup, Association en EffectiveSecurityRules voor elke NSG. Als de NSG direct is gekoppeld of ontkoppeld voordat de opdracht wordt uitgevoerd om de effectieve beveiligingsregels weer te geven, moet u mogelijk een paar seconden wachten totdat de wijziging wordt weergegeven in de opdrachtuitvoer.
- EffectiveSecurityRules: Een uitleg van elke eigenschap wordt beschreven in Een beveiligingsregel maken. Regelnamen voorafgegaan door defaultSecurityRules/ zijn standaardbeveiligingsregels die in elke NSG bestaan. Regelnamen voorafgegaan door securityRules/ zijn regels die u hebt gemaakt. Regels die een servicetag opgeven, zoals Internet, VirtualNetwork en AzureLoadBalancer voor de eigenschappen destinationAddressPrefix of sourceAddressPrefix, hebben ook waarden voor de eigenschap expandedDestinationAddressPrefix. De eigenschap expandedDestinationAddressPrefix bevat alle adresvoorvoegsels die worden vertegenwoordigd door de servicetag.
Als er dubbele regels worden weergegeven in de uitvoer, komt dit doordat een NSG is gekoppeld aan zowel de netwerkinterface als het subnet. Beide NSG's hebben dezelfde standaardregels en hebben mogelijk extra dubbele regels als u uw eigen regels hebt gemaakt die hetzelfde zijn in beide NSG's.
De regel met de naam defaultSecurityRules/DenyAllInBound voorkomt inkomende communicatie met de VIRTUELE machine via poort 80, via internet, zoals beschreven in het scenario. Met geen andere regel met een hogere prioriteit (lager getal) is poort 80 binnenkomend vanaf internet toegestaan.
Een probleem oplossen
Of u nu Azure Portal, PowerShell of de Azure CLI gebruikt om het probleem vast te stellen dat in het scenario in dit artikel wordt gepresenteerd, de oplossing is het maken van een netwerkbeveiligingsregel met de volgende eigenschappen:
Eigenschappen | Waarde |
---|---|
Bron | Alle |
Poortbereiken van bron | Alle |
Bestemming | Het IP-adres van de virtuele machine, een bereik van IP-adressen of alle adressen in het subnet. |
Poortbereiken van doel | 80 |
Protocol | TCP |
Actie | Toestaan |
Prioriteit | 100 |
Naam | Allow-HTTP-All |
Nadat u de regel hebt gemaakt, is poort 80 binnenkomend vanaf internet toegestaan, omdat de prioriteit van de regel hoger is dan de standaardbeveiligingsregel met de naam DenyAllInBound, waardoor het verkeer wordt geweigerd. Meer informatie over het maken van een beveiligingsregel. Als er verschillende NSG's zijn gekoppeld aan zowel de netwerkinterface als het subnet, moet u dezelfde regel maken in beide NSG's.
Wanneer Azure binnenkomend verkeer verwerkt, worden regels verwerkt in de NSG die is gekoppeld aan het subnet (als er een gekoppelde NSG is) en worden de regels in de NSG verwerkt die aan de netwerkinterface zijn gekoppeld. Als er een netwerkbeveiligingsgroep is gekoppeld aan de netwerkinterface en het subnet, moet de poort zijn geopend in beide NSG's, zodat het verkeer de VIRTUELE machine kan bereiken. Om beheer- en communicatieproblemen te vereenvoudigen, raden we u aan een NSG te koppelen aan een subnet, in plaats van afzonderlijke netwerkinterfaces. Als VM's in een subnet andere beveiligingsregels nodig hebben, kunt u de netwerkinterfaces van een toepassingsbeveiligingsgroep (ASG) maken en een ASG opgeven als de bron en het doel van een beveiligingsregel. Meer informatie over toepassingsbeveiligingsgroepen.
Als u nog steeds communicatieproblemen ondervindt, raadpleegt u Overwegingen en Aanvullende diagnose.
Overwegingen
Houd rekening met de volgende punten bij het oplossen van verbindingsproblemen:
- Standaardbeveiligingsregels blokkeren binnenkomende toegang vanaf internet en staan alleen inkomend verkeer van het virtuele netwerk toe. Als u inkomend verkeer van internet wilt toestaan, voegt u beveiligingsregels toe met een hogere prioriteit dan standaardregels. Meer informatie over standaardbeveiligingsregels of het toevoegen van een beveiligingsregel.
- Als u virtuele netwerken hebt gekoppeld, wordt de VIRTUAL_NETWORK servicetag standaard automatisch uitgebreid met voorvoegsels voor gekoppelde virtuele netwerken. Als u problemen met betrekking tot peering van virtuele netwerken wilt oplossen, kunt u de voorvoegsels weergeven in de lijst ExpandedAddressPrefix . Meer informatie over peering van virtuele netwerken en servicetags.
- Effectieve beveiligingsregels worden alleen weergegeven voor een netwerkinterface als er een netwerkbeveiligingsgroep is gekoppeld aan de netwerkinterface van de VIRTUELE machine en, of, subnet, en of de VM de status Actief heeft.
- Als er geen NSG's zijn gekoppeld aan de netwerkinterface of het subnet en u een openbaar IP-adres hebt toegewezen aan een virtuele machine, zijn alle poorten geopend voor binnenkomende toegang van en uitgaande toegang tot overal. Als de VIRTUELE machine een openbaar IP-adres heeft, raden we u aan een NSG toe te passen op het subnet van de netwerkinterface.
Aanvullende diagnose
- Als u een snelle test wilt uitvoeren om te bepalen of verkeer naar of van een VIRTUELE machine is toegestaan, gebruikt u de mogelijkheid voor IP-stroomverificatie van Azure Network Watcher. Ip-stroomverificatie geeft aan of verkeer is toegestaan of geweigerd. Als dit wordt geweigerd, geeft ip-stroomverificatie aan welke beveiligingsregel het verkeer weigert.
- Als er geen beveiligingsregels zijn die ervoor zorgen dat de netwerkverbinding van een virtuele machine mislukt, kan het probleem worden veroorzaakt door:
- Firewallsoftware die wordt uitgevoerd binnen het besturingssysteem van de VIRTUELE machine
- Routes die zijn geconfigureerd voor virtuele apparaten of on-premises verkeer. Internetverkeer kan worden omgeleid naar uw on-premises netwerk via geforceerde tunneling. Als u tunnelinternetverkeer naar een virtueel apparaat of on-premises dwingt, kunt u mogelijk geen verbinding maken met de virtuele machine via internet. Als u wilt weten hoe u routeproblemen kunt diagnosticeren die de verkeersstroom van de VIRTUELE machine kunnen belemmeren, raadpleegt u Diagnose van een routeringsprobleem in het netwerkverkeer van een virtuele machine.
Volgende stappen
- Meer informatie over alle taken, eigenschappen en instellingen voor een netwerkbeveiligingsgroep en beveiligingsregels.
- Meer informatie over standaardbeveiligingsregels, servicetags en hoe Azure beveiligingsregels verwerkt voor inkomend en uitgaand verkeer voor een virtuele machine.