Conectar redes virtuais com emparelhamento de rede virtual usando o PowerShell

Pode ligar redes virtuais entre si com o peering de rede virtual. Depois de as redes virtuais estarem em modo de peering, os recursos nas duas redes virtuais conseguem comunicar entre si, com a mesma latência e largura de banda, como se os recursos estivessem na mesma rede virtual. Neste artigo, vai aprender a:

  • Criar duas redes virtuais
  • Ligar duas redes virtuais com um peering de rede virtual
  • Implementar uma máquina virtual (VM) em cada rede virtual
  • Comunicar entre VMs

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Azure Cloud Shell

O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Ligação
Selecione Experimentar no canto superior direito de um código ou bloco de comandos. Selecionar Experimentar não copia automaticamente o código ou comando para o Cloud Shell. Captura de tela que mostra um exemplo de Try It for Azure Cloud Shell.
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. Botão para iniciar o Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure. Captura de tela que mostra o botão Cloud Shell no portal do Azure

Para usar o Azure Cloud Shell:

  1. Inicie o Cloud Shell.

  2. Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou comando.

  3. Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e Linux ou selecionando Cmd+Shift+V no macOS.

  4. Selecione Enter para executar o código ou comando.

Se você optar por instalar e usar o PowerShell localmente, este artigo exigirá o módulo do Azure PowerShell versão 1.0.0 ou posterior. Execute Get-Module -ListAvailable Az para localizar a versão instalada. Se precisar de atualizar, veja Install Azure PowerShell module (Instalar o módulo do Azure PowerShell). Se estiver a executar localmente o PowerShell, também terá de executar o Connect-AzAccount para criar uma ligação com o Azure.

Criar redes virtuais

Antes de criar uma rede virtual, você precisa criar um grupo de recursos para a rede virtual e todos os outros recursos criados neste artigo. Crie um grupo de recursos com New-AzResourceGroup. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Crie uma rede virtual com New-AzVirtualNetwork. O exemplo a seguir cria uma rede virtual chamada myVirtualNetwork1 com o prefixo de endereço 10.0.0.0/16.

$virtualNetwork1 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork1 `
  -AddressPrefix 10.0.0.0/16

Crie uma configuração de sub-rede com Add-AzVirtualNetworkSubnetConfig. O exemplo a seguir cria uma configuração de sub-rede com um prefixo de endereço 10.0.0.0/24:

$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork1

Escreva a configuração da sub-rede na rede virtual com Set-AzVirtualNetwork, que cria a sub-rede:

$virtualNetwork1 | Set-AzVirtualNetwork

Crie uma rede virtual com um prefixo de endereço 10.1.0.0/16 e uma sub-rede:

# Create the virtual network.
$virtualNetwork2 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork2 `
  -AddressPrefix 10.1.0.0/16

# Create the subnet configuration.
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.1.0.0/24 `
  -VirtualNetwork $virtualNetwork2

# Write the subnet configuration to the virtual network.
$virtualNetwork2 | Set-AzVirtualNetwork

Colocar redes virtuais em modo de peering

Crie um emparelhamento com Add-AzVirtualNetworkPeering. O exemplo a seguir emparelha myVirtualNetwork1 a myVirtualNetwork2.

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork1-myVirtualNetwork2 `
  -VirtualNetwork $virtualNetwork1 `
  -RemoteVirtualNetworkId $virtualNetwork2.Id

Na saída retornada após a execução do comando anterior, você vê que o PeeringState é Iniciado. O emparelhamento permanece no estado Iniciado até que você crie o emparelhamento de myVirtualNetwork2 para myVirtualNetwork1. Crie um emparelhamento de myVirtualNetwork2 para myVirtualNetwork1.

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork2-myVirtualNetwork1 `
  -VirtualNetwork $virtualNetwork2 `
  -RemoteVirtualNetworkId $virtualNetwork1.Id

Na saída retornada após a execução do comando anterior, você vê que o PeeringState está conectado. O Azure também alterou o estado de emparelhamento do emparelhamento myVirtualNetwork1-myVirtualNetwork2 para Connected. Confirme se o estado de emparelhamento para o emparelhamento myVirtualNetwork1-myVirtualNetwork2 foi alterado para Connected with Get-AzVirtualNetworkPeering.

Get-AzVirtualNetworkPeering `
  -ResourceGroupName myResourceGroup `
  -VirtualNetworkName myVirtualNetwork1 `
  | Select PeeringState

Os recursos em uma rede virtual não podem se comunicar com recursos na outra rede virtual até que o PeeringState para os emparelhamentos em ambas as redes virtuais esteja Conectado.

Criar máquinas virtuais

Crie uma VM em cada rede virtual, para que possa comunicar entre as mesmas num passo posterior.

Criar a primeira VM

Crie uma VM com New-AzVM. O exemplo a seguir cria uma VM chamada myVm1 na rede virtual myVirtualNetwork1 . A -AsJob opção cria a VM em segundo plano, para que você possa continuar para a próxima etapa. Quando solicitado, digite o nome de usuário e a senha com os quais você deseja fazer login na VM.

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork1" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm1" `
  -AsJob

Criar a segunda VM

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork2" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm2"

A criação da VM demora alguns minutos. Não continue com as etapas posteriores até que o Azure crie a VM e retorne a saída para o PowerShell.

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.

Comunicar entre VMs

Você pode se conectar ao endereço IP público de uma VM a partir da Internet. Use Get-AzPublicIpAddress para retornar o endereço IP público de uma VM. O exemplo seguinte devolve o endereço IP público da VM myVm1:

Get-AzPublicIpAddress `
  -Name myVm1 `
  -ResourceGroupName myResourceGroup | Select IpAddress

Use o comando a seguir para criar uma sessão de área de trabalho remota com a VM myVm1 do seu computador local. Substitua <publicIpAddress> pelo endereço IP devolvido no comando anterior.

mstsc /v:<publicIpAddress>

Um ficheiro de Protocolo de Ambiente de Trabalho Remoto (.rdp) é criado, transferido para o computador e aberto. Introduza o nome de utilizador e a palavra-passe (poderá ter de selecionar Mais opções e, em seguida, Utilizar uma conta diferente, para especificar as credenciais que introduziu quando criou a VM) e, em seguida, clique em OK. Poderá receber um aviso de certificado durante o processo de início de sessão. Clique em Sim ou Continuar para continuar com a ligação.

Na VM myVm1, habilite o ICMP (Internet Control Message Protocol) por meio do firewall do Windows para que você possa executar ping nessa VM a partir de myVm2 em uma etapa posterior, usando o PowerShell:

New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4

Embora o ping seja usado para se comunicar entre VMs neste artigo, não é recomendável permitir ICMP por meio do Firewall do Windows para implantações de produção.

Para ligar à VM myVm2, introduza o seguinte comando numa linha de comandos da VM myVm1:

mstsc /v:10.1.0.4

Desde que você ativou o ping em myVm1, agora você pode ping por endereço IP a partir de um prompt de comando na VM myVm2:

ping 10.0.0.4

Recebe quatro respostas. Desligue as sessões RDP das myVm1 e myVm2.

Clean up resources (Limpar recursos)

Quando não for mais necessário, use Remove-AzResourcegroup para remover o grupo de recursos e todos os recursos que ele contém.

Remove-AzResourceGroup -Name myResourceGroup -Force

Próximos passos

Neste artigo, você aprendeu como conectar duas redes na mesma região do Azure, com emparelhamento de rede virtual. Também pode ligar em modo de peering máquinas virtuais em diferentes regiões suportadas e em diferentes subscrições do Azure, bem como criar designs de rede hub-and-spoke com peering. Para obter mais informações sobre o peering de rede virtual, veja Descrição geral do peering de rede virtual e Gerir peerings de rede virtual.

Você pode conectar seu próprio computador a uma rede virtual por meio de uma VPN e interagir com recursos em uma rede virtual ou em redes virtuais emparelhadas. Para scripts reutilizáveis para concluir muitas das tarefas abordadas nos artigos de rede virtual, consulte exemplos de script.