Quickstart: Diagnose eines virtuellen Netzwerk-Verkehrsfilterproblems mit Azure CLI

In diesem Schnellstart stellen Sie eine VM bereit und verwenden die IP-Datenflussüberprüfung von Network Watcher, um die Konnektivität mit und von verschiedenen IP-Adressen zu testen. Mit der IP-Flow-Verifizierung können Sie die Sicherheitsregel bestimmen, die den Datenverkehr blockiert und den Kommunikationsausfall verursacht. Du lernst auch, wie du das Problem lösen kannst. Außerdem erfahren Sie, wie Sie mit den effektiven Sicherheitsregeln für eine Netzwerkschnittstelle ermitteln, warum eine Sicherheitsregel Datenverkehr zulässt oder verweigert.

Das Diagramm zeigt die im Schnellstart „Network Watcher“ erstellten Ressourcen.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement.

  • Azure Cloud Shell oder Azure CLI.

    In den Schritten diesem Artikel werden die Azure CLI-Befehle interaktiv in Azure Cloud Shell ausgeführt. Um die Befehle in Cloud Shell auszuführen, wählen Sie in der oberen rechten Ecke eines Codeblocks Cloud Shell öffnen aus. Wählen Sie Kopieren aus, um den Code zu kopieren, und fügen Sie ihn in Cloud Shell ein, um ihn auszuführen. Sie können Azure Cloud Shell auch aus dem Azure-Portal starten.

    Sie können die Azure CLI auch lokal installieren, um die Befehle auszuführen. Für diesen Schnellstart ist mindestens Version 2.0 der Azure CLI erforderlich. Wenn Sie die Azure CLI lokal ausführen, melden Sie sich bei Azure an, indem Sie den az login-Befehl verwenden.

Erstellen eines virtuellen Computers

In diesem Abschnitt erstellen Sie ein virtuelles Netzwerk und ein Subnetz der Region „USA, Osten“. Anschließend erstellen Sie eine VM im Subnetz mit einer Standard-Netzwerksicherheitsgruppe.

  1. Erstellen Sie mit az group create eine Ressourcengruppe. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Sie Azure-Ressourcen bereitstellen und verwalten.

    # Create a resource group.
    az group create --name 'myResourceGroup' --location 'eastus'
    
  2. Erstellen Sie mit az network vnet create ein virtuelles Netzwerk.

    # Create a virtual network and a subnet.
    az network vnet create --resource-group 'myResourceGroup' --name 'myVNet' --subnet-name 'mySubnet' --subnet-prefixes 10.0.0.0/24 
    
  3. Erstellen Sie eine Standard-Netzwerksicherheitsgruppe mit az network nsg create.

    # Create a default network security group.
    az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
    

    Hinweis

    Die Standardregeln der Netzwerksicherheitsgruppe blockieren den gesamten eingehenden Zugriff über das Internet, einschließlich SSH. Verwenden Sie Azure Bastion, um eine Verbindung mit dem virtuellen Computer herzustellen. Weitere Informationen finden Sie in der Schnellstartanleitung: Bereitstellen von Azure Bastion mit Standardeinstellungen.

  4. Erstellen Sie eine virtuelle Maschine mit az vm create.

    # Create a Linux virtual machine using the latest Ubuntu 20.04 LTS image.
    az vm create --resource-group 'myResourceGroup' --name 'myVM' --location 'eastus' --vnet-name 'myVNet' --subnet 'mySubnet' --public-ip-address '' --nsg 'myVM-nsg' --image 'Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest' --generate-ssh-keys
    

Testen Sie die Netzwerkkommunikation mittels IP-Flow-Verifikation

In diesem Abschnitt verwenden Sie die IP-Flow-Verifying-Funktion von Network Watcher, um die Netzwerkkommunikation zur und von der virtuellen Maschine zu testen.

  1. Verwenden Sie den Befehl az network watcher test-ip-flow, um die ausgehende Kommunikation von myVM zu 13.107.21.200 zu testen, indem Sie IP flow verify verwenden (13.107.21.200 ist eine der öffentlichen IP-Adressen, die von www.bing.com): verwendet werden, zu testen.

    # Start the IP flow verify session to test outbound flow to www.bing.com.
    az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '13.107.21.200:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    Nach einigen Sekunden erhalten Sie eine ähnliche Ausgabe wie im folgenden Beispiel:

    Access  RuleName
    ------  --------
    Allow   defaultSecurityRules/AllowInternetOutBound
    

    Das Testergebnis besagt, dass der Zugriff auf 13.107.21.200 aufgrund der Standardsicherheitsregel AllowInternetOutBound zulässig ist. Standardmäßig können Azure-VMs auf das Internet zugreifen.

  2. Ändern Sie RemoteIPAddress in 10.0.1.10, und wiederholen Sie den Test. 10.0.1.10 ist eine private IP-Adresse im myVNet-Adressraum.

    # Start the IP flow verify session to test outbound flow to 10.0.1.10.
    az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.0.1.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    Nach einigen Sekunden erhalten Sie eine ähnliche Ausgabe wie im folgenden Beispiel:

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/AllowVnetOutBound
    

    Das Ergebnis des zweiten Tests zeigt an, dass der Zugriff auf 10.0.1.10 aufgrund der Standardsicherheitsregel AllowVnetOutBound zulässig ist. Standardmäßig kann eine Azure-VM auf alle IP-Adressen im Adressraum seines virtuellen Netzwerks zugreifen.

  3. Ändern Sie RemoteIPAddress in 10.10.10.10, und wiederholen Sie den Test. 10.10.10.10 ist eine private IP-Adresse außerhalb des myVNet-Adressraums.

    # Start the IP flow verify session to test outbound flow to 10.10.10.10.
    az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.10.10.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    Nach einigen Sekunden erhalten Sie eine ähnliche Ausgabe wie im folgenden Beispiel:

    Access RuleName
    ------ --------
    Deny   defaultSecurityRules/DenyAllOutBound
    

    Das Ergebnis des dritten Tests zeigt an, dass der Zugriff auf 10.10.10.10 aufgrund der Standardsicherheitsregel DenyAllOutBound verweigert wird.

  4. Ändern Sie die Richtung in Eingehend, den lokalen Port in 80 und Remoteport in 60000, und wiederholen Sie dann den Test.

    # Start the IP flow verify session to test inbound flow from 10.10.10.10.
    az network watcher test-ip-flow --direction 'inbound' --protocol 'TCP' --local '10.0.0.4:80' --remote '10.10.10.10:6000' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    Nach ein paar Sekunden sieht man eine Ausgabe, die dem folgenden Beispiel ähnelt:

    Access RuleName
    ------ --------
    Deny   defaultSecurityRules/DenyAllInBound
    

    Das Ergebnis des vierten Tests zeigt an, dass der Zugriff von 10.10.10.10 aufgrund der Standardsicherheitsregel DenyAllInBound verweigert wird. Standardmäßig wird der gesamte Zugriff auf eine Azure-VM von außerhalb des virtuellen Netzwerks verweigert.

Details einer Sicherheitsregel anzeigen

Um zu verstehen, warum die Regeln im vorherigen Abschnitt Kommunikation erlauben oder ablehnen, überprüfen Sie die effektiven Sicherheitsregeln für die Netzwerkschnittstelle der myVM-virtuellen Maschine mit dem Befehl az network nic list-effective-nsg :

# Get the effective security rules for the network interface of myVM.
az network nic list-effective-nsg --resource-group 'myResourceGroup' --name 'myVmVMNic'

Die zurückgegebene Ausgabe enthält folgende Informationen für die AllowInternetOutbound-Regel , die ausgehenden Zugriff auf gewährt www.bing.com:

{
  "access": "Allow",
  "destinationAddressPrefix": "Internet",
  "destinationAddressPrefixes": [
	"Internet"
  ],
  "destinationPortRange": "0-65535",
  "destinationPortRanges": [
	"0-65535"
  ],
  "direction": "Outbound",
  "expandedDestinationAddressPrefix": [
	"1.0.0.0/8",
	"2.0.0.0/7",
	"4.0.0.0/9",
	"4.144.0.0/12",
	"4.160.0.0/11",
	"4.192.0.0/10",
	"5.0.0.0/8",
	"6.0.0.0/7",
	"8.0.0.0/7",
	"11.0.0.0/8",
	"12.0.0.0/8",
	"13.0.0.0/10",
	"13.64.0.0/11",
	"13.104.0.0/13",
	"13.112.0.0/12",
	"13.128.0.0/9",
	"14.0.0.0/7",
	...
	...
	...
	"200.0.0.0/5",
	"208.0.0.0/4"
  ],
  "name": "defaultSecurityRules/AllowInternetOutBound",
  "priority": 65001,
  "protocol": "All",
  "sourceAddressPrefix": "0.0.0.0/0",
  "sourceAddressPrefixes": [
	"0.0.0.0/0",
	"0.0.0.0/0"
  ],
  "sourcePortRange": "0-65535",
  "sourcePortRanges": [
	"0-65535"
  ]
},

Sie sehen in der Ausgabe, dass das Adresspräfix 13.104.0.0/13 zu den Adresspräfixen der AllowInternetOutBound-Regel gehört. Dieses Präfix umfasst die IP-Adresse 13.107.21.200, mit der Sie die ausgehende Kommunikation getestet haben www.bing.com.

Ebenso können Sie die anderen Regeln überprüfen, um die Quell- und Ziel-IP-Adresspräfixe unter jeder Regel anzuzeigen.

Bereinigen von Ressourcen

Wenn Sie die Ressourcen nicht mehr benötigen, verwenden Sie az group delete , um die myResourceGroup-Ressourcengruppe und alle darin enthaltenen Ressourcen zu löschen:

# Delete the resource group and all resources it contains.
az group delete --name 'myResourceGroup' --yes

Nächster Schritt