Démarrage rapide : diagnostiquer un problème de filtre de trafic réseau d’une machine virtuelle en utilisant Azure CLI

Dans ce guide de démarrage rapide, vous déployez une machine virtuelle et utilisez Network Watcher vérification des flux IP pour tester la connectivité vers différentes adresses IP et à partir d’elles. À l’aide des résultats de la vérification des flux IP, vous déterminez la règle de sécurité qui bloque le trafic et provoque l’échec de communication et découvrez comment le résoudre. Vous apprenez également à utiliser les règles de sécurité efficaces pour une interface réseau afin de déterminer pourquoi une règle de sécurité autorise ou refuse le trafic.

Diagramme montrant les ressources créées dans le guide de démarrage rapide de Network Watcher.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Prérequis

  • Compte Azure avec un abonnement actif.

  • Azure Cloud Shell ou Azure CLI.

    Dans les étapes de cet article, vous exécutez les commandes Azure CLI de manière interactive dans Azure Cloud Shell. Pour exécuter les commandes dans le Cloud Shell, sélectionnez Ouvrir Cloud Shell dans le coin supérieur droit d’un bloc de code. Sélectionnez Copier pour copier le code, puis collez-le dans Cloud Shell afin de l’exécuter. Vous pouvez démarrer Azure Cloud Shell depuis le Portail Azure.

    Vous pouvez également installer Azure CLI localement afin d’exécuter les commandes. Ce guide de démarrage rapide nécessite la version 2.0 ou ultérieure de l’interface Azure CLI. Si vous exécutez Azure CLI localement, connectez-vous à Azure à l’aide de la commande az login.

Création d'une machine virtuelle

Dans cette section, vous créez un réseau virtuel et un sous-réseau dans la région Est des Etats-Unis. Ensuite, vous créez une machine virtuelle dans le sous-réseau avec un groupe de sécurité réseau par défaut.

  1. Créez un groupe de ressources à l’aide de la commande az group create. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.

    # Create a resource group.
    az group create --name 'myResourceGroup' --location 'eastus'
    
  2. Créez un réseau virtuel avec la commande az network vnet create.

    # 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. Créez un groupe de sécurité réseau par défaut à l’aide de la commande az network nsg create.

    # Create a default network security group.
    az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
    
  4. Créez une machine virtuelle à l’aide de az vm create. Quand vous y êtes invité, entrez un nom d’utilisateur et un mot de passe.

    # 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'
    

Tester la communication réseau à l’aide de la vérification des flux IP

Dans cette section, vous utilisez la fonctionnalité de vérification des flux IP de Network Watcher pour tester la communication réseau vers la machine virtuelle et depuis celle-ci.

  1. Utilisez la commande az network watcher test-ip-flow pour tester la communication sortante de myVM vers 13.107.21.200 à l’aide de la vérification des flux IP (13.107.21.200 est l’une des adresses IP publiques utilisées par www.bing.com) :

    # 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'
    

    Après quelques secondes, vous obtenez une sortie similaire à l’exemple suivant :

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

    Le résultat du test indique que l’accès est autorisé à 13.107.21.200 en raison de la règle de sécurité par défaut AllowInternetOutBound. Par défaut, les machines virtuelles Azure peuvent accéder à Internet.

  2. Remplacez RemoteIPAddress par 10.0.1.10 et répétez le test. 10.0.1.10 est une adresse IP privée dans l’espace d’adressage myVNet.

    # 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'
    

    Après quelques secondes, vous obtenez une sortie similaire à l’exemple suivant :

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

    Le résultat du second test indique que l’accès est autorisé à 10.0.1.10 en raison de la règle de sécurité par défaut AllowVnetOutBound. Par défaut, une machine virtuelle Azure peut accéder à toutes les adresses IP dans l’espace d’adressage de son réseau virtuel.

  3. Remplacez RemoteIPAddress par 10.10.10.10 et répétez le test. 10.10.10.10 est une adresse IP privée qui ne se trouve pas dans l’espace d’adressage myVNet.

    # 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'
    

    Après quelques secondes, vous obtenez une sortie similaire à l’exemple suivant :

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/DenyAllOutBound
    

    Le résultat du troisième test indique que l’accès est refusé à 10.10.10.10 en raison de la règle de sécurité par défaut DenyAllOutBound.

  4. Remplacez la direction par Entrant, le port local par 80 et le port distant par 60000, puis répétez le 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'
    

    Après quelques secondes, vous obtenez une sortie similaire à l’exemple suivant :

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/DenyAllInBound
    

    Le résultat du quatrième test indique que l’accès est refusé à partir de 10.10.10.10 en raison de la règle de sécurité par défaut DenyAllInBound. Par défaut, tout accès à une machine virtuelle Azure à partir de l’extérieur du réseau virtuel est refusé.

Voir les détails d’une règle de sécurité

Pour déterminer pourquoi les règles de la section précédente autorisent ou refusent la communication, examinez les règles de sécurité efficaces pour l’interface réseau de la machine virtuelle myVM à l’aide de la commande 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'

La sortie renvoyée contient les informations suivantes pour la règle AllowInternetOutbound qui autorise l'accès sortant vers 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"
  ]
},

Vous remarquerez dans la sortie que le préfixe d’adresse 13.104.0.0/13 fait partie des préfixes d’adresse de la règle AllowInternetOutBound. Ce préfixe englobe l’adresse IP 13.107.21.200, que vous avez utilisée pour tester la communication sortante vers www.bing.com.

De la même manière, vous pouvez vérifier les autres règles pour voir les préfixes d’adresse IP source et destination sous chaque règle.

Nettoyer les ressources

Quand vous n’en avez plus besoin, utilisez az group delete pour supprimer le groupe de ressources myResourceGroup, ainsi que toutes les ressources qu’il contient :

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

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez créé une machine virtuelle et diagnostiqué des filtres de trafic réseau entrant et sortant. Vous avez appris que les règles de groupe de sécurité réseau autorisent ou refusent le trafic à destination et en provenance d’une machine virtuelle. En savoir plus sur les règles de sécurité et la création des règles de sécurité.

Même si les filtres de trafic appropriés sont en place, la communication avec une machine virtuelle peut toujours échouer en raison de la configuration du routage. Pour apprendre à diagnostiquer les problèmes de routage des machines virtuelles, reportez-vous à Diagnostiquer un problème de routage de réseau de machine virtuelle. Pour diagnostiquer les problèmes de routage sortant, de latence et de filtrage du trafic avec un seul outil, reportez-vous à Résoudre les problèmes de connexion avec Azure Network Watcher.