Übung: Weiterleiten von Datenverkehr über ein virtuelles Netzwerkgerät

Abgeschlossen

Da Sie das virtuelle Netzwerkgerät und die virtuellen Computer (VMs) nun erstellt haben, leiten Sie den Datenverkehr im Folgenden über das virtuelle Netzwerkgerät.

Visualization of virtual machines and IP addresses.

Erstellen von öffentlichen und privaten virtuellen Computern

Der nächste Schritt besteht darin, eine VM in den öffentlichen und privaten Subnetzen bereitzustellen.

  1. Öffnen Sie den Cloud Shell-Editor, und erstellen Sie eine Datei namens „cloud-init.txt“.

    code cloud-init.txt
    
  2. Fügen Sie der Datei die folgenden Konfigurationsinformationen hinzu. Mit dieser Konfiguration wird das inetutils-traceroute-Paket installiert, wenn Sie eine neue VM erstellen. Dieses Paket enthält das Hilfsprogramm traceroute, das Sie im späteren Verlauf dieser Übung verwenden werden.

    #cloud-config
    package_upgrade: true
    packages:
       - inetutils-traceroute
    
  3. Drücken Sie erst STRG+S, um die Datei zu speichern, und anschließend STRG+Q, um den Editor zu schließen.

  4. Führen Sie in Cloud Shell den folgenden Befehl aus, um die öffentliche VM zu erstellen. Ersetzen Sie <password> durch ein geeignetes Kennwort für das Konto 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. Führen Sie den folgenden Befehl aus, um die private VM zu erstellen. Ersetzen Sie <password> durch ein geeignetes Kennwort.

    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. Führen Sie den Linux-Befehl watch aus, um zu überprüfen, ob die VMs ausgeführt werden. Der Befehl watch führt regelmäßig den Befehl az vm list aus, damit Sie den Fortschritt der VMs überwachen können.

    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"
    

    Wenn für ProvisioningState der Wert „Erfolgreich“ und für PowerState der Wert „Virtueller Computer wird ausgeführt“ angezeigt wird, war die Bereitstellung erfolgreich. Wenn alle drei Ihrer VMs ausgeführt werden, können Sie den Vorgang fortsetzen. Drücken Sie STRG+C, um den Befehl anzuhalten und mit der Übung fortzufahren.

  7. Führen Sie den folgenden Befehl aus, um die öffentliche IP-Adresse der öffentlichen VM in einer Variable namens PUBLICIP zu speichern.

    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. Führen Sie den folgenden Befehl aus, um die öffentliche IP-Adresse der privaten VM in einer Variable namens PRIVATEIP zu speichern.

    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
    

Testen der Weiterleitung des Datenverkehrs über das virtuelle Netzwerkgerät

Der letzte Schritt besteht darin, das Linux-Hilfsprogramm traceroute zu verwenden, um anzuzeigen, wie der Datenverkehr weitergeleitet wird. Sie verwenden den ssh-Befehl, um traceroute auf allen VMs auszuführen. Der erste Test zeigt die Route an, die die von der öffentlichen VM zur privaten VM gesendeten ICMP-Pakete durchlaufen. Der zweite Test zeigt die Route an, die die von der privaten VM zur öffentlichen VM gesendeten ICMP-Pakete durchlaufen.

  1. Führen Sie den folgenden Befehl aus, um die Route von der öffentlichen zur privaten VM nachzuverfolgen. Geben Sie das Kennwort für das Konto azureuser ein, das Sie zuvor festgelegt haben, wenn Sie dazu aufgefordert werden.

    ssh -t -o StrictHostKeyChecking=no azureuser@$PUBLICIP 'traceroute private --type=icmp; exit'
    

    Wenn die Fehlermeldung bash: traceroute: command not found (Befehl wurde nicht gefunden) angezeigt wird, warten Sie eine Minute, und versuchen Sie es dann erneut. Die automatisierte Installation von traceroute nach der Bereitstellung der VM kann ein bis zwei Minuten dauern. Nachdem der Befehl erfolgreich ausgeführt wurde, sollte eine Ausgabe ähnlich dem folgenden Beispiel angezeigt werden:

    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.
    

    Beachten Sie, dass der erste Hop zu 10.0.2.4 erfolgt. Bei dieser Adresse handelt es sich um die private IP-Adresse für das virtuelle Netzwerkgerät (NVA). Der zweite Hop erfolgt für die Adresse der privaten VM 10.0.1.4. In der ersten Übung haben Sie diese Route zur Routingtabelle hinzugefügt und die Tabelle mit dem Subnetz publicsubnet verknüpft. Der gesamte Datenverkehr von der öffentlichen zur privaten VM wird nun über das virtuelle Netzwerkgerät geleitet.

    Diagram of route from public to private.

  2. Führen Sie den folgenden Befehl aus, um die Route von der privaten zur öffentlichen VM nachzuverfolgen. Geben Sie das Kennwort für das Konto azureuser ein, wenn Sie dazu aufgefordert werden.

    ssh -t -o StrictHostKeyChecking=no azureuser@$PRIVATEIP 'traceroute public --type=icmp; exit'
    

    Sie sollten wie in der folgenden Befehlsausgabe gezeigt sehen, dass der Datenverkehr direkt zur öffentlichen VM (10.0.0.4) und nicht über das virtuelle Netzwerkgerät geleitet wird.

    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.
    

    Die private VM verwendet Standardrouten, und der Datenverkehr wird direkt zwischen den Subnetzen geführt.

    Diagram of route from private to public.

Sie haben nun das Routing zwischen Subnetzen konfiguriert, um den Datenverkehr aus dem öffentlichen Internet durch das Subnetz dmzsubnet zu leiten, bevor es das private Subnetz erreicht. Sie haben eine VM zum Subnetz dmzsubnet hinzugefügt, das als virtuelles Netzwerkgerät fungiert. In diesem virtuellen Netzwerkgerät können Sie Logik konfigurieren, um potenziell schädliche Anforderungen zu ermitteln und zu blockieren, bevor sie ihre Ziele erreichen.