Exercício – encaminhar o tráfego através de uma NVA

Concluído

Agora que você criou o dispositivo virtual de rede (NVA) e as máquinas virtuais (VMs), você roteará o tráfego através do NVA.

Visualization of virtual machines and IP addresses.

Criar máquinas virtuais públicas e privadas

As próximas etapas implantam uma VM nas sub-redes públicas e privadas.

  1. Abra o editor do Cloud Shell e crie um ficheiro com o nome cloud-init.txt.

    code cloud-init.txt
    
  2. Adicione as informações de configuração seguintes ao ficheiro. Com essa configuração, o inetutils-traceroute pacote é instalado quando você cria uma nova VM. Este pacote contém o utilitário traceroute que utilizará posteriormente neste exercício.

    #cloud-config
    package_upgrade: true
    packages:
       - inetutils-traceroute
    
  3. Prima Ctrl+S para guardar o ficheiro e, em seguida, prima Ctrl+Q para fechar o editor.

  4. No Cloud Shell, execute o seguinte comando para criar a VM pública . Substitua <password> por uma palavra-passe adequada para a conta 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. Execute o seguinte comando para criar a VM privada . Substitua <password> por uma palavra-passe adequada.

    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. Execute o seguinte comando Linux watch para verificar se as VMs estão em execução. O watch comando executa periodicamente o az vm list comando para que você possa monitorar o progresso das VMs.

    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"
    

    Um valor ProvisioningState a mostrar "Com êxito" e um valor PowerState a mostrar "VM em execução" indica uma implementação com êxito. Quando as três VMs estiverem em execução, estará pronto para avançar. Pressione Ctrl-C para parar o comando e continuar com o exercício.

  7. Execute o seguinte comando para salvar o endereço IP público da VM pública em uma variável chamada 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. Execute o seguinte comando para salvar o endereço IP público da VM privada em uma variável chamada 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
    

Testar o encaminhamento de tráfego através da aplicação virtual de rede

Os passos finais consistem em utilizar o utilitário traceroute do Linux para mostrar a forma como o tráfego é encaminhado. Você usará o ssh comando para executar traceroute em cada VM. O primeiro teste mostrará a rota tomada pelos pacotes ICMP enviados da VM pública para a VM privada . O segundo teste mostrará a rota tomada pelos pacotes ICMP enviados da VM privada para a VM pública .

  1. Execute o seguinte comando para rastrear a rota de público para privado. Quando lhe for pedido, introduza a palavra-passe da conta azureuser que especificou anteriormente.

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

    Se for apresentada a mensagem de erro bash: traceroute: command not found, aguarde um pouco e execute novamente o comando. A instalação automatizada do pode levar um ou dois minutos após a implantação da traceroute VM. Depois de o comando ser executado com êxito, o resultado deverá ter um aspeto semelhante ao exemplo seguinte:

    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.
    

    Repare que o primeiro salto é para 10.0.2.4. Este endereço é o endereço IP privado de nva. O segundo salto é para 10.0.1.4, o endereço de privado. No primeiro exercício, adicionou esta rota à tabela de rotas e associou a tabela à sub-rede publicsubnet. Assim, agora todo o tráfego do público para o privado é encaminhado através do NVA.

    Diagram of route from public to private.

  2. Execute o seguinte comando para rastrear a rota de privado para público. Quando lhe for pedido, introduza a palavra-passe da conta azureuser.

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

    Deverá ver o tráfego a ir diretamente para público (10.0.0.4) e não através da NVA, conforme mostrado no resultado do comando seguinte.

    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.
    

    A VM privada está usando rotas padrão e o tráfego é roteado diretamente entre as sub-redes.

    Diagram of route from private to public.

Acabou de configurar o encaminhamento entre sub-redes para direcionar o tráfego da Internet pública através da sub-rede dmzsubnet antes de alcançar a sub-rede privada. Na sub-rede dmzsubnet, você adicionou uma VM que atua como um NVA. Pode configurar esta NVA para detetar pedidos potencialmente maliciosos e bloqueá-los antes que alcancem os destinos pretendidos.