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í skupiny zabezpečení sítě (NSG), která jsou platná pro virtuální počítač.

Skupiny zabezpečení sítě umožňují řídit typy provozu, 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ému rozhraní připojenému k virtuálnímu počítači nebo k obojímu. Platná pravidla zabezpečení použitá na síťové rozhraní jsou agregací pravidel, která existují ve skupině zabezpečení sítě přidružené k síťovému rozhraní a podsíti, ve které se síťové rozhraní nachází. Pravidla v různých skupinách zabezpečení sítě můžou někdy být v konfliktu 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žívají v síťových rozhraních virtuálního počítače. Pokud neznáte koncepty virtuální sítě, síťového rozhraní nebo NSG, přečtěte si téma Přehled virtuální sítě, Síťové rozhraní a Skupiny zabezpečení sítě– přehled.

Scenario

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č, pro který chcete zobrazit platná pravidla zabezpečení. Pokud nemáte existující virtuální počítač, nejprve nasaďte virtuální počítač s Linuxem nebo Windows a dokončete úlohy v tomto článku. Příklady v tomto článku jsou určené pro virtuální počítač myVM se 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 v krocích pro virtuální počítač, pro který problém diagnostikujete.

Diagnostika pomocí Azure Portal

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

  2. V horní části Azure Portal zadejte do vyhledávacího pole název virtuálního počítače. Jakmile 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 ukazuje Azure Portal s nastavením sítě pro síťovou kartu V M V M.

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

    • mySubnetNSG: Přidruženo k podsíti, ve které se síťové rozhraní nachází.
    • myVMNSG: Přidružené k síťovému rozhraní ve virtuálním počítači 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 uvádí 0.0.0.0/0 pro ZDROJ, který zahrnuje internet. Žádné jiné pravidlo s vyšší prioritou (nižším číslem) neumožňuje příchozí přenos portu 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 o pravidlech zabezpečení a o tom, jak je Azure používá, najdete v tématu Skupiny zabezpečení sítě.

    V dolní části obrázku vidíte také PRAVIDLA ODCHOZÍCH PORTŮ. Pod tím jsou pravidla odchozích portů pro síťové rozhraní. I když na obrázku vidíte pro každou skupinu zabezpečení sítě jenom čtyři příchozí pravidla, vaše skupiny zabezpečení sítě můžou mít mnohem víc než čtyři pravidla. Na obrázku vidíte VirtualNetwork v části ZDROJ a CÍL a AzureLoadBalancer v části ZDROJ. 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, abyste viděli platná pravidla zabezpečení, jak je znázorněno na následujícím obrázku:

    Snímek obrazovky ukazuje podokno Platná pravidla zabezpečení s vybranou možností Stáhnout a vybranou možností Povolit Příchozí pravidloAzureLoadBalancerInbound.

    Uvedená pravidla jsou stejná jako v kroku 3, i když existují 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 pouze prvních 50 pravidel. Pokud chcete stáhnout soubor .csv, který obsahuje všechna pravidla, vyberte Stáhnout.

    Pokud chcete zjistit, které předpony jednotlivé značky služby představují, vyberte pravidlo, například pravidlo s názvem AllowAzureLoadBalancerInbound. Následující obrázek znázorňuje předpony pro značku služby AzureLoadBalancer :

    Snímek obrazovky ukazuje předpony adres pro zadanou možnost AllowAzureLoadBalancerInbound.

    I když značka služby AzureLoadBalancer představuje pouze jednu předponu, ostatní značky služby představují několik předpon.

  5. Předchozí kroky ukázaly pravidla zabezpečení pro síťové rozhraní s názvem myVMVMNic, ale na 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 pro každé síťové rozhraní lišit.

    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á ke své podsíti přidružená stejná pravidla jako síťové rozhraní myVMVMNic , protože obě síťová rozhraní jsou ve stejné podsíti. Když přidružíte skupinu zabezpečení sítě k podsíti, použijí se její pravidla pro všechna síťová rozhraní v podsíti.

    Snímek obrazovky ukazuje Azure Portal s nastavením sítě pro moji síťovou kartu V M V M M 2.

    Na rozdíl od síťového rozhraní myVMVMNic síťové rozhraní myVMVMNic2 nemá přidruženou skupinu zabezpečení sítě. Ke každému síťovému rozhraní a podsíti může být přidružená nula nebo jedna skupina zabezpečení sítě. Skupina zabezpečení sítě přidružená ke každému síťovému rozhraní nebo podsíti může být stejná nebo odlišná. Stejnou skupinu zabezpečení sítě můžete přidružit k tolika síťovým rozhraním a podsítím, kolik zvolíte.

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

Diagnostika pomocí PowerShellu

Poznámka

K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Začněte tím, že si projdete 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.

Následující příkazy můžete spustit v Azure Cloud Shell 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 powershell spouštíte z 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 a vyhledejte 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 také spustit příkaz Connect-AzAccount pro přihlášení 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 interpretovat výstup příkazu. Výstup se vrátí pouze v případě, že je skupina zabezpečení sítě přidružená k síťovému rozhraní, podsíti, ve které se síťové rozhraní nachází, nebo obojí. Virtuální počítač musí být ve spuštěném stavu. Virtuální počítač může mít několik 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 máte stále potíže s připojením, přečtěte si další informace o diagnostice a důležitých informacích.

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é, následující příkazy vrátí 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 Shell 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 spouští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 interpretovat výstup příkazu. Výstup se vrátí pouze v případě, že je skupina zabezpečení sítě přidružená k síťovému rozhraní, podsíti, ve které se síťové rozhraní nachází, nebo obojí. Virtuální počítač musí být ve spuštěném stavu. Virtuální počítač může mít několik 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 máte stále potíže s připojením, přečtěte si další informace o diagnostice a důležitých informacích.

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é, následující příkazy vrátí 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 uvidíte 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í rozhraní myVMVMNic.

Interpretace výstupu příkazu

Bez ohledu na to, jestli jste k diagnostice problému použili PowerShell nebo Azure CLI , se zobrazí 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 podsíti NetworkInterface nebo podsíti. Pokud je skupina zabezpečení sítě přidružená k oběma skupinám, vrátí se výstup s každou skupinou zabezpečení sítě NetworkSecurityGroup, Association a EffectiveSecurityRules. Pokud je skupina zabezpečení sítě přidružená nebo odpojená těsně 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 tématu Vytvoření pravidla zabezpečení. Názvy pravidel s výchozím nastavenímSecurityRules/ jsou výchozí pravidla zabezpečení, která existují v každé skupině zabezpečení sítě. Názvy pravidel, které jsou před sebou s pravidly zabezpečení/ jsou pravidla, která jste vytvořili. Pravidla, která určují značku služby, například Internet, VirtualNetwork a AzureLoadBalancer pro vlastnosti destinationAddressPrefix nebo sourceAddressPrefix , mají také hodnoty pro vlastnost expandedDestinationAddressPrefix . Vlastnost expandedDestinationAddressPrefix obsahuje seznam všech předpon adres reprezentovaných 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 v obou skupinách zabezpečení sítě stejná.

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í přenos portu 80 z internetu.

Řešení problému

Bez ohledu na to, jestli k diagnostice problému popsané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
Zdroj Libovolný
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 je povolen port 80 příchozí z internetu, protože priorita pravidla je vyšší než výchozí pravidlo zabezpečení s názvem DenyAllInBound, které zakazuje provoz. Přečtěte si, jak vytvořit pravidlo zabezpečení. Pokud jsou k síťovému rozhraní i 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, zpracuje pravidla ve skupině zabezpečení sítě přidružené k podsíti (pokud je 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ách zabezpečení sítě, aby se provoz dostal k virtuálnímu počítači. Pro usnadnění problémů 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 rámci podsítě potřebují různá pravidla zabezpečení, můžete síťová rozhraní nastavit jako členy skupiny zabezpečení aplikací (ASG) a zadat asg jako zdroj a cíl pravidla zabezpečení. Přečtěte si další informace o skupinách zabezpečení aplikací.

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

Požadavky

Při řešení potíží s připojením vezměte v úvahu 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 partnerské virtuální sítě, ve výchozím nastavení se značka služby VIRTUAL_NETWORK automaticky rozbalí, aby zahrnovala předpony pro partnerské virtuální sítě. Pokud chcete vyřešit problémy související 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ém vztahu virtuálních sítí a značkách služeb.
  • Platná pravidla zabezpečení se pro síťové rozhraní zobrazí jenom v případě, že je skupina zabezpečení sítě přidružená k síťovému rozhraní virtuálního počítače a podsíti nebo a pokud je virtuální počítač ve spuštěném stavu.
  • Pokud k síťovému rozhraní nebo podsíti nejsou přidružené žádné skupiny zabezpečení sítě a máte k virtuálnímu počítači přiřazenou veřejnou IP adresu , jsou všechny porty 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, abyste zjistili, jestli je povolený provoz do nebo z virtuálního počítače, použijte možnost ověření toku protokolu IP v Azure Network Watcher. Ověření toku PROTOKOLU IP vám řekne, jestli je provoz povolený nebo zakázaný. Pokud je tato možnost zamítnuta, ověření toku protokolu IP vám řekne, které pravidlo zabezpečení zakazuje provoz.
  • Pokud neexistují žádná pravidla zabezpečení, která způsobují selhání síťového připojení virtuálního počítače, může být příčinou problému:
    • 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ě pomocí vynuceného tunelování. Pokud vynutíte tunelování internetového provozu do virtuálního zařízení nebo místně, je možné, že se k virtuálnímu počítači nebudete moct připojit z internetu. Informace o tom, jak diagnostikovat problémy s trasou, 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