Exercice – Faire transiter le trafic par l’appliance virtuelle réseau

Effectué

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.

Visualization of virtual machines and IP addresses.

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é.

  1. Ouvrez l’éditeur Cloud Shell et créez un fichier nommé cloud-init.txt.

    code cloud-init.txt
    
  2. 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’utilitaire traceroute que vous utiliserez plus tard dans cet exercice.

    #cloud-config
    package_upgrade: true
    packages:
       - inetutils-traceroute
    
  3. Appuyez sur Ctrl+S pour enregistrer le fichier, puis sur Ctrl+Q pour fermer l’éditeur.

  4. 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>
    
  5. 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>
    
  6. Exécutez la commande Linux watch suivante pour vérifier que les machines virtuelles sont en cours d’exécution. La commande watch exécute régulièrement la commande az 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.

  7. Exécutez la commande suivante pour enregistrer l’adresse IP publique de la machine virtuelle public 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
    
  8. Exécutez la commande suivante pour enregistrer l’adresse IP publique de la machine virtuelle private 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 montrera la route empruntée par les paquets ICMP envoyés de la machine virtuelle public à la machine virtuelle private. Le deuxième test montrera la route empruntée par les paquets ICMP envoyés de la machine virtuelle private vers la machine virtuelle public.

  1. 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 de traceroute 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.

    Diagram of route from public to private.

  2. 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.

    Diagram of route from private to public.

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.