Ćwiczenie — kierowanie ruchu przez urządzenie WUS

Ukończone

Po utworzeniu wirtualnego urządzenia sieciowego (WUS) i maszyn wirtualnych będziesz kierować ruch przez urządzenie WUS.

Visualization of virtual machines and IP addresses.

Tworzenie publicznych i prywatnych maszyn wirtualnych

Następne kroki umożliwiają wdrożenie maszyny wirtualnej w podsieciach publicznych i prywatnych.

  1. Otwórz edytor usługi Cloud Shell i utwórz plik o nazwie cloud-init.txt.

    code cloud-init.txt
    
  2. 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ędzie traceroute, którego użyjesz w dalszej części tego ćwiczenia.

    #cloud-config
    package_upgrade: true
    packages:
       - inetutils-traceroute
    
  3. Naciśnij klawisze Ctrl+S , aby zapisać plik, a następnie naciśnij klawisze Ctrl+Q , aby zamknąć edytor.

  4. W usłudze Cloud Shell uruchom następujące polecenie, aby utworzyć publiczną maszynę wirtualną. Zastąp frazę <password> 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>
    
  5. 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>
    
  6. Uruchom następujące polecenie systemu Linux watch , aby sprawdzić, czy maszyny wirtualne są uruchomione. Polecenie watch okresowo uruchamia az 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ść „Succeeded” elementu ProvisioningState i wartość „VM running” elementu PowerState oznaczają pomyślne wdrożenie. Po uruchomieniu wszystkich trzech maszyn wirtualnych możesz przejść do następnego etapu. Naciśnij klawisze Ctrl-C , aby zatrzymać polecenie i kontynuować ćwiczenie.

  7. 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
    
  8. 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 pokaże trasę pobraną przez pakiety ICMP wysyłane z publicznej maszyny wirtualnej do prywatnej maszyny wirtualnej. Drugi test pokaże trasę pobraną przez pakiety ICMP wysyłane z prywatnej maszyny wirtualnej do publicznej maszyny wirtualnej.

  1. Uruchom następujące polecenie, aby śledzić trasę z publicznej do prywatnej maszyny wirtualnej. Po wyświetleniu monitu wprowadź podane wcześniej hasło dla 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żeniu traceroute 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 urządzenia WUS. Drugi przeskok następuje do adresu 10.0.1.4 prywatnej maszyny wirtualnej. 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 WUS.

    Diagram of route from public to private.

  2. Uruchom następujące polecenie, aby śledzić trasę z prywatnej do publicznej maszyny wirtualnej. Po wyświetleniu monitu wprowadź hasło dla konta azureuser.

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

    Powinno być widać, że ruch przechodzi bezpośrednio do publicznej maszyny wirtualnej (10.0.0.4), a nie przez urządzenie WUS, jak pokazano poniżej w danych wyjściowych 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.

    Diagram of route from private to public.

Właśnie skonfigurowaliśmy routing między podsieciami, aby skierować ruch z publicznej sieci Internet do podsieci dmzsubnet, zanim dotrze on do podsieci prywatnej. W podsieci dmzsubnet dodano maszynę wirtualną działającą jako urządzenie WUS. To urządzenie można skonfigurować do wykrywania potencjalnie złośliwych żądań, aby móc zablokować je, zanim trafią do miejsc docelowych.