Øvelse – rutetrafik gennem NVA

Fuldført

Nu, hvor du har oprettet NVA (Network Virtual Appliance) og virtuelle maskiner (VM'er), skal du dirigere trafikken gennem NVA.

Visualisering af virtuelle maskiner og IP-adresser.

Opret offentlige og private virtuelle maskiner

De næste trin udruller en VM i de offentlige og private undernet.

  1. Åbn Cloud Shell-editoren, og opret en fil med navnet cloud-init.txt.

    code cloud-init.txt
    
  2. Føj følgende konfigurationsoplysninger til filen. Med denne konfiguration installeres inetutils-traceroute-pakken, når du opretter en ny VM. Denne pakke indeholder det traceroute værktøj, du skal bruge senere i denne øvelse.

    #cloud-config
    package_upgrade: true
    packages:
       - inetutils-traceroute
    
  3. Tryk på Ctrl+S for at gemme filen, og tryk derefter på Ctrl+Q for at lukke editoren.

  4. Kør følgende kommando i Cloud Shell for at oprette den offentlige VM. Erstat <password> med en passende adgangskode til den azureuser--konto.

    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. Kør følgende kommando for at oprette den private VM. Erstat <password> med en passende adgangskode.

    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. Kør følgende Linux-watch kommando for at kontrollere, at VM'erne kører. Kommandoen watch kører jævnligt kommandoen az vm list, så du kan overvåge status for VM'erne.

    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"
    

    En ProvisioningState- værdi af "Lykkedes" og en PowerState- værdi for "VM kører" angiver en vellykket installation. Når alle tre VM'er kører, er du klar til at gå videre. Tryk på Ctrl+C for at stoppe kommandoen og fortsætte med øvelsen.

  7. Kør følgende kommando for at gemme den offentlige IP-adresse for den offentlige VM i en variabel med navnet 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. Kør følgende kommando for at gemme den offentlige IP-adresse for den private VM i en variabel med navnet 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
    

Test trafikdistribution gennem det virtuelle netværksapparat

De sidste trin bruger Linux-traceroute-værktøjet til at vise, hvordan trafikken dirigeres. Du skal bruge kommandoen ssh til at køre traceroute på hver VM. Den første test viser den rute, der er taget af ICMP-pakker, der sendes fra den offentlige VM til den private VM. Den anden test viser den rute, der er taget af ICMP-pakker, der sendes fra den private VM til den offentlige VM.

  1. Kør følgende kommando for at spore ruten fra offentlige til private. Når du bliver bedt om det, skal du angive adgangskoden for den azureuser konto, du har angivet tidligere.

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

    Hvis du får vist fejlmeddelelsen bash: traceroute: command not found, skal du vente et øjeblik og prøve kommandoen igen. Den automatiserede installation af traceroute kan tage et minut eller to efter udrulningen af vm'en. Når kommandoen er fuldført, skal outputtet ligne følgende eksempel:

    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.
    

    Bemærk, at det første hop er til 10.0.2.4. Denne adresse er den private IP-adresse for nva. Det andet hop er til 10.0.1.4, adressen på private. I den første øvelse føjede du denne rute til rutetabellen og sammenkædede tabellen med publicsubnet undernet. Så nu dirigeres al trafik fra offentlige til private via NVA.

    Rutediagram fra offentlig til privat.

  2. Kør følgende kommando for at spore ruten fra private til offentlige. Når du bliver bedt om det, skal du angive adgangskoden for den azureuser-konto.

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

    Du bør kunne se, at trafikken går direkte til offentlige (10.0.0.4) og ikke via NVA, som vist i følgende kommandooutput.

    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.
    

    Den private VM bruger standardruter, og trafikken dirigeres direkte mellem undernet.

    Rutediagram fra privat til offentlig.

Du har nu konfigureret routing mellem undernet for at dirigere trafik fra det offentlige internet via dmzsubnet undernet, før det når det private undernet. I dmzsubnet undernet har du tilføjet en VM, der fungerer som en NVA. Du kan konfigurere denne NVA til at registrere potentielt skadelige anmodninger og blokere dem, før de når deres tilsigtede mål.