Übung: Weiterleiten von Datenverkehr über ein virtuelles Netzwerkgerät
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.
Erstellen von öffentlichen und privaten virtuellen Computern
Der nächste Schritt besteht darin, eine VM in den öffentlichen und privaten Subnetzen bereitzustellen.
Öffnen Sie den Cloud Shell-Editor, und erstellen Sie eine Datei namens „cloud-init.txt“.
code cloud-init.txt
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 Hilfsprogrammtraceroute
, das Sie im späteren Verlauf dieser Übung verwenden werden.#cloud-config package_upgrade: true packages: - inetutils-traceroute
Drücken Sie erst STRG+S, um die Datei zu speichern, und anschließend STRG+Q, um den Editor zu schließen.
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>
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>
Führen Sie den Linux-Befehl
watch
aus, um zu überprüfen, ob die VMs ausgeführt werden. Der Befehlwatch
führt regelmäßig den Befehlaz 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.
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
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, welche die von der öffentlichen VM zur privaten VM gesendeten ICMP-Pakete durchlaufen. Der zweite Test zeigt die Route an, welche die von der privaten VM zur öffentlichen VM gesendeten ICMP-Pakete durchlaufen.
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 vontraceroute
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.
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.
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.