Exercício – Rotear o tráfego por meio da NVA

Concluído

Agora que a NVA (solução de virtualização de rede) e as VMs (máquinas virtuais) foram criadas, você roteará o tráfego por meio da NVA.

Visualização de máquinas virtuais e endereços IP.

Criar máquinas virtuais públicas e privadas

As próximas etapas implantarão uma VM nas sub-redes pública e privada.

  1. Abra o editor do Cloud Shell e crie um arquivo denominado cloud-init.txt.

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

    #cloud-config
    package_upgrade: true
    packages:
       - inetutils-traceroute
    
  3. Pressione Ctrl+S para salvar o arquivo e, em seguida, pressione Ctrl+Q para fechar o editor.

  4. No Cloud Shell, execute o comando a seguir para criar a VM pública. Substitua <password> por uma senha da conta azureuser adequada.

    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 comando a seguir para criar a VM privada. Substitua <password> por uma senha 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 comando do Linux watch a seguir para verificar se as VMs estão em execução. O comando watch executa periodicamente o comando az vm list 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 de ProvisioningState igual a "Êxito" e um PowerState igual a "VM em execução" indicam uma implantação bem-sucedida. Quando todas as três VMs estiverem em execução, você estará pronto para prosseguir. Pressione CTRL + C para interromper o comando e continuar com o exercício.

  7. Execute o comando a seguir 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 comando a seguir 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 roteamento de tráfego por meio de uma solução de virtualização de rede

As etapas finais usam o utilitário traceroute do Linux para mostrar como o tráfego está sendo roteado. Você usará o comando ssh para executar traceroute em cada VM. O primeiro teste mostra a rota usada pelos pacotes ICMP enviados da VM pública para a VM privada. O segundo teste mostra a rota usada pelos pacotes ICMP enviados da VM privada para a VM pública.

  1. Execute o comando a seguir para rastrear a rota de pública para privada. Quando solicitado, insira a senha da conta azureuser que você especificou anteriormente.

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

    Se você receber a mensagem de erro bash: traceroute: command not found, aguarde um minuto e repita o comando. A instalação automatizada de traceroute pode levar um ou dois minutos após a implantação da VM. Após o comando ser bem-sucedido, a saída deverá ser semelhante à 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.
    

    Observe que o primeiro salto é para 10.0.2.4. Esse endereço é o endereço IP privado de nva. O segundo salto é para 10.0.1.4, o endereço de privada. No primeiro exercício, você adicionou essa rota à tabela de rotas e a vinculou à sub-rede publicsubnet. Portanto, todo o tráfego de pública para privada é roteado por meio da NVA.

    Diagrama da rota do público para privado.

  2. Execute o seguinte comando para rastrear a rota da privada para a pública. Quando solicitado, insira a senha da conta azureuser.

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

    Você deve ver o tráfego ir diretamente para a pública (10.0.0.4) e não por meio da NVA, conforme mostrado na saída de comando a seguir.

    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 usa rotas padrão, e o tráfego é roteado diretamente entre as sub-redes.

    Diagrama da rota do privado para público.

Agora você configurou o roteamento entre as sub-redes para direcionar o tráfego da Internet pública por meio da sub-rede dmzsubnet antes de ela atingir a sub-rede privada. Na sub-rede dmzsubnet, você adicionou uma VM que funciona como uma NVA. Você pode configurar essa NVA para detectar solicitações potencialmente mal-intencionadas e bloqueá-las antes que cheguem aos destinos pretendidos.