Sdílet prostřednictvím


Diagnostika problému s filtrováním síťového provozu virtuálního počítače

V tomto článku se dozvíte, jak diagnostikovat problém s filtrováním síťového provozu zobrazením pravidel zabezpečení sítě (NSG), která jsou platná pro virtuální počítač.

Skupiny zabezpečení sítě umožňují řídit typy přenosů, které proudí do a z virtuálního počítače. Skupinu zabezpečení sítě můžete přidružit k podsíti ve virtuální síti Azure, síťové rozhraní připojené k virtuálnímu počítači nebo obojí. Platná pravidla zabezpečení použitá na síťové rozhraní jsou agregací pravidel, která existují v NSG přidruženém k síťovému rozhraní, a podsíť, ve které síťové rozhraní je. Pravidla v různých skupin zabezpečení sítě můžou někdy kolidovat s ostatními a mít vliv na síťové připojení virtuálního počítače. Můžete zobrazit všechna platná pravidla zabezpečení ze skupin zabezpečení sítě, které se použijí v síťových rozhraních vašeho virtuálního počítače. Pokud neznáte koncepty virtuální sítě, síťového rozhraní nebo skupiny zabezpečení sítě, podívejte se na přehled virtuální sítě, síťové rozhraní a skupiny zabezpečení sítě.

Scénář

Pokusíte se připojit k virtuálnímu počítači přes port 80 z internetu, ale připojení selže. Pokud chcete zjistit, proč nemáte přístup k portu 80 z internetu, můžete pomocí webu Azure Portal, PowerShellu nebo Azure CLI zobrazit platná pravidla zabezpečení pro síťové rozhraní.

Následující postup předpokládá, že máte existující virtuální počítač k zobrazení efektivních pravidel zabezpečení. Pokud ještě nemáte existující virtuální počítač, nejprve nasaďte virtuální počítač s Linuxem nebo Windows a dokončete úlohy uvedené v tomto článku. Příklady v tomto článku jsou určené pro virtuální počítač myVM s síťovým rozhraním myVMVMNic. Virtuální počítač a síťové rozhraní jsou ve skupině prostředků myResourceGroup a jsou v oblasti USA – východ. Podle potřeby změňte hodnoty pro virtuální počítač, pro který problém diagnostikujete.

Diagnostika pomocí webu Azure Portal

  1. Přihlaste se k webu Azure Portal pomocí účtu Azure, který má potřebná oprávnění.

  2. V horní části webu Azure Portal zadejte do vyhledávacího pole název virtuálního počítače. Když se ve výsledcích hledání zobrazí název virtuálního počítače, vyberte ho.

  3. V části NASTAVENÍ vyberte Sítě, jak je znázorněno na následujícím obrázku:

    Snímek obrazovky s webem Azure Portal s nastavením sítě pro síťovou kartu M VM M

    Pravidla, která vidíte na předchozím obrázku, jsou určená pro síťové rozhraní myVMVMNic. Vidíte, že pro síťové rozhraní existují pravidla PŘÍCHOZÍCH PORTŮ ze dvou různých skupin zabezpečení sítě:

    • mySubnetNSG: Přidružená k podsíti, ve které je síťové rozhraní.
    • myVMNSG: Přidruženo k síťovému rozhraní virtuálního počítače s názvem myVMVMNic.

    Pravidlo s názvem DenyAllInBound brání příchozí komunikaci s virtuálním počítačem přes port 80 z internetu, jak je popsáno ve scénáři. Pravidlo obsahuje seznam 0.0.0.0/0 pro zdroj, který zahrnuje internet. Žádné jiné pravidlo s vyšší prioritou (nižším číslem) neumožňuje příchozí port 80. Pokud chcete povolit příchozí připojení portu 80 k virtuálnímu počítači z internetu, přečtěte si téma Řešení problému. Další informace opravidlech

    V dolní části obrázku se také zobrazí PRAVIDLA ODCHOZÍCH PORTŮ. V této části jsou pravidla odchozích portů pro síťové rozhraní. I když obrázek zobrazuje jenom čtyři příchozí pravidla pro každou skupinu zabezpečení sítě, můžou mít vaše skupiny zabezpečení sítě více než čtyři pravidla. Na obrázku vidíte virtualnetwork v části SOURCE a DESTINATION a AzureLoadBalancer v části SOURCE. VirtualNetwork a AzureLoadBalancer jsou značky služeb. Značky služeb představují skupinu předpon IP adres, které pomáhají minimalizovat složitost vytváření pravidel zabezpečení.

  4. Ujistěte se, že je virtuální počítač ve spuštěném stavu, a pak vyberte Platná pravidla zabezpečení, jak je znázorněno na předchozím obrázku, a podívejte se na platná pravidla zabezpečení zobrazená na následujícím obrázku:

    Snímek obrazovky s podoknem Platná pravidla zabezpečení s vybranou možností Stáhnout a Vybranou možností AllowAzureLoadBalancerInbound Příchozí pravidlo

    Uvedená pravidla jsou stejná jako v kroku 3, existují však různé karty skupiny zabezpečení sítě přidružené k síťovému rozhraní a podsíti. Jak vidíte na obrázku, zobrazí se jenom prvních 50 pravidel. Pokud chcete stáhnout .csv soubor, který obsahuje všechna pravidla, vyberte Stáhnout.

    Pokud chcete zjistit, které předpony každá značka služby představuje, vyberte pravidlo, například pravidlo s názvem AllowAzureLoadBalancerInbound. Následující obrázek ukazuje předpony pro značku služby AzureLoadBalancer :

    Snímek obrazovky znázorňující předpony adres pro zadané hodnoty AllowAzureLoadBalancerInbound

    Přestože značka služby AzureLoadBalancer představuje pouze jednu předponu, jiné značky služeb představují několik předpon.

  5. Předchozí kroky ukázaly pravidla zabezpečení pro síťové rozhraní myVMVMNic, ale v některých předchozích obrázcích jste také viděli síťové rozhraní myVMVMNic2 . Virtuální počítač v tomto příkladu má připojená dvě síťová rozhraní. Platná pravidla zabezpečení se můžou lišit pro každé síťové rozhraní.

    Pokud chcete zobrazit pravidla pro síťové rozhraní myVMVMNic2 , vyberte ho. Jak je znázorněno na následujícím obrázku, síťové rozhraní má stejná pravidla přidružená k její podsíti jako síťové rozhraní myVMVMNic , protože obě síťová rozhraní jsou ve stejné podsíti. Když k podsíti přidružíte skupinu zabezpečení sítě, použijí se její pravidla pro všechna síťová rozhraní v podsíti.

    Snímek obrazovky s webem Azure Portal s nastavením sítě pro moji síťovou kartu VM Nic 2

    Na rozdíl od síťového rozhraní myVMVMNic nemá síťové rozhraní myVMVMNic2 přidruženou skupinu zabezpečení sítě. Každé síťové rozhraní a podsíť můžou mít přidruženou nulu nebo jednu skupinu zabezpečení sítě. Skupina zabezpečení sítě přidružená k jednotlivým síťovým rozhraním nebo podsíti může být stejná nebo jiná. Stejnou skupinu zabezpečení sítě můžete přidružit k tolik síťovým rozhraním a podsítím, kolik zvolíte.

I když se prostřednictvím virtuálního počítače zobrazila platná pravidla zabezpečení, můžete také zobrazit platná pravidla zabezpečení prostřednictvím jednotlivce:

Diagnostika pomocí PowerShellu

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Pokud chcete začít, přečtěte si téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Můžete spustit příkazy, které následují v Azure Cloud Shellu, nebo spuštěním PowerShellu z počítače. Azure Cloud Shell je bezplatné interaktivní prostředí. Má předinstalované obecné nástroje Azure, které jsou nakonfigurované pro použití s vaším účtem. Pokud spustíte PowerShell ze svého počítače, potřebujete modul Azure PowerShell verze 1.0.0 nebo novější. Spusťte Get-Module -ListAvailable Az na počítači nainstalovanou verzi. Pokud potřebujete upgrade, přečtěte si téma Instalace modulu Azure PowerShell. Pokud používáte PowerShell místně, musíte se také přihlásit Connect-AzAccount k Azure pomocí účtu, který má potřebná oprávnění].

Získejte platná pravidla zabezpečení pro síťové rozhraní pomocí rutiny Get-AzEffectiveNetworkSecurityGroup. Následující příklad získá platná pravidla zabezpečení pro síťové rozhraní myVMVMNic, která je ve skupině prostředků myResourceGroup:

Get-AzEffectiveNetworkSecurityGroup `
  -NetworkInterfaceName myVMVMNic `
  -ResourceGroupName myResourceGroup

Výstup se vrátí ve formátu JSON. Informace o výstupu najdete v tématu interpretace výstupu příkazu. Výstup se vrátí jenom v případě, že je skupina zabezpečení sítě přidružená k síťovému rozhraní, podsíť, ve které je síťové rozhraní, nebo obojí. Virtuální počítač musí být ve spuštěném stavu. Virtuální počítač může mít více síťových rozhraní s různými skupinami zabezpečení sítě. Při řešení potíží spusťte příkaz pro každé síťové rozhraní.

Pokud stále máte problém s připojením, prohlédni si další diagnostika a důležité informace.

Pokud neznáte název síťového rozhraní, ale znáte název virtuálního počítače, ke kterému je síťové rozhraní připojené, vrátí následující příkazy ID všech síťových rozhraní připojených k virtuálnímu počítači:

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

Zobrazí se výstup podobný následujícímu příkladu:

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

V předchozím výstupu je název síťového rozhraní myVMVMNic.

Diagnostika pomocí Azure CLI

Pokud k dokončení úloh v tomto článku používáte příkazy Azure CLI, spusťte příkazy v Azure Cloud Shellu nebo spuštěním Azure CLI z počítače. Tento článek vyžaduje Azure CLI verze 2.0.32 nebo novější. Nainstalovanou verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI. Pokud používáte Azure CLI místně, musíte také spustit az login Azure a přihlásit se k Azure pomocí účtu, který má potřebná oprávnění.

Získejte platná pravidla zabezpečení pro síťové rozhraní pomocí příkazu az network nic list-effective-nsg. Následující příklad získá platná pravidla zabezpečení pro síťové rozhraní myVMVMNic , které je ve skupině prostředků myResourceGroup:

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

Výstup se vrátí ve formátu JSON. Informace o výstupu najdete v tématu interpretace výstupu příkazu. Výstup se vrátí jenom v případě, že je skupina zabezpečení sítě přidružená k síťovému rozhraní, podsíť, ve které je síťové rozhraní, nebo obojí. Virtuální počítač musí být ve spuštěném stavu. Virtuální počítač může mít více síťových rozhraní s různými skupinami zabezpečení sítě. Při řešení potíží spusťte příkaz pro každé síťové rozhraní.

Pokud stále máte problém s připojením, prohlédni si další diagnostika a důležité informace.

Pokud neznáte název síťového rozhraní, ale znáte název virtuálního počítače, ke kterému je síťové rozhraní připojené, vrátí následující příkazy ID všech síťových rozhraní připojených k virtuálnímu počítači:

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

Ve vráceném výstupu se zobrazí podobné informace jako v následujícím příkladu:

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

V předchozím výstupu je název síťového rozhraní myVMVMNic rozhraní.

Interpretace výstupu příkazu

Bez ohledu na to, jestli jste k diagnostice problému použili PowerShell nebo Azure CLI , obdržíte výstup, který obsahuje následující informace:

  • NetworkSecurityGroup: ID skupiny zabezpečení sítě.
  • Přidružení: Určuje, jestli je skupina zabezpečení sítě přidružená k networkInterface nebo podsíti. Pokud je skupina zabezpečení sítě přidružená k oběma, pro každou skupinu zabezpečení sítě se vrátí výstup se skupinami NetworkSecurityGroup, Association a EffectiveSecurityRules. Pokud je skupina zabezpečení sítě přidružená nebo se přidruží bezprostředně před spuštěním příkazu, abyste zobrazili platná pravidla zabezpečení, možná budete muset několik sekund počkat, než se změna projeví ve výstupu příkazu.
  • EffectiveSecurityRules: Vysvětlení každé vlastnosti je podrobně popsáno v části Vytvoření pravidla zabezpečení. Názvypravidelchm předpisům jsou výchozí pravidla zabezpečení, která existují v každé skupině zabezpečení sítě. Názvy pravidel před sebou mají pravidla zabezpečení/ jsou pravidla, která jste vytvořili. Pravidla, která určují značku služby, například Internet, VirtualNetwork a AzureLoadBalancer pro destinationAddressPrefix nebo sourceAddressPrefix vlastnosti, mají také hodnoty pro expandedDestinationAddressPrefix vlastnost. Vlastnost expandedDestinationAddressPrefix obsahuje všechny předpony adres reprezentované značkou služby.

Pokud se ve výstupu zobrazí duplicitní pravidla, je to proto, že skupina zabezpečení sítě je přidružená k síťovému rozhraní i podsíti. Obě skupiny zabezpečení sítě mají stejná výchozí pravidla a můžou mít další duplicitní pravidla, pokud jste vytvořili vlastní pravidla, která jsou stejná v obou skupinách zabezpečení sítě.

Pravidlo s názvem defaultSecurityRules/DenyAllInBound brání příchozí komunikaci s virtuálním počítačem přes port 80 z internetu, jak je popsáno ve scénáři. Žádné jiné pravidlo s vyšší prioritou (nižším číslem) neumožňuje příchozí port 80 z internetu.

Řešení problému

Ať už k diagnostice problému uvedeného ve scénáři v tomto článku používáte Azure Portal, PowerShell nebo Azure CLI, je řešením vytvořit pravidlo zabezpečení sítě s následujícími vlastnostmi:

Vlastnost Hodnota
Source Všechny
Rozsahy zdrojových portů Všechny
Cíl IP adresa virtuálního počítače, rozsah IP adres nebo všechny adresy v podsíti.
Rozsahy cílových portů 80
Protokol TCP
Akce Povolit
Priorita 100
Název Allow-HTTP-All

Po vytvoření pravidla má port 80 povolený příchozí provoz z internetu, protože priorita pravidla je vyšší než výchozí pravidlo zabezpečení s názvem DenyAllInBound, které provoz odmítne. Zjistěte, jak vytvořit pravidlo zabezpečení. Pokud jsou k síťovému rozhraní a podsíti přidruženy různé skupiny zabezpečení sítě, musíte v obou skupinách zabezpečení sítě vytvořit stejné pravidlo.

Když Azure zpracovává příchozí provoz, zpracovává pravidla ve skupině zabezpečení sítě přidružené k podsíti (pokud existuje přidružená skupina zabezpečení sítě) a pak zpracuje pravidla ve skupině zabezpečení sítě přidružené k síťovému rozhraní. Pokud je k síťovému rozhraní a podsíti přidružená skupina zabezpečení sítě, musí být port otevřený v obou skupin zabezpečení sítě, aby se provoz dostal k virtuálnímu počítači. Pokud chcete usnadnit problémy se správou a komunikací, doporučujeme přidružit skupinu zabezpečení sítě k podsíti, nikoli k jednotlivým síťovým rozhraním. Pokud virtuální počítače v podsíti potřebují různá pravidla zabezpečení, můžete nastavit síťová rozhraní skupiny zabezpečení aplikace (ASG) a jako zdroj a cíl pravidla zabezpečení zadat asG. Přečtěte si další informace o skupinách zabezpečení aplikací.

Pokud stále máte problémy s komunikací, přečtěte si téma Důležité informace a další diagnostika.

Důležité informace

Při řešení potíží s připojením zvažte následující body:

  • Výchozí pravidla zabezpečení blokují příchozí přístup z internetu a povolují pouze příchozí provoz z virtuální sítě. Pokud chcete povolit příchozí provoz z internetu, přidejte pravidla zabezpečení s vyšší prioritou než výchozí pravidla. Přečtěte si další informace o výchozích pravidlech zabezpečení nebo o tom, jak přidat pravidlo zabezpečení.
  • Pokud máte ve výchozím nastavení partnerské virtuální sítě, značka služby VIRTUAL_NETWORK se automaticky rozšíří tak, aby zahrnovala předpony pro partnerské virtuální sítě. Při řešení potíží souvisejících s partnerským vztahem virtuálních sítí můžete zobrazit předpony v seznamu ExpandedAddressPrefix . Přečtěte si další informace o partnerských vztazích virtuálních sítí a značkách služeb.
  • Platná pravidla zabezpečení se zobrazují pouze pro síťové rozhraní, pokud je k síťovému rozhraní virtuálního počítače přidružená skupina zabezpečení sítě a podsíť nebo podsíť a pokud je virtuální počítač ve spuštěném stavu.
  • Pokud nejsou k síťovému rozhraní nebo podsíti přidružené žádné skupiny zabezpečení sítě a máte přiřazenou veřejnou IP adresu k virtuálnímu počítači, všechny porty jsou otevřené pro příchozí přístup z libovolného místa a odchozí přístup. Pokud má virtuální počítač veřejnou IP adresu, doporučujeme použít skupinu zabezpečení sítě pro podsíť síťového rozhraní.

Další diagnostika

  • Pokud chcete spustit rychlý test a zjistit, jestli je provoz povolený do nebo z virtuálního počítače, použijte funkci ověření toku protokolu IP služby Azure Network Watcher. Ověření toku protokolu IP vám řekne, jestli je povolený nebo zakázaný provoz. Pokud tok protokolu IP odepře, ověřte, které pravidlo zabezpečení provoz zakazuje.
  • Pokud neexistují žádná pravidla zabezpečení, která by způsobila selhání síťového připojení virtuálního počítače, příčinou problému může být:
    • Software brány firewall spuštěný v operačním systému virtuálního počítače
    • Trasy nakonfigurované pro virtuální zařízení nebo místní provoz Internetový provoz je možné přesměrovat do místní sítě prostřednictvím vynuceného tunelování. Pokud vynutíte tunelový internetový provoz do virtuálního zařízení nebo místně, možná se nebudete moct připojit k virtuálnímu počítači z internetu. Informace o diagnostice problémů se směrováním tras, které můžou bránit toku provozu z virtuálního počítače, najdete v tématu Diagnostika potíží se směrováním síťového provozu virtuálního počítače.

Další kroky