Dela via


Diagnostisera problem med filtreringen av nätverkstrafik på virtuella datorer

I den här artikeln får du lära dig hur du diagnostiserar ett problem med nätverkstrafikfilter genom att visa säkerhetsreglerna för nätverkssäkerhetsgruppen (NSG) som är effektiva för en virtuell dator (VM).

Med NSG:er kan du styra vilka typer av trafik som flödar in och ut från en virtuell dator. Du kan associera en NSG till ett undernät i ett virtuellt Azure-nätverk, ett nätverksgränssnitt som är kopplat till en virtuell dator eller båda. De effektiva säkerhetsregler som tillämpas på ett nätverksgränssnitt är en aggregering av de regler som finns i den NSG som är associerad med ett nätverksgränssnitt och det undernät som nätverksgränssnittet finns i. Regler i olika NSG:er kan ibland vara i konflikt med varandra och påverka en virtuell dators nätverksanslutning. Du kan visa alla effektiva säkerhetsregler från NSG:er som tillämpas på den virtuella datorns nätverksgränssnitt. Om du inte är bekant med begreppen virtuellt nätverk, nätverksgränssnitt eller NSG kan du läsa Översikt över virtuella nätverk, Nätverksgränssnitt och Nätverkssäkerhetsgrupper.

Scenario

Du försöker ansluta till en virtuell dator via port 80 från Internet, men anslutningen misslyckas. För att avgöra varför du inte kan komma åt port 80 från Internet kan du visa de effektiva säkerhetsreglerna för ett nätverksgränssnitt med hjälp av Azure-portalen, PowerShell eller Azure CLI.

Stegen som följer förutsätter att du har en befintlig virtuell dator att visa gällande säkerhetsregler för. Om du inte har någon befintlig virtuell dator distribuerar du först en virtuell Linux - eller Windows-dator för att slutföra uppgifterna i den här artikeln med. Exemplen i den här artikeln är för en virtuell dator med namnet myVM med ett nätverksgränssnitt med namnet myVMVMNic. Den virtuella datorn och nätverksgränssnittet finns i en resursgrupp med namnet myResourceGroup och finns i regionen USA , östra. Ändra värdena i stegen efter behov för den virtuella dator som du diagnostiserar problemet för.

Diagnostisera med Hjälp av Azure-portalen

  1. Logga in på Azure-portalen med ett Azure-konto som har nödvändiga behörigheter.

  2. Överst i Azure-portalen anger du namnet på den virtuella datorn i sökrutan. När namnet på den virtuella datorn visas i sökresultatet väljer du det.

  3. Under INSTÄLLNINGAR väljer du Nätverk, enligt följande bild:

    Skärmbild som visar Azure-portalen med nätverksinställningar för mitt V M V M Nic.

    De regler som visas i föregående bild är för ett nätverksgränssnitt med namnet myVMVMNic. Du ser att det finns REGLER för INKOMMANDE PORTAR för nätverksgränssnittet från två olika nätverkssäkerhetsgrupper:

    • mySubnetNSG: Associerad till det undernät som nätverksgränssnittet finns i.
    • myVMNSG: Associerad med nätverksgränssnittet på den virtuella datorn med namnet myVMVMNic.

    Regeln med namnet DenyAllInBound är det som förhindrar inkommande kommunikation till den virtuella datorn via port 80, från Internet, enligt beskrivningen i scenariot. Regeln visar 0.0.0.0/0 för SOURCE, som innehåller Internet. Ingen annan regel med högre prioritet (lägre nummer) tillåter inkommande port 80. Information om hur du tillåter inkommande port 80 till den virtuella datorn från Internet finns i Lösa ett problem. Mer information om säkerhetsregler och hur Azure tillämpar dem finns i Nätverkssäkerhetsgrupper.

    Längst ned i bilden visas även REGLER för UTGÅENDE PORT. Under det finns de utgående portreglerna för nätverksgränssnittet. Även om bilden bara visar fyra regler för inkommande trafik för varje NSG kan dina NSG:er ha många fler än fyra regler. På bilden ser du VirtualNetwork under KÄLLA och DESTINATION och AzureLoadBalancer under KÄLLA. VirtualNetwork och AzureLoadBalancer är tjänsttaggar. Tjänsttaggar representerar en grupp MED IP-adressprefix för att minimera komplexiteten vid skapande av säkerhetsregler.

  4. Kontrollera att den virtuella datorn är i körningstillståndet och välj sedan Gällande säkerhetsregler, som du såg i föregående bild, för att se gällande säkerhetsregler som visas i följande bild:

    Skärmbild som visar fönstret Gällande säkerhetsregler med Nedladdning valt och AllowAzureLoadBalancerInbound Inbound rule vald.

    Reglerna i listan är desamma som du såg i steg 3, även om det finns olika flikar för den NSG som är associerad med nätverksgränssnittet och undernätet. Som du ser i bilden visas endast de första 50 reglerna. Om du vill ladda ned en .csv fil som innehåller alla regler väljer du Ladda ned.

    Om du vill se vilka prefix som varje tjänsttagg representerar väljer du en regel, till exempel regeln med namnet AllowAzureLoadBalancerInbound. Följande bild visar prefixen för tjänsttaggen AzureLoadBalancer :

    Skärmbild som visar adressprefix för AllowAzureLoadBalancerInbound angivet.

    Även om AzureLoadBalancer-tjänsttaggen bara representerar ett prefix representerar andra tjänsttaggar flera prefix.

  5. Föregående steg visade säkerhetsreglerna för ett nätverksgränssnitt med namnet myVMVMNic, men du har också sett ett nätverksgränssnitt med namnet myVMVMNic2 i några av de föregående bilderna. Den virtuella datorn i det här exemplet har två nätverksgränssnitt kopplade till sig. De effektiva säkerhetsreglerna kan vara olika för varje nätverksgränssnitt.

    Om du vill se reglerna för nätverksgränssnittet myVMVMNic2 väljer du det. Som du ser på bilden nedan har nätverksgränssnittet samma regler som är associerade med dess undernät som myVMVMNic-nätverksgränssnittet , eftersom båda nätverksgränssnitten finns i samma undernät. När du associerar en NSG till ett undernät tillämpas dess regler på alla nätverksgränssnitt i undernätet.

    Skärmbild som visar Azure-portalen med nätverksinställningar för min V M V M Nic 2.

    Till skillnad från myVMVMNic-nätverksgränssnittet har nätverksgränssnittet myVMVMNic2 ingen nätverkssäkerhetsgrupp associerad med det. Varje nätverksgränssnitt och undernät kan ha noll eller en NSG associerad med det. NSG:n som är associerad med varje nätverksgränssnitt eller undernät kan vara samma eller olika. Du kan associera samma nätverkssäkerhetsgrupp med så många nätverksgränssnitt och undernät som du väljer.

Även om effektiva säkerhetsregler visades via den virtuella datorn kan du också visa effektiva säkerhetsregler via en enskild person:

Diagnostisera med Hjälp av PowerShell

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Du kan köra kommandona som följer i Azure Cloud Shell eller genom att köra PowerShell från datorn. Azure Cloud Shell är ett kostnadsfritt interaktivt gränssnitt. Den har vanliga Azure-verktyg förinstallerat och har konfigurerats för användning med ditt konto. Om du kör PowerShell från datorn behöver du Azure PowerShell-modulen version 1.0.0 eller senare. Kör Get-Module -ListAvailable Az på datorn för att hitta den installerade versionen. Om du behöver uppgradera kan du läsa Install Azure PowerShell module (Installera Azure PowerShell-modul). Om du kör PowerShell lokalt måste du också köra Connect-AzAccount för att logga in på Azure med ett konto som har nödvändiga behörigheter].

Hämta de effektiva säkerhetsreglerna för ett nätverksgränssnitt med Get-AzEffectiveNetworkSecurityGroup. I följande exempel hämtas de effektiva säkerhetsreglerna för ett nätverksgränssnitt med namnet myVMVMNic, som finns i en resursgrupp med namnet myResourceGroup:

Get-AzEffectiveNetworkSecurityGroup `
  -NetworkInterfaceName myVMVMNic `
  -ResourceGroupName myResourceGroup

Utdata returneras i json-format. Information om utdata finns i tolka kommandoutdata. Utdata returneras endast om en NSG är associerad med nätverksgränssnittet, undernätet som nätverksgränssnittet finns i eller båda. Den virtuella datorn måste vara i körningstillståndet. En virtuell dator kan ha flera nätverksgränssnitt med olika NSG:er tillämpade. När du felsöker kör du kommandot för varje nätverksgränssnitt.

Om du fortfarande har ett anslutningsproblem kan du läsa mer om diagnos och överväganden.

Om du inte känner till namnet på ett nätverksgränssnitt, men vet namnet på den virtuella dator som nätverksgränssnittet är kopplat till, returnerar följande kommandon ID:n för alla nätverksgränssnitt som är kopplade till en virtuell dator:

$VM = Get-AzVM -Name myVM -ResourceGroupName myResourceGroup
$VM.NetworkProfile

Du får utdata som liknar följande exempel:

NetworkInterfaces
-----------------
{/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic

I föregående utdata är nätverksgränssnittets namn myVMVMNic.

Diagnostisera med Hjälp av Azure CLI

Om du använder Azure CLI-kommandon för att slutföra uppgifter i den här artikeln kör du antingen kommandona i Azure Cloud Shell eller genom att köra Azure CLI från datorn. Den här artikeln kräver Azure CLI version 2.0.32 eller senare. Kör az --version för att hitta den installerade versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI. Om du kör Azure CLI lokalt måste du också köra az login och logga in på Azure med ett konto som har nödvändiga behörigheter.

Hämta de effektiva säkerhetsreglerna för ett nätverksgränssnitt med az network nic list-effective-nsg. I följande exempel hämtas de effektiva säkerhetsreglerna för ett nätverksgränssnitt med namnet myVMVMNic som finns i en resursgrupp med namnet myResourceGroup:

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

Utdata returneras i json-format. Information om utdata finns i tolka kommandoutdata. Utdata returneras endast om en NSG är associerad med nätverksgränssnittet, undernätet som nätverksgränssnittet finns i eller båda. Den virtuella datorn måste vara i körningstillståndet. En virtuell dator kan ha flera nätverksgränssnitt med olika NSG:er tillämpade. När du felsöker kör du kommandot för varje nätverksgränssnitt.

Om du fortfarande har ett anslutningsproblem kan du läsa mer om diagnos och överväganden.

Om du inte känner till namnet på ett nätverksgränssnitt, men vet namnet på den virtuella dator som nätverksgränssnittet är kopplat till, returnerar följande kommandon ID:n för alla nätverksgränssnitt som är kopplade till en virtuell dator:

az vm show \
  --name myVM \
  --resource-group myResourceGroup

I de returnerade utdata ser du information som liknar följande exempel:

"networkProfile": {
    "additionalProperties": {},
    "networkInterfaces": [
      {
        "additionalProperties": {},
        "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic",
        "primary": true,
        "resourceGroup": "myResourceGroup"
      },

I föregående utdata är nätverksgränssnittets namn myVMVMNic-gränssnittet.

Tolka kommandoutdata

Oavsett om du använde PowerShell eller Azure CLI för att diagnostisera problemet får du utdata som innehåller följande information:

  • NetworkSecurityGroup: ID för nätverkssäkerhetsgruppen.
  • Association: Om nätverkssäkerhetsgruppen är associerad med ett NetworkInterface eller undernät. Om en NSG är associerad med båda returneras utdata med NetworkSecurityGroup, Association och EffectiveSecurityRules för varje NSG. Om NSG:n är associerad eller avassocierad omedelbart innan du kör kommandot för att visa de effektiva säkerhetsreglerna kan du behöva vänta några sekunder på att ändringen ska återspeglas i kommandoutdata.
  • EffectiveSecurityRules: En förklaring av varje egenskap beskrivs i Skapa en säkerhetsregel. Regelnamn som föregås av defaultSecurityRules/ är standardsäkerhetsregler som finns i varje NSG. Regelnamn som föregås av securityRules/ är regler som du har skapat. Regler som anger en tjänsttagg, till exempel Internet, VirtualNetwork och AzureLoadBalancer för egenskaperna destinationAddressPrefix eller sourceAddressPrefix , har också värden för egenskapen expandedDestinationAddressPrefix . Egenskapen expandedDestinationAddressPrefix listar alla adressprefix som representeras av tjänsttaggen.

Om du ser duplicerade regler i utdata beror det på att en NSG är associerad med både nätverksgränssnittet och undernätet. Båda NSG:erna har samma standardregler och kan ha ytterligare dubblettregler om du har skapat egna regler som är desamma i båda NSG:erna.

Regeln med namnet defaultSecurityRules/DenyAllInBound är det som förhindrar inkommande kommunikation till den virtuella datorn via port 80, från Internet, enligt beskrivningen i scenariot. Ingen annan regel med högre prioritet (lägre nummer) tillåter inkommande port 80 från Internet.

Lösa ett problem

Oavsett om du använder Azure-portalen, PowerShell eller Azure CLI för att diagnostisera problemet som visas i scenariot i den här artikeln är lösningen att skapa en nätverkssäkerhetsregel med följande egenskaper:

Property Värde
Source Alla
Källportintervall Alla
Mål IP-adressen för den virtuella datorn, ett intervall med IP-adresser eller alla adresser i undernätet.
Målportintervall 80
Protokoll TCP
Åtgärd Tillåt
Prioritet 100
Name Allow-HTTP-All

När du har skapat regeln tillåts port 80 inkommande från Internet, eftersom regelns prioritet är högre än standardsäkerhetsregeln med namnet DenyAllInBound, som nekar trafiken. Lär dig hur du skapar en säkerhetsregel. Om olika NSG:er är kopplade till både nätverksgränssnittet och undernätet måste du skapa samma regel i båda NSG:erna.

När Azure bearbetar inkommande trafik bearbetar den regler i den NSG som är associerad med undernätet (om det finns en associerad NSG) och bearbetar sedan reglerna i den NSG som är associerad med nätverksgränssnittet. Om det finns en NSG som är associerad med nätverksgränssnittet och undernätet måste porten vara öppen i båda NSG:erna för att trafiken ska nå den virtuella datorn. För att underlätta administrations- och kommunikationsproblem rekommenderar vi att du associerar en NSG till ett undernät i stället för enskilda nätverksgränssnitt. Om virtuella datorer i ett undernät behöver olika säkerhetsregler kan du göra nätverksgränssnitten till medlemmar i en programsäkerhetsgrupp (ASG) och ange en ASG som källa och mål för en säkerhetsregel. Läs mer om programsäkerhetsgrupper.

Om du fortfarande har kommunikationsproblem kan du läsa Överväganden och Ytterligare diagnos.

Att tänka på

Tänk på följande när du felsöker anslutningsproblem:

  • Standardsäkerhetsregler blockerar inkommande åtkomst från Internet och tillåter endast inkommande trafik från det virtuella nätverket. Om du vill tillåta inkommande trafik från Internet lägger du till säkerhetsregler med högre prioritet än standardregler. Läs mer om standardsäkerhetsregler eller hur du lägger till en säkerhetsregel.
  • Om du har peer-kopplade virtuella nätverk expanderas som standard VIRTUAL_NETWORK-tjänsttaggen automatiskt till att omfatta prefix för peerkopplade virtuella nätverk. Om du vill felsöka eventuella problem som rör peering för virtuella nätverk kan du visa prefixen i listan ExpandedAddressPrefix . Läs mer om peering för virtuella nätverk och tjänsttaggar.
  • Effektiva säkerhetsregler visas endast för ett nätverksgränssnitt om det finns en NSG som är associerad med den virtuella datorns nätverksgränssnitt och, eller, undernät, och om den virtuella datorn är i körningstillstånd.
  • Om det inte finns några NSG:er som är associerade med nätverksgränssnittet eller undernätet, och du har en offentlig IP-adress tilldelad till en virtuell dator, är alla portar öppna för inkommande åtkomst från och utgående åtkomst till var som helst. Om den virtuella datorn har en offentlig IP-adress rekommenderar vi att du tillämpar en NSG på undernätet i nätverksgränssnittet.

Ytterligare diagnos

  • Om du vill köra ett snabbtest för att avgöra om trafik tillåts till eller från en virtuell dator använder du funktionen för att verifiera IP-flödet i Azure Network Watcher. Verifiering av IP-flöde anger om trafik tillåts eller nekas. Om det nekas meddelar IP-flödes verifiera dig vilken säkerhetsregel som nekar trafiken.
  • Om det inte finns några säkerhetsregler som gör att en virtuell dators nätverksanslutning misslyckas kan problemet bero på:
    • Brandväggsprogram som körs i den virtuella datorns operativsystem
    • Vägar som konfigurerats för virtuella installationer eller lokal trafik. Internettrafik kan omdirigeras till ditt lokala nätverk via tvingad tunneltrafik. Om du tvingar tunneltrafik via Internet till en virtuell installation eller lokalt kanske du inte kan ansluta till den virtuella datorn från Internet. Information om hur du diagnostiserar routningsproblem som kan hindra trafikflödet från den virtuella datorn finns i Diagnostisera trafikroutningsproblem för virtuella datorer.

Nästa steg