Acheminer le trafic réseau avec une table de routage à l’aide de l’interface de ligne de commande Azure
Par défaut, Azure achemine automatiquement le trafic entre tous les sous-réseaux au sein d’un réseau virtuel. Vous pouvez créer vos propres itinéraires pour remplacer le routage par défaut d’Azure. La possibilité de créer des itinéraires personnalisés est utile si, par exemple, vous souhaitez router le trafic entre des sous-réseaux via une appliance virtuelle réseau (NVA). Dans cet article, vous apprendrez comment :
- Créer une table de routage
- Créer un itinéraire
- Créer un réseau virtuel comprenant plusieurs sous-réseaux
- Associer une table de routage à un sous-réseau
- Créer une appliance virtuelle réseau (NVA) de base qui achemine le trafic à partir d’une machine virtuelle Ubuntu
- Déployer des machines virtuelles sur différents sous-réseaux
- Router le trafic d’un sous-réseau vers un autre via une NVA
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Cet article nécessite la version 2.0.28 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.
Créer une table de routage
Avant de pouvoir créer une table de routage, créez un groupe de ressources avec az group create pour toutes les ressources créées dans cet article.
# Create a resource group.
az group create \
--name test-rg \
--location westus2
Créez une table de routage avec az network route-table create. L’exemple suivant crée une table de routage nommée route-table-public.
# Create a route table
az network route-table create \
--resource-group test-rg \
--name route-table-public
Créer un itinéraire
Créez un itinéraire dans la table de routage avec az network route-table route create.
az network route-table route create \
--name to-private-subnet \
--resource-group test-rg \
--route-table-name route-table-public \
--address-prefix 10.0.1.0/24 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address 10.0.2.4
Associer une table de routage à un sous-réseau
Avant de pouvoir associer une table de routage à un sous-réseau, vous devez créer un réseau virtuel et un sous-réseau. Créez un réseau virtuel avec un sous-réseau en utilisant la commande az network vnet create.
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-public \
--subnet-prefix 10.0.0.0/24
Créez deux autres sous-réseaux avec az network vnet subnet create.
# Create a private subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-private \
--address-prefix 10.0.1.0/24
# Create a DMZ subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-dmz \
--address-prefix 10.0.2.0/24
Associez la table de routage route-table-subnet-public au sous-réseau subnet-public avec az network vnet subnet update.
az network vnet subnet update \
--vnet-name vnet-1 \
--name subnet-public \
--resource-group test-rg \
--route-table route-table-public
Créer une NVA
Une NVA est une machine virtuelle qui exécute une fonction réseau, telle que le routage, la fonction de pare-feu ou l’optimisation WAN. Nous créons une NVA de base depuis une machine virtuelle Ubuntu d’usage général, à des fins de démonstration.
Créez une machine virtuelle à utiliser comme appliance virtuelle réseau (NVA) dans le sous-réseau subnet-dmz avec az vm create. Par défaut, quand vous créez une machine virtuelle, Azure crée et affecte une interface réseau vm-nvaVMNic et une adresse IP subnet-public à la machine virtuelle, par défaut. Le paramètre --public-ip-address ""
indique à Azure de ne pas créer d’adresse IP publique et de ne pas l’affecter à la machine virtuelle, car celle-ci n’a pas besoin d’être connectée depuis Internet.
L’exemple suivant crée une machine virtuelle et ajoute un compte d’utilisateur. Le paramètre --generate-ssh-keys
fait en sorte que le CLI recherche une clé ssh disponible dans ~/.ssh
. Si une clé est trouvée, cette clé est utilisée. Sinon, une clé est générée et stockée dans ~/.ssh
. Enfin, nous déployons l’image Ubuntu 22.04
la plus récente.
az vm create \
--resource-group test-rg \
--name vm-nva \
--image Ubuntu2204 \
--public-ip-address "" \
--subnet subnet-dmz \
--vnet-name vnet-1 \
--generate-ssh-keys
La création de la machine virtuelle ne nécessite que quelques minutes. Ne passez pas à l’étape suivante tant qu’Azure n’a pas terminé la création de la machine virtuelle et retourné une sortie concernant la machine virtuelle.
Pour qu’une interface réseau vm-nvaVMNic soit en mesure de transférer le trafic qui lui est envoyé, mais qui n’est pas destiné à sa propre adresse IP, le transfert IP doit être activé pour l’interface réseau. Activez le transfert IP pour l’interface réseau avec az network nic update.
az network nic update \
--name vm-nvaVMNic \
--resource-group test-rg \
--ip-forwarding true
Sur la machine virtuelle, le système d’exploitation ou une application exécutée dans la machine virtuelle, doit également pouvoir transférer le trafic réseau. Nous utilisons la commande sysctl
pour permettre au noyau Linux de transférer des paquets. Pour exécuter cette commande sans vous connecter à la machine virtuelle, nous utilisons l’Extension de script personnalisé az vm extension set :
az vm extension set \
--resource-group test-rg \
--vm-name vm-nva \
--name customScript \
--publisher Microsoft.Azure.Extensions \
--settings '{"commandToExecute":"sudo sysctl -w net.ipv4.ip_forward=1"}'
L’exécution de la commande pourrait prendre jusqu’à une minute. Cette modification ne sera pas conservée après un redémarrage de la machine virtuelle. Par conséquent, si la machine virtuelle NVA est redémarrée pour une raison quelconque, vous devez répéter le script.
Créer des machines virtuelles
Créez deux machines virtuelles dans le réseau virtuel de manière à pouvoir vérifier que le trafic provenant du sous-réseau subnet-public est acheminé vers le sous-réseau subnet-private via la NVA à une étape ultérieure.
Créez une machine virtuelle dans le sous-réseau subnet-public avec az vm create. Le paramètre --no-wait
permet à Azure d’exécuter la commande en arrière-plan de façon que vous puissiez continuer jusqu’à la commande suivante.
L’exemple suivant crée une machine virtuelle et ajoute un compte d’utilisateur. Le paramètre --generate-ssh-keys
fait en sorte que le CLI recherche une clé ssh disponible dans ~/.ssh
. Si une clé est trouvée, cette clé est utilisée. Sinon, une clé est générée et stockée dans ~/.ssh
. Enfin, nous déployons l’image Ubuntu 22.04
la plus récente.
az vm create \
--resource-group test-rg \
--name vm-public \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-public \
--admin-username azureuser \
--generate-ssh-keys \
--no-wait
Créez une machine virtuelle dans le sous-réseau subnet-private.
az vm create \
--resource-group test-rg \
--name vm-private \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-private \
--admin-username azureuser \
--generate-ssh-keys
La création de la machine virtuelle ne nécessite que quelques minutes. Une fois la machine virtuelle créée, l’interface CLI Azure affiche des informations similaires à celles de l’exemple suivant :
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-private",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.1.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
Activer la connexion Microsoft Entra ID pour les machines virtuelles
L’exemple de code suivant installe l’extension qui active la connexion Microsoft Entra ID pour une machine virtuelle Linux. Les extensions de machine virtuelle sont de petites applications permettant d’exécuter des tâches de configuration et d’automatisation post-déploiement sur des machines virtuelles Azure.
az vm extension set \
--publisher Microsoft.Azure.ActiveDirectory \
--name AADSSHsign-inForLinux \
--resource-group test-rg \
--vm-name vm-private
az vm extension set \
--publisher Microsoft.Azure.ActiveDirectory \
--name AADSSHsign-inForLinux \
--resource-group test-rg \
--vm-name vm-public
Router le trafic via une NVA
En utilisant un client SSH de votre choix, connectez-vous aux machines virtuelles créées précédemment. Par exemple, la commande suivante peut être utilisée à partir d’une interface de ligne de commande comme Sous-système Windows pour Linux pour créer une session SSH avec la machine virtuelle vm-private. Dans les étapes précédentes, nous avons activé la connexion Microsoft Entra ID pour les machines virtuelles. Vous pouvez vous connecter aux machines virtuelles en utilisant vos informations d’identification Microsoft Entra ID, ou utiliser la clé SSH que vous avez utilisée pour créer les machines virtuelles. Dans l’exemple suivant, nous utilisons la clé SSH pour nous connecter aux machines virtuelles.
Pour plus d’informations sur la connexion SSH à une machine virtuelle Linux et la connexion avec Microsoft Entra ID, consultez Se connecter à une machine virtuelle Linux dans Azure en utilisant Microsoft Entra ID et OpenSSH.
### Store IP address of VM in order to SSH
Run the following command to store the IP address of the VM as an environment variable:
```bash
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-private --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
Utilisez la commande suivante pour installer l’itinéraire de trace sur la machine virtuelle vm-private :
sudo apt update
sudo apt install traceroute
Utilisez la commande suivante pour tester le routage du trafic vers la machine virtuelle vm-public depuis la machine virtuelle vm-private.
traceroute vm-public
La réponse ressemble à ce qui suit :
azureuser@vm-private:~$ traceroute vm-public
traceroute to vm-public (10.0.0.4), 30 hops max, 60 byte packets
1 vm-public.internal.cloudapp.net (10.0.0.4) 2.613 ms 2.592 ms 2.553 ms
Vous pouvez voir que le trafic est routé directement de la machine virtuelle vm-private vers la machine virtuelle vm-public. Les itinéraires par défaut d’Azure acheminent directement le trafic entre les sous-réseaux. Fermez la session SSH à la machine virtuelle vm-private.
Stocker l’adresse IP d’une machine virtuelle pour une connexion SSH
Exécutez la commande suivante pour stocker l’adresse IP de la machine virtuelle en tant que variable d’environnement :
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-public --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
Utilisez la commande suivante pour installer l’itinéraire de trace sur la machine virtuelle vm-public :
sudo apt update
sudo apt install traceroute
Utilisez la commande suivante pour tester le routage du trafic vers la machine virtuelle vm-private depuis la machine virtuelle vm-public.
traceroute vm-private
La réponse ressemble à ce qui suit :
azureuser@vm-public:~$ traceroute vm-private
traceroute to vm-private (10.0.1.4), 30 hops max, 60 byte packets
1 vm-nva.internal.cloudapp.net (10.0.2.4) 1.010 ms 1.686 ms 1.144 ms
2 vm-private.internal.cloudapp.net (10.0.1.4) 1.925 ms 1.911 ms 1.898 ms
Vous voyez que le premier tronçon est 10.0.2.4, ce qui correspond à l’adresse IP privée de l’appliance virtuelle réseau (NVA). Le second tronçon est 10.0.1.4, l’adresse IP privée de la machine virtuelle vm-private. L’itinéraire ajouté à la table de routage route-table--public et associé au sous-réseau subnet-public a contraint Azure à acheminer le trafic via la NVA et non directement au sous-réseau subnet-private.
Fermez la session SSH à la machine virtuelle vm-public.
Nettoyer les ressources
Quand vous n’avez plus besoin d’un groupe de ressources, utilisez az group delete pour le supprimer, ainsi que toutes les ressources qu’il contient.
az group delete \
--name test-rg \
--yes \
--no-wait
Étapes suivantes
Dans cet article, vous avez créé une table de routage que vous avez associée à un sous-réseau. Vous avez créé une appliance virtuelle réseau (NVA) simple qui a routé le trafic d’un sous-réseau subnet-public vers un sous-réseau privé. Déployer différentes NVA préconfigurées exécutant des fonctions réseau, comme l’optimisation de pare-feu ou de WAN, depuis Place de marché Azure. Pour en savoir plus sur le routage, consultez Routage du trafic de réseau virtuel et Créer, modifier ou supprimer une table de routage.
Si vous pouvez déployer de nombreuses ressources Azure dans un réseau virtuel, les ressources pour certains services Azure PaaS ne peuvent pas être déployées dans un réseau virtuel. Cependant, vous pouvez toujours restreindre l’accès aux ressources de certains services Azure PaaS au trafic provenant uniquement d’un sous-réseau de réseau virtuel. Pour connaître la marche à suivre, consultez Restreindre l’accès réseau aux ressources PaaS.