Ćwiczenie — kierowanie ruchu przez urządzenie WUS
Po utworzeniu wirtualnego urządzenia sieciowego (WUS) i maszyn wirtualnych będziesz kierować ruch przez urządzenie WUS.
Tworzenie publicznych i prywatnych maszyn wirtualnych
Następne kroki umożliwiają wdrożenie maszyny wirtualnej w podsieciach publicznych i prywatnych.
Otwórz edytor usługi Cloud Shell i utwórz plik o nazwie cloud-init.txt.
code cloud-init.txt
Dodaj do pliku następujące informacje o konfiguracji. W przypadku tej konfiguracji
inetutils-traceroute
pakiet jest instalowany podczas tworzenia nowej maszyny wirtualnej. Ten pakiet zawiera narzędzietraceroute
, którego użyjesz w dalszej części tego ćwiczenia.#cloud-config package_upgrade: true packages: - inetutils-traceroute
Naciśnij Ctrl+S , aby zapisać plik, a następnie naciśnij Ctrl+Q , aby zamknąć edytor.
W usłudze Cloud Shell uruchom następujące polecenie, aby utworzyć publiczną maszynę wirtualną. Zastąp
<password>
ciąg odpowiednim hasłem dla konta 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>
Uruchom następujące polecenie, aby utworzyć prywatną maszynę wirtualną. Zastąp frazę
<password>
odpowiednim hasłem.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>
Uruchom następujące polecenie systemu Linux
watch
, aby sprawdzić, czy maszyny wirtualne są uruchomione. Poleceniewatch
okresowo uruchamiaaz vm list
polecenie, aby można było monitorować postęp maszyn wirtualnych.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"
Wartość ProvisioningState typu "Succeeded" i wartość powerState "VM running" (Uruchomiona maszyna wirtualna) wskazuje pomyślne wdrożenie. Po uruchomieniu wszystkich trzech maszyn wirtualnych możesz przejść do następnego etapu. Naciśnij Ctrl-C , aby zatrzymać polecenie i kontynuować ćwiczenie.
Uruchom następujące polecenie, aby zapisać publiczny adres IP publicznej maszyny wirtualnej w zmiennej o nazwie
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
Uruchom następujące polecenie, aby zapisać publiczny adres IP prywatnej maszyny wirtualnej w zmiennej o nazwie
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
Testowanie routingu ruchu za pomocą wirtualnego urządzenia sieciowego
W ostatnich krokach użyjemy narzędzia traceroute
systemu Linux, aby pokazać, w jaki sposób jest kierowany ruch. Użyjesz ssh
polecenia , aby uruchomić traceroute
na każdej maszynie wirtualnej. Pierwszy test przedstawia trasę pobraną przez pakiety ICMP wysyłane z publicznej maszyny wirtualnej do prywatnej maszyny wirtualnej. Drugi test przedstawia trasę pobraną przez pakiety ICMP wysyłane z prywatnej maszyny wirtualnej do publicznej maszyny wirtualnej.
Uruchom następujące polecenie, aby śledzić trasę z publicznej do prywatnej. Po wyświetleniu monitu wprowadź hasło dla określonego wcześniej konta azureuser .
ssh -t -o StrictHostKeyChecking=no azureuser@$PUBLICIP 'traceroute private --type=icmp; exit'
Jeśli zostanie wyświetlony komunikat o błędzie z informacją
bash: traceroute: command not found
, zaczekaj chwilę i spróbuj ponownie wykonać polecenie. Automatyczna instalacja programu może potrwać minutę lub dwie po wdrożeniutraceroute
maszyny wirtualnej. Po pomyślnym wykonaniu polecenia dane wyjściowe powinny wyglądać podobnie do poniższego przykładu: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.
Zwróć uwagę, że pierwszy przeskok następuje do adresu 10.0.2.4. Ten adres jest prywatnym adresem IP nva. Drugi przeskok to 10.0.1.4, adres prywatny. W pierwszym ćwiczeniu dodano tę trasę do tabeli tras i połączono tabelę z podsiecią publicsubnet . Teraz cały ruch z publicznego do prywatnego jest kierowany przez urządzenie NVA.
Uruchom następujące polecenie, aby śledzić trasę z prywatnej do publicznej. Po wyświetleniu monitu wprowadź hasło dla konta azureuser .
ssh -t -o StrictHostKeyChecking=no azureuser@$PRIVATEIP 'traceroute public --type=icmp; exit'
Powinieneś zobaczyć, jak ruch trafia bezpośrednio do public (10.0.0.4) i nie przechodzi przez NVA, jak pokazano w poniższym wyniku polecenia.
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.
Prywatna maszyna wirtualna używa tras domyślnych, a ruch jest kierowany bezpośrednio między podsieciami.
Teraz skonfigurowano routing między podsieciami w celu kierowania ruchu z publicznego Internetu za pośrednictwem podsieci dmzsubnet , zanim osiągnie ona podsieć prywatną. W podsieci dmzsubnet dodano maszynę wirtualną, która działa jako wirtualne urządzenie sieciowe. To urządzenie można skonfigurować do wykrywania potencjalnie złośliwych żądań, aby móc zablokować je, zanim trafią do miejsc docelowych.