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

Wizualizacja maszyn wirtualnych i adresów IP.

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 Ctrl+S , aby zapisać plik, a następnie naciśnij Ctrl+Q , aby zamknąć edytor.

  4. 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>
    
  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ść 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.

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

  1. 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ż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 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.

    Diagram trasy z publicznej do prywatnej.

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

    Diagram trasy z prywatnej do publicznej.

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.