Configurar Vnet Peering utilizando o PowerShell

O que é VNet Peering?

.O VNet peering permite que você conecte diretamente duas ou mais redes virtuais no Azure. As redes virtuais aparecem como uma para fins de conectividade. O tráfego entre máquinas virtuais em redes virtuais emparelhadas usa a infraestrutura de backbone da Microsoft. Assim como o tráfego entre as máquinas virtuais na mesma rede, o tráfego é roteado somente pela rede privada da Microsoft.

Tipos de peering VNet

  • Virtual network peering: conecta redes virtuais na mesma região do Azure.
  • Global virtual network peering: conecta redes virtuais em regiões do Azure.

Já escrevi aqui no site um artigo sobre

Configurando Azure Global VNet Peering

Benefícios

  • Uma conexão de baixa latência e alta largura de banda entre recursos em diferentes redes virtuais.
  • A capacidade dos recursos de uma rede virtual de se comunicarem com os recursos de uma rede virtual diferente.
  • A capacidade de transferir dados entre redes virtuais em assinaturas do Azure, Azure Active Directory tenants, modelos de implantação e regiões do Azure.
  • A capacidade de parear redes virtuais criadas por meio do Azure Resource Manager.
  • A capacidade de fazer peering entre uma rede virtual criada por meio do Resource Manager e outra criada por meio do modelo de implantação clássico.
  • Sem tempo de inatividade para recursos em qualquer rede virtual ao criar o peering ou depois que o peering é criado.

O tráfego de rede entre redes virtuais com peering é privado. O tráfego entre as redes virtuais é mantido na rede backbone da Microsoft. Nenhuma Internet pública, gateway ou criptografia é necessária na comunicação entre as redes virtuais.

Limitações e restrições de VNet peering

  • A conexão de peering de redes virtuais não pode ser criada entre VNets que têm blocos CIDR correspondentes ou sobrepostos. Por exemplo se a Vnet-01 tiver o bloco 192.168.0.0/16 atribuído e a Vnet-02 também tiver o bloco 192.168.0.0/16 não é possível configurar o peering entre essas Vnets.
  • O peering de VNet não oferece suporte a relacionamentos de peering transitivos. Se A está em peering com B, B está em pe com C, A não está em peering com C.
  • Os recursos em uma rede virtual não podem se comunicar com o endereço IP de front-end de um Balanceador de Carga Interno Básico (ILB) em uma rede virtual com peering global.
  • Alguns serviços que usam um balanceador de carga básico não funcionam em peering de rede virtual global.
  • Não podemos adicionar intervalos de endereços, ou excluir intervalos de endereços de um espaço de endereço de rede virtual, uma vez que uma rede virtual faz peering com outra rede virtual.
  • Há uma cobrança nominal para o tráfego de entrada e saída que utiliza um peering de rede virtual.

Conectividade

Para redes virtuais com peering, os recursos em qualquer rede virtual podem se conectar diretamente aos recursos da rede virtual com peering.

A latência de rede entre as máquinas virtuais em redes virtuais com peering na mesma região é igual à latência em uma única rede virtual. A taxa de transferência da rede é baseada na largura de banda permitida para a máquina virtual, proporcional ao seu tamanho. Não há nenhuma restrição adicional de largura de banda no peering.

O tráfego entre máquinas virtuais em redes virtuais com peering é roteado diretamente pela infraestrutura de backbone da Microsoft, não por meio de um gateway ou pela Internet pública.

Você pode aplicar grupos de segurança de rede em qualquer rede virtual para bloquear o acesso a outras redes virtuais ou sub-redes. Ao configurar o peering de rede virtual, abra ou feche as regras do grupo de segurança de rede entre as redes virtuais. Se você abrir a conectividade total entre redes virtuais com peering, poderá aplicar grupos de segurança de rede para bloquear ou negar acesso específico. Conectividade total é a opção padrão. Para saber mais sobre grupos de segurança de rede, consulte Grupos de segurança .

Solucionar problemas

Para confirmar se as redes virtuais estão com peering, você pode verificar as rotas eficazes. Verifique as rotas de uma interface de rede em qualquer sub-rede em uma rede virtual. Se houver um peering de rede virtual, todas as sub-redes dentro da rede virtual terão rotas com peering VNet do tipo de próximo salto , para cada espaço de endereço em cada rede virtual com peering . Para obter mais informações, consulte Diagnosticar um problema de roteamento da máquina virtual .

Você também pode solucionar problemas de conectividade com uma máquina virtual em uma rede virtual com peering usando o Observador de Rede do Azure. Uma verificação de conectividade permite que você veja como o tráfego é roteado da interface de rede de uma máquina virtual de origem para a interface de rede de uma máquina virtual de destino. Para obter mais informações, consulte Solucionar problemas de conexões com o Observador da Rede do Azure usando o portal do Azure .

Configuração passo a passo

Criando a Vnet-01

01 – Faça login no portal do Azure 

02 – No portal do Azure, clique show portal menu e selecione Resource groups.

03 – Na tela Resource groups, clique em + Add.

04 – Na tela Create a resource group –> Basics, em Resource group selecione um nome para o recurso, em Region selecione a região que deseja hospedar o recurso, em seguida clique em Review + create.

05 – Na tela Tags, clique em Next: Review + create.

06 – Na tela Review + create, verifique se todas informações inseridas estão corretas e clique em Create.

07 – Como podemos observar na tela Resource groups o RG-Vnet foi criado com sucesso.

08 – No menu do portal do Azure, selecione Create a resource.

09 – No Azure Marketplace, pesquise por virtual network.

10 – Na tela Virtual Network, clique em Create.

11 – Na tela Create virtual network, selecione um grupo de recursos, subscription, nome para vnet e região, em seguida clique em Next: IP Address.

12 – Na tela IP Addresses, selecione um espaço de endereço IPv4, vamos utilizar 192.168.0.0/16. Em seguida clique em + Add subnet, digite um nome para a subnet (subnet-01) e o espaço de endereço IPv4 para a subnet, vamos utilizar 192.168.1.0/24, clique em Add.

13 – Espaço de endereço IPv4 configurado e subnet configurada , clique em Next: Security.

14 – Na tela Security, deixe as configurações padrões selecionadas e clique em Next: Tags.

15 – Na tela Tags, clique em Review + create.

16 – Na tela Review + create, verifique se todas as configurações inseridas estão corretas e clique em Create.

17 – Nossa virtual network está sendo provisionada.

18 – Como podemos observar na imagem abaixo nossa virtual network foi criado com sucesso.

19 – No portal do Azure, navegue até resouce groups, selecione o RG-Vnet e observe que nossa virtual network Vnet-01 foi criada.

Criando Virtual Machine na virtual network (Vnet-01)

20 – Abra o Cloud Shell e execute o script abaixo para criar uma máquina virtual na Vnet-01.

OBSERVAÇÃO:

Pressione Control+Shift+V para colocar os comandos no Cloud Shell

# Definindo as variáveis de rede
$ResourceGroup = “RG-Vnet”
$Location = “EastUS”
$vNetName = “Vnet-01”
$SubnetName = “subnet-01”
$nsgName = “nsg-Vnet01”

# Criando o Network Security Group
$nsgRuleVMAccess = New-AzNetworkSecurityRuleConfig -Name ‘allow-vm-access’ -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389,443,80 -Access Allow
New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Location $location -Name $nsgName -SecurityRules $nsgRuleVMAccess

# Definindo as variáveis da máquina virtual
$vNet = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroup -Name $vNetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNet
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NsgName
$vmName = “VM-01”
$pubName = “MicrosoftWindowsServer”
$offerName = “WindowsServer”
$skuName = “2016-Datacenter”
$vmSize = “Standard_DS2_v2”
$pipName = “$vmName-pip”
$nicName = “$vmName-nic”
$osDiskName = “$vmName-OsDisk”
$osDiskType = “Standard_LRS”

# Definindo as credenciais de administrador
$adminUsername = ‘jadson.alves’
$adminPassword = ‘Pa$$w0rd.qwe1234’
$adminCreds = New-Object PSCredential $adminUsername, ($adminPassword | ConvertTo-SecureString -AsPlainText -Force)

# Criando IP público e interface de rede NIC
$pip = New-AzPublicIpAddress -Name $pipName -ResourceGroupName $ResourceGroup -Location $location -AllocationMethod Static
$nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $ResourceGroup -Location $location -SubnetId $Subnet.Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

# Adicionando as configurações da máquina virtual
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize
Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id

# Setando os parâmetros do sistema operacional
Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $adminCreds

# Setando a imagem utilizada na máquina virtual
Set-AzVMSourceImage -VM $vmConfig -PublisherName $pubName -Offer $offerName -Skus $skuName -Version ‘latest’

# Setando as configurações de disco
Set-AzVMOSDisk -VM $vmConfig -Name $osDiskName -StorageAccountType $osDiskType -CreateOption fromImage

# Desabilitando o diagnóstico de boot
Set-AzVMBootDiagnostic -VM $vmConfig -Disable

# Criando a máquina virtual
New-AzVM -ResourceGroupName $ResourceGroup -Location $location -VM $vmConfig

21 – Como podemos observar na imagem abaixo a VM-01 foi criada com sucesso na Vnet-01

Observe que o Private IP address é 192.168.1.4, anote esse endereço IP porque vamos utiliza-lo para realizar os teste de comunicacão entre as vnets.

Criando a Vnet-02

22 – Podemos criar a Vnet-02 executandos os seguintes comandos.

# Criar Resource Group
New-AzResourceGroup -Name RG-Vnet02 -Location eastus

# Variável para criar subnet
$subnet = New-AzVirtualNetworkSubnetConfig -Name Subnet2 -AddressPrefix 172.16.1.0/24

# Criar virtual network

New-AzVirtualNetwork -ResourceGroupName RG-Vnet02  -Location eastus  -Name Vnet-02  -AddressPrefix 172.16.0.0/16  -Subnet $subnet

# Exibir todas as virtual networks criadas por nome
Get-AzVirtualNetwork |select Name

23 – Como podemos observar na imagem abaixo a Vnet02 foi criada com sucesso.

24 – No portal do Azure, navegue até resouce groups, selecione o RG-Vnet02  e observe que nossa virtual network Vnet-02 foi criada.

Criando Virtual Machine na virtual network (Vnet-02)

25 – Abra o Cloud Shell e execute o script abaixo para criar uma máquina virtual na Vnet-02.

OBSERVAÇÃO:

Pressione Control+Shift+V para colocar os comandos no Cloud Shell

# Definindo as variáveis de rede
$ResourceGroup = “RG-Vnet02”
$Location = “EastUS”
$vNetName = “Vnet-02”
$SubnetName = “Subnet2”
$nsgName = “nsg-Vnet02”

# Criando o Network Security Group
$nsgRuleVMAccess = New-AzNetworkSecurityRuleConfig -Name ‘allow-vm-access’ -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389,443,80 -Access Allow
New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Location $location -Name $nsgName -SecurityRules $nsgRuleVMAccess

# Definindo as variáveis da máquina virtual
$vNet = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroup -Name $vNetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNet
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NsgName
$vmName = “VM-02”
$pubName = “MicrosoftWindowsServer”
$offerName = “WindowsServer”
$skuName = “2016-Datacenter”
$vmSize = “Standard_DS2_v2”
$pipName = “$vmName-pip”
$nicName = “$vmName-nic”
$osDiskName = “$vmName-OsDisk”
$osDiskType = “Standard_LRS”

# Definindo as credenciais de administrador
$adminUsername = ‘jadson.alves’
$adminPassword = ‘Pa$$w0rd.qwe1234’
$adminCreds = New-Object PSCredential $adminUsername, ($adminPassword | ConvertTo-SecureString -AsPlainText -Force)

# Criando IP público e interface de rede NIC
$pip = New-AzPublicIpAddress -Name $pipName -ResourceGroupName $ResourceGroup -Location $location -AllocationMethod Static
$nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $ResourceGroup -Location $location -SubnetId $Subnet.Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

# Adicionando as configurações da máquina virtual
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize
Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id

# Setando os parâmetros do sistema operacional
Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $adminCreds

# Setando a imagem utilizada na máquina virtual
Set-AzVMSourceImage -VM $vmConfig -PublisherName $pubName -Offer $offerName -Skus $skuName -Version ‘latest’

# Setando as configurações de disco
Set-AzVMOSDisk -VM $vmConfig -Name $osDiskName -StorageAccountType $osDiskType -CreateOption fromImage

# Desabilitando o diagnóstico de boot
Set-AzVMBootDiagnostic -VM $vmConfig -Disable

# Criando a máquina virtual
New-AzVM -ResourceGroupName $ResourceGroup -Location $location -VM $vmConfig

26 – Como podemos observar na imagem abaixo a VM-02 foi criada na Vnet-02

Observe que o Private IP address é 172.16.1.4, anote esse endereço IP porque vamos utiliza-lo para realizar os teste de comunicacão entre as vnets.

Configurando o Peering

27 – O script abaixo cria um vnet peering

OBSERVAÇÃO: Pressiobe CONTROL+SHIFT+V para colocar os comandos no Azure Cloud Shell.
Aqui, definimos as características do nosso ambiente e as propriedades do recurso. Usaremos o cmdlet Get-AzVirtualNetwork para atribuir informações sobre VNet-01 e VNet-02 em duas variáveis.

# Defina as variáveis

$vnet1 = Get-AzVirtualNetwork -Name Vnet-01 -ResourceGroupName RG-Vnet
$vnet2 = Get-AzVirtualNetwork -Name Vnet-02 -ResourceGroupName RG-Vnet02

Para que o peering funcione corretamente, devemos criar um link de peering de VNET-01 para VNET-02 e vice-versa. Para criar um novo peering de VNet usando PowerShell, você deve usar o cmdlet Add-AzVirtualNetworkPeering como mostrado abaixo:

# Criando Peering entre Vnet-01 e Vnet-02
Add-AzVirtualNetworkPeering -Name Vnet1-to-Vnet2 -VirtualNetwork $vnet1  -RemoteVirtualNetworkId $vnet2.Id

# Crinado Peering entre Vnet-02 e Vnet-01

Add-AzVirtualNetworkPeering -Name Vnet2-to-vnet1 -VirtualNetwork $vnet2 -RemoteVirtualNetworkId $vnet1.Id

Como podemos observar na imagem abaixo o peering entre as vnets foi criado.

Verifique o status do peering

Se quiser verificar o status de peering das VNets, você deve usar o cmdlet Get-AzVirtualNetworkPeering conforme mostrado abaixo:

Como podemos observar na imagem abaixo o status do peering é conectado

Verifique o status do peering no portal

Testando a conexão de Peering entre as Vnets

Para testarmos se existe a comunicação entre a Vnet-01 e Vnet-02, vamos realizar um ping entre as máquinas virtuais VM-01 e VM-02.

Criar regra de firewall permitindo ICMPv4 para VM-01

Essa regra vai permitir que a VM-02 possa realizar um ping para a VM-01

33 – Primeiro vamos criar a regra de firewall na VM-01 que permite o protocolo ICMP-v4, abra o PowerShell como Administrator e execute e seguinte comando.

Permiti a entrada de ICMPs no servidor

netsh advfirewall firewall add rule name=“Permitir PING” protocol=icmpv4 dir=in action=allow

Listar a regra de firewall criada

Get-NetFirewallRule -DisplayName “Permitir Ping”

Remover a regra de firewall 

Remove-NetFirewallRule -DisplayName “Permitir Ping”

34 – Como podemos observar na imagem abaixo a regra de firewall (Permitir Ping) foi criada.

Criar regra de firewall permitindo ICMPv4 para VM-02

Essa regra vai permitir que a VM-01 possa realizar um ping para a VM-02

35 – Primeiro vamos criar a regra de firewall na VM-01 que permite o protocolo ICMP-v4, abra o PowerShell como Administrator e execute e seguinte comando.

Permiti a entrada de ICMPs no servidor

netsh advfirewall firewall add rule name=“Permitir PING” protocol=icmpv4 dir=in action=allow

Listar a regra de firewall criada

Get-NetFirewallRule -DisplayName “Permitir Ping”

Remover a regra de firewall 

Remove-NetFirewallRule -DisplayName “Permitir Ping”

36 – Como podemos observar na imagem abaixo a regra de firewall (Permitir Ping) foi criada.

 Testando o Peering

Para testar se as máquinas virtuais que estão na Vnet-01 podem se comunicar com as máquians que estão na Vnet-02 vamos realizar um ping entre as máquinas virtuais VM-01 e VM-02.

37 – Como podemos observar no vídeo abaixo a máquina virtual VM-01 que está na vnet-01 pode se comunicar com a VM-02 que está na Vnet-02 atrás do endereço IP.

PING entre VM-01 e VM-02

PING entre VM-02 e VM-01

38 – Como podemos observar no vídeo abaixo a máquina virtual VM-02  que está na vnet-02  pode se comunicar com a VM-01 que está na Vnet-01 atrás do endereço IP.

Percebam que VM-01 e VM-02 tem endereços de IP diferentes mas graças a configuração de peering essas redes podem se comunicar.

Configurando Private DNS zones

Embora as nossas máquinas virtuais já consigam se comunicar via endereço IP, ainda não há resolução de nomes no vnet peering.

O DNS privado do Azure fornece um serviço DNS confiável e seguro para gerenciar e resolver nomes de domínio em uma rede virtual sem a necessidade de adicionar uma solução DNS personalizada. Ao usar zonas DNS privadas você poderá usar seus próprios nomes de domínio personalizados, em vez dos nomes fornecidos pelo Azure atualmente disponíveis. O uso de nomes de domínio personalizados ajuda você a personalizar a sua arquitetura de rede virtual para melhor satisfazer às necessidades da sua organização. Esse uso fornece resolução de nomes para VMs (máquinas virtuais) em uma rede virtual e entre redes virtuais

39 – No portal do Azure, pesquise por Private DNS zones.

40 – Na tela Private DNS Zones, clique em + Add para criar uma private dns zone.

41 – Na tela Create Private DNS zone, selecione a Subscription, em Resource group clique em Create new, selecione o nome para o resource group, em nosso exemplo vamos utilizar o nome RG-Private_DNS, em seguida clique em OK.

42 – Para a opção Instance details –> Name, vamos escolher o nosso domínio privado, neste exemplo vou utilizar o private.jadsonalves.com.br, em Resource group location vamos selecionar a região East US, em seguida clique em Review + create.

43 – Na tela Review + create, observe se todas informações inseridas estão corretas e clique em Create.

44 – Clique em Private DNS zones, selecione o dns privada (private.jadsonalves.com.br).

45 – Selecione Settings –> Virtual network links e clique em +Add.

46 – Na tela Add virtual network link, vamos selecionar a subscription e a virtual network que será conectada na zona de DNS privado, selecione Enable auto registration que cria um registro automaticamente para cada recurso presente na rede virtual.

47 – Como podemos observar na imagem abaixo nosso link foi criado com sucesso.

48 – Vamos realizar o procedimento acima  para a Vnet-02, selecione Settings –> Virtual network links e clique em +Add.

49 – Na tela Add virtual network link, vamos selecionar a subscription e a virtual network que será conectada na zona de DNS privado, selecione Enable auto registration que cria um registro automaticamente para cada recurso presente na rede virtual.

50 – Como podemos observar na imagem abaixo os links para Vnet-01 e Vnet-02 foram criados com sucesso.

51 – Na tela Overview do DNS Privado, podemos observar que os registros de DNS já foram criados automaticamente conforme definimos anteriormente, os registros da vm-01 e vm-02 já foram configurados.

Testando a comunicação de rede utilizando o FQDN dos servidores

Para testar a comunicação de rede vamos realizar um ping do servidor VM-01 para o servidor VM-02.

Agora temos a garantia de que as nossas redes virtuais estão conectadas e estão com a resolução de nomes funcional.

Tem alguma sugestão ou observação, comente.

Forte abraço, obrigado e até o próximo post. 🙂

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *