Guia de início rápido: usar o Azure PowerShell para criar uma rede virtual

Este guia de início rápido mostra como criar uma rede virtual usando o Azure PowerShell. Em seguida, você cria duas máquinas virtuais (VMs) na rede, conecta-se com segurança às VMs a partir da Internet e inicia a comunicação privada entre as VMs.

Uma rede virtual é o bloco de construção fundamental para redes privadas no Azure. A Rede Virtual do Azure permite que recursos do Azure, como VMs, se comuniquem com segurança entre si e com a Internet.

Diagrama de recursos criados no início rápido da rede virtual.

Pré-requisitos

  • Uma conta do Azure com uma subscrição ativa. Você pode criar uma conta gratuitamente.

  • Azure Cloud Shell ou Azure PowerShell.

    As etapas neste início rápido executam os cmdlets do Azure PowerShell interativamente no Azure Cloud Shell. Para executar os comandos no Cloud Shell, selecione Abrir Cloudshell no canto superior direito de um bloco de código. Selecione Copiar para copiar o código e cole-o no Cloud Shell para executá-lo. Você também pode executar o Cloud Shell de dentro do portal do Azure.

    Você também pode instalar o Azure PowerShell localmente para executar os cmdlets. As etapas neste artigo exigem o módulo do Azure PowerShell versão 5.4.1 ou posterior. Execute Get-Module -ListAvailable Az para encontrar a versão instalada. Se você precisar atualizar, consulte Atualizar o módulo do Azure PowerShell.

    Se você executar o PowerShell localmente, execute Connect-AzAccount para se conectar ao Azure.

Criar um grupo de recursos

Use New-AzResourceGroup para criar um grupo de recursos para hospedar a rede virtual. Execute o seguinte código para criar um grupo de recursos chamado test-rg na região eastus2 Azure:

$rg = @{
    Name = 'test-rg'
    Location = 'eastus2'
}
New-AzResourceGroup @rg

Criar uma rede virtual

  1. Use New-AzVirtualNetwork para criar uma rede virtual chamada vnet-1 com prefixo de endereço IP 10.0.0.0/16 no grupo de recursos test-rg e no local eastus2:

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. O Azure implanta recursos em uma sub-rede dentro de uma rede virtual. Use Add-AzVirtualNetworkSubnetConfig para criar uma configuração de sub-rede chamada subnet-1 com prefixo de endereço 10.0.0.0/24:

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. Associe a configuração da sub-rede à rede virtual usando Set-AzVirtualNetwork:

    $virtualNetwork | Set-AzVirtualNetwork
    

Implementar o Azure Bastion

O Azure Bastion usa seu navegador para se conectar a VMs em sua rede virtual por meio de Secure Shell (SSH) ou RDP (Remote Desktop Protocol) usando seus endereços IP privados. As VMs não precisam de endereços IP públicos, software cliente ou configuração especial. Para obter mais informações sobre Bastion, consulte O que é o Azure Bastion?.

O preço por hora começa a partir do momento em que o Bastion é implantado, independentemente do uso de dados de saída. Para obter mais informações, consulte Preços e SKUs. Se você estiver implantando o Bastion como parte de um tutorial ou teste, recomendamos excluir esse recurso depois de terminar de usá-lo.

  1. Configure uma sub-rede Bastion para sua rede virtual. Esta sub-rede é reservada exclusivamente para recursos Bastion e deve ser chamada AzureBastionSubnet.

    $subnet = @{
        Name = 'AzureBastionSubnet'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.1.0/26'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  2. Defina a configuração:

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Crie um endereço IP público para Bastion. O host Bastion usa o IP público para acessar SSH e RDP pela porta 443.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. Use o comando New-AzBastion para criar um novo host Standard SKU Bastion no AzureBastionSubnet:

    $bastion = @{
        Name = 'bastion'
        ResourceGroupName = 'test-rg'
        PublicIpAddressRgName = 'test-rg'
        PublicIpAddressName = 'public-ip'
        VirtualNetworkRgName = 'test-rg'
        VirtualNetworkName = 'vnet-1'
        Sku = 'Basic'
    }
    New-AzBastion @bastion
    

Leva cerca de 10 minutos para implantar os recursos do Bastion. Você pode criar VMs na próxima seção enquanto Bastion implanta em sua rede virtual.

Criar máquinas virtuais

Use New-AzVM para criar duas VMs chamadas vm-1 e vm-2 na sub-rede 1 da rede virtual. Quando você for solicitado a fornecer credenciais, insira nomes de usuário e senhas para as VMs.

  1. Para criar a primeira VM, use o seguinte código:

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-1"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-1"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-1"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    
  2. Para criar a segunda VM, use o seguinte código:

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-2"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-2"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-2"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    

Gorjeta

Você pode usar a -AsJob opção para criar uma VM em segundo plano enquanto continua com outras tarefas. Por exemplo, execute New-AzVM @vm1 -AsJob. Quando o Azure começa a criar a VM em segundo plano, você obtém algo como a seguinte saída:

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Long Running... AzureLongRun... Running       True            localhost            New-AzVM

O Azure leva alguns minutos para criar as VMs. Quando o Azure termina de criar as VMs, ele retorna a saída para o PowerShell.

Nota

As VMs em uma rede virtual com um host Bastion não precisam de endereços IP públicos. Bastion fornece o IP público, e as VMs usam IPs privados para se comunicar dentro da rede. Você pode remover os IPs públicos de qualquer VM em redes virtuais hospedadas no Bastion. Para obter mais informações, consulte Dissociar um endereço IP público de uma VM do Azure.

Nota

O Azure fornece um IP de acesso de saída padrão para VMs que não recebem um endereço IP público ou estão no pool de back-end de um balanceador de carga básico interno do Azure. O mecanismo IP de acesso de saída padrão fornece um endereço IP de saída que não é configurável.

O IP de acesso de saída padrão é desativado quando um dos seguintes eventos acontece:

  • Um endereço IP público é atribuído à VM.
  • A VM é colocada no pool de back-end de um balanceador de carga padrão, com ou sem regras de saída.
  • Um recurso do Gateway NAT do Azure é atribuído à sub-rede da VM.

As VMs que você cria usando conjuntos de dimensionamento de máquina virtual no modo de orquestração flexível não têm acesso de saída padrão.

Para obter mais informações sobre conexões de saída no Azure, consulte Acesso de saída padrão no Azure e Usar SNAT (Conversão de Endereço de Rede de Origem) para conexões de saída.

Ligar a uma máquina virtual

  1. No portal, procure e selecione Máquinas virtuais.

  2. Na página Máquinas virtuais, selecione vm-1.

  3. Nas informações de visão geral do vm-1, selecione Conectar.

  4. Na página Conectar à máquina virtual, selecione a guia Bastion.

  5. Selecione Usar bastião.

  6. Introduza o nome de utilizador e a palavra-passe que criou quando criou a VM e, em seguida, selecione Ligar.

Iniciar a comunicação entre VMs

  1. No prompt bash para vm-1, digite ping -c 4 vm-2.

    Você recebe uma resposta semelhante à seguinte mensagem:

    azureuser@vm-1:~$ ping -c 4 vm-2
    PING vm-2.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.5) 56(84) bytes of data.
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=1 ttl=64 time=1.83 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=2 ttl=64 time=0.987 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=3 ttl=64 time=0.864 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=4 ttl=64 time=0.890 ms
    
  2. Feche a conexão Bastion para vm-1.

  3. Repita as etapas em Conectar a uma máquina virtual para se conectar ao vm-2.

  4. No prompt bash para vm-2, digite ping -c 4 vm-1.

    Você recebe uma resposta semelhante à seguinte mensagem:

    azureuser@vm-2:~$ ping -c 4 vm-1
    PING vm-1.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.4) 56(84) bytes of data.
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=1 ttl=64 time=0.695 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=2 ttl=64 time=0.896 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=3 ttl=64 time=3.43 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=4 ttl=64 time=0.780 ms
    
  5. Feche a conexão Bastion para vm-2.

Clean up resources (Limpar recursos)

Quando terminar com a rede virtual e as VMs, use Remove-AzResourceGroup para remover o grupo de recursos e todos os seus recursos:

Remove-AzResourceGroup -Name 'test-rg' -Force

Próximos passos

Neste início rápido, você criou uma rede virtual com uma sub-rede padrão que contém duas VMs. Você implantou o Azure Bastion e o usou para se conectar às VMs e se comunicou com segurança entre as VMs. Para saber mais sobre as configurações de rede virtual, consulte Criar, alterar ou excluir uma rede virtual.