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 netwerkbeveiligingsgroepbeveiligingsregels (NSG) weer te geven die effectief zijn voor een virtuele machine (VM).

Met NSG's kunt u de typen verkeer beheren die van en naar 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 op een netwerkinterface worden toegepast, zijn een aggregatie van de regels die bestaan in de NSG die is gekoppeld aan een netwerkinterface en het subnet waarin de netwerkinterface zich bevindt. Regels in verschillende NSG's kunnen soms met elkaar conflicteert en van invloed zijn op de netwerkverbinding van een VM. U kunt alle effectieve beveiligingsregels bekijken vanuit NSG's die zijn toegepast op de netwerkinterfaces van uw VM. Als u niet bekend bent met virtueel netwerk, netwerkinterface of NSG-concepten, raadpleegt u Overzicht van virtuele netwerken, Netwerkinterface en Overzicht van netwerkbeveiligingsgroepen.

Scenario

U probeert verbinding te maken met een virtuele machine via poort 80 via internet, maar de verbinding mislukt. Als u wilt bepalen waarom u geen toegang hebt tot poort 80 via 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 VM hebt om de effectieve beveiligingsregels voor weer te geven. Als u geen bestaande VM hebt, implementeert u eerst een virtuele Linux - of Windows-machine om de taken in dit artikel uit te voeren. De voorbeelden in dit artikel zijn voor een VM met de naam myVM met een netwerkinterface met de naam myVMVMNic. De VM en de 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 diagnosticeren.

Diagnose stellen met behulp van Azure Portal

  1. Meld u aan bij Azure Portal met een Azure-account met de benodigde machtigingen.

  2. Voer boven aan de Azure Portal de naam van de virtuele machine in het zoekvak in. Wanneer de naam van de VM wordt weergegeven in de zoekresultaten, selecteert u deze.

  3. Selecteer onder INSTELLINGENde optie Netwerken, zoals wordt weergegeven in de volgende afbeelding:

    Schermopname van de Azure Portal met netwerkinstellingen voor mijn V M V M Nic.

    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 DenyAllInBound voorkomt inkomende communicatie naar de VM via poort 80, vanaf internet, zoals beschreven in het scenario. De regel vermeldt 0.0.0.0/0 voor SOURCE, waaronder internet. Geen enkele andere regel met een hogere prioriteit (lager nummer) staat inkomend verkeer van poort 80 toe. Zie Een probleem oplossen als u wilt toestaan dat poort 80 van internet naar de virtuele machine komt. Zie Netwerkbeveiligingsgroepen voor meer informatie over beveiligingsregels en hoe Azure deze toepast.

    Onderaan de afbeelding ziet u ook REGELS VOOR UITGAANDE POORT. Daaronder staan 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.

  4. Zorg ervoor dat de VM actief is en selecteer vervolgens Effectieve beveiligingsregels, zoals in de vorige afbeelding, om de effectieve beveiligingsregels te zien, zoals weergegeven in de volgende afbeelding:

    Schermopname van het deelvenster Effectieve beveiligingsregels met Downloaden geselecteerd en AllowAzureLoadBalancerInbound Inkomende regel geselecteerd.

    De vermelde regels zijn hetzelfde als in stap 3, maar er zijn verschillende tabbladen 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 wilt downloaden dat alle regels bevat, 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 :

    Schermopname met adresvoorvoegsels voor AllowAzureLoadBalancerInbound ingevoerd.

    Hoewel de servicetag AzureLoadBalancer slechts één voorvoegsel vertegenwoordigt, vertegenwoordigen andere servicetags meerdere voorvoegsels.

  5. 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 voor elke netwerkinterface verschillen.

    Als u de regels voor de netwerkinterface myVMVMNic2 wilt zien, selecteert u deze. Zoals u kunt zien in de volgende afbeelding, heeft de netwerkinterface dezelfde regels die aan het subnet zijn gekoppeld als de netwerkinterface myVMVMNic , 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.

    Schermopname van de Azure Portal met netwerkinstellingen voor mijn V M V M Nic 2.

    In tegenstelling tot de netwerkinterface myVMVMNic , is er geen netwerkbeveiligingsgroep gekoppeld aan de netwerkinterface myVMVMNic2 . Aan elke netwerkinterface en elk subnet kan nul of één NSG zijn gekoppeld. De NSG 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 wilt.

Hoewel effectieve beveiligingsregels zijn bekeken via de virtuele machine, kunt u ook effectieve beveiligingsregels bekijken via een persoon:

Diagnose stellen met behulp van PowerShell

Notitie

U wordt aangeraden 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 volgende opdrachten uitvoeren in de Azure Cloud Shell of door PowerShell uit te voeren vanaf uw computer. De 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 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 uitvoeren 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 met de naam myResourceGroup bevindt:

Get-AzEffectiveNetworkSecurityGroup `
  -NetworkInterfaceName myVMVMNic `
  -ResourceGroupName myResourceGroup

De uitvoer wordt geretourneerd in json-indeling. Zie Uitvoer van 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 van de VM waaraan de netwerkinterface is gekoppeld, retourneren de volgende opdrachten de id's van alle netwerkinterfaces die zijn gekoppeld aan een VM:

$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.

Diagnose stellen met behulp van Azure CLI

Als u Azure CLI-opdrachten gebruikt om taken in dit artikel te voltooien, voert u de opdrachten uit in de Azure Cloud Shell of door de Azure CLI uit te voeren 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. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren. Als u de Azure CLI lokaal uitvoert, moet u ook Azure uitvoeren az login en u aanmelden bij Azure 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 met de naam myResourceGroup bevindt:

az network nic list-effective-nsg \
  --name myVMVMNic \
  --resource-group myResourceGroup

De uitvoer wordt geretourneerd in json-indeling. Zie Uitvoer van 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 van de VM waaraan de netwerkinterface is gekoppeld, retourneren de volgende opdrachten de id's van alle netwerkinterfaces die zijn gekoppeld aan een VM:

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.

Uitvoer van opdracht interpreteren

Ongeacht of u PowerShell of de Azure CLI hebt gebruikt om het probleem vast te stellen, ontvangt u uitvoer met de volgende informatie:

  • 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 is gekoppeld of ontkoppeld direct 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 uitvoer van de opdracht.
  • EffectiveSecurityRules: een uitleg van elke eigenschap wordt beschreven in Een beveiligingsregel maken. Regelnamen die vooraf gaan aan defaultSecurityRules/ zijn standaardbeveiligingsregels die in elke NSG aanwezig zijn. Regelnamen die worden 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 u dubbele regels in de uitvoer ziet, komt dit doordat er 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 in beide NSG's hetzelfde zijn.

De regel met de naam defaultSecurityRules/DenyAllInBound voorkomt inkomende communicatie naar de VM via poort 80, vanaf internet, zoals beschreven in het scenario. Geen enkele andere regel met een hogere prioriteit (lager nummer) staat inkomend verkeer van internet toe via poort 80.

Een probleem oplossen

Of u nu de Azure-portal, PowerShell of de Azure CLI gebruikt om het probleem in het scenario in dit artikel vast te stellen, de oplossing is om een netwerkbeveiligingsregel te maken met de volgende eigenschappen:

Eigenschap Waarde
Bron Elk
Poortbereiken van bron Alle
Doel Het IP-adres van de VIRTUELE machine, een bereik van IP-adressen of alle adressen in het subnet.
Poortbereiken van doel 80
Protocol TCP
Bewerking Toestaan
Prioriteit 100
Naam Allow-HTTP-All

Nadat u de regel hebt gemaakt, is inkomend verkeer via poort 80 van 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 vervolgens de regels verwerkt in de NSG die is gekoppeld aan de netwerkinterface. Als er een NSG is gekoppeld aan de netwerkinterface en het subnet, moet de poort geopend zijn in beide NSG's, zodat het verkeer de VIRTUELE machine kan bereiken. Om beheer- en communicatieproblemen te vergemakkelijken, raden we u aan een NSG te koppelen aan een subnet in plaats van afzonderlijke netwerkinterfaces. Als voor VM's in een subnet verschillende beveiligingsregels nodig zijn, kunt u de netwerkinterfaces lid maken van een toepassingsbeveiligingsgroep (ASG) en een ASG opgeven als bron en 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 binnenkomend 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 NSG is gekoppeld aan de netwerkinterface van de VM en, of, subnet, en als 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 vanaf en uitgaande toegang tot overal. Als de VM 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 van of naar een VM is toegestaan, gebruikt u de functie IP-stroom controleren van Azure Network Watcher. Ip-stroomverificatie geeft aan of verkeer is toegestaan of geweigerd. Als dit wordt geweigerd, geeft IP-stroomcontrole aan welke beveiligingsregel het verkeer weigert.
  • Als er geen beveiligingsregels zijn waardoor de netwerkverbinding van een VM mislukt, kan het probleem worden veroorzaakt door:
    • Firewallsoftware die wordt uitgevoerd in het besturingssysteem van de VM
    • 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 internetverkeer via een tunnel naar een virtueel apparaat of on-premises afdwingt, kunt u mogelijk geen verbinding maken met de virtuele machine via internet. Zie Een probleem met netwerkverkeersroutering van virtuele machines vaststellen voor meer informatie over het vaststellen van routeproblemen die de verkeersstroom van de VM kunnen belemmeren.

Volgende stappen