Exercice – Faire transiter le trafic par l’appliance virtuelle réseau
Maintenant que vous avez créé l’appliance virtuelle réseau et les machines virtuelles, vous allez router le trafic via cette appliance virtuelle réseau.
Créer les machines virtuelles publiques et privées
La procédure suivante vise à déployer une machine virtuelle dans les sous-réseaux public et privé.
Ouvrez l’éditeur Cloud Shell et créez un fichier nommé cloud-init.txt.
code cloud-init.txt
Ajoutez les informations de configuration suivantes au fichier. Avec cette configuration, le package
inetutils-traceroute
est installé lorsque vous créez une machine virtuelle. Ce package contient l’utilitairetraceroute
que vous utiliserez plus tard dans cet exercice.#cloud-config package_upgrade: true packages: - inetutils-traceroute
Appuyez sur Ctrl+S pour enregistrer le fichier, puis sur Ctrl+Q pour fermer l’éditeur.
Dans Cloud Shell, exécutez la commande suivante pour créer la machine virtuelle publique (public). Remplacez
<password>
par un mot de passe approprié pour le compte azureuser.az vm create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name public \ --vnet-name vnet \ --subnet publicsubnet \ --image Ubuntu2204 \ --admin-username azureuser \ --no-wait \ --custom-data cloud-init.txt \ --admin-password <password>
Exécutez la commande suivante pour créer la machine virtuelle privée (private). Remplacez
<password>
par un mot de passe approprié.az vm create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name private \ --vnet-name vnet \ --subnet privatesubnet \ --image Ubuntu2204 \ --admin-username azureuser \ --no-wait \ --custom-data cloud-init.txt \ --admin-password <password>
Exécutez la commande Linux
watch
suivante pour vérifier que les machines virtuelles sont en cours d’exécution. La commandewatch
exécute régulièrement la commandeaz vm list
pour vous permettre de superviser la progression des machines virtuelles.watch -d -n 5 "az vm list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --show-details \ --query '[*].{Name:name, ProvisioningState:provisioningState, PowerState:powerState}' \ --output table"
Si ProvisioningState a la valeur « Succeeded » et PowerState la valeur « VM running », cela indique un déploiement réussi. Dès que les trois machines virtuelles sont en cours d’exécution, vous êtes prêt à continuer. Appuyez sur Ctrl+C pour arrêter la commande et continuer l’exercice.
Exécutez la commande suivante pour enregistrer l’IP publique de la machine virtuelle publique dans une variable nommée
PUBLICIP
:PUBLICIP="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name public \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $PUBLICIP
Exécutez la commande suivante pour enregistrer l’IP publique de la machine virtuelle privée dans une variable nommée
PRIVATEIP
:PRIVATEIP="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name private \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $PRIVATEIP
Tester le routage du trafic via l’appliance virtuelle réseau
Les dernières étapes consistent à utiliser l’utilitaire Linux traceroute
pour montrer comment le trafic est routé. Vous allez utiliser la commande ssh
pour exécuter traceroute
sur chaque machine virtuelle. Le premier test montre la route empruntée par les paquets ICMP envoyés de la machine virtuelle publique à la machine virtuelle privée. Le deuxième test montre la route empruntée par les paquets ICMP envoyés de la machine virtuelle privée à la machine virtuelle publique.
Exécutez la commande suivante pour tracer la route de public à private. Quand vous y êtes invité, entrez le mot de passe du compte azureuser que vous avez spécifié précédemment.
ssh -t -o StrictHostKeyChecking=no azureuser@$PUBLICIP 'traceroute private --type=icmp; exit'
Si vous recevez le message d’erreur
bash: traceroute: command not found
, patientez une minute et réexécutez la commande. L’installation automatisée detraceroute
peut prendre une ou deux minutes après le déploiement d’une machine virtuelle. Une fois la commande réussie, la sortie doit être similaire à l’exemple suivant :traceroute to private.kzffavtrkpeulburui2lgywxwg.gx.internal.cloudapp.net (10.0.1.4), 64 hops max 1 10.0.2.4 0.710ms 0.410ms 0.536ms 2 10.0.1.4 0.966ms 0.981ms 1.268ms Connection to 52.165.151.216 closed.
Notez que le premier tronçon s’étend jusqu’à 10.0.2.4. Il s’agit de l’adresse IP privée de l’appliance virtuelle réseau (nva). Le deuxième tronçon s’étend jusqu’à 10.0.1.4, l’adresse de private. Dans le premier exercice, vous avez ajouté cette route à la table de routage et lié la table au sous-réseau publicsubnet. À présent, l’ensemble du trafic de la machine virtuelle public vers la machine virtuelle private est routé via l’appliance virtuelle réseau.
Exécutez la commande suivante pour tracer la route de private à public. Quand vous y êtes invité, entrez le mot de passe du compte azureuser.
ssh -t -o StrictHostKeyChecking=no azureuser@$PRIVATEIP 'traceroute public --type=icmp; exit'
Vous devez voir le trafic aller directement vers public (10.0.0.4) sans transiter par l’appliance virtuelle réseau, comme la sortie de la commande suivante le montre.
traceroute to public.kzffavtrkpeulburui2lgywxwg.gx.internal.cloudapp.net (10.0.0.4), 64 hops max 1 10.0.0.4 1.095ms 1.610ms 0.812ms Connection to 52.173.21.188 closed.
La machine virtuelle private utilise les routes par défaut, et le trafic est routé directement entre les sous-réseaux.
Vous avez maintenant configuré le routage entre les sous-réseaux pour diriger le trafic de l’Internet public vers le sous-réseau private en passant par le sous-réseau dmzsubnet. Dans le sous-réseau dmzsubnet, vous avez ajouté une machine virtuelle qui sert d’appliance virtuelle réseau. Vous pouvez configurer cette appliance virtuelle réseau pour détecter les demandes potentiellement malveillantes et les bloquer avant qu’elles atteignent les cibles prévues.