Peering de VNET no Azure — passo a passo (CLI, Portal e Bicep)
1) Visão geral e quando usar
O VNet Peering conecta duas redes virtuais para permitir tráfego privado entre elas usando a espinha dorsal do Azure. Funciona entre VNets na mesma região (peering regional) e em regiões diferentes (global VNet peering). É uma forma rápida de integrar workloads entre assinaturas, tenants (com RBAC adequado) e camadas de rede mantendo políticas de segurança.
2) Requisitos e limitações
- Espaços de endereços não podem se sobrepor.
- Permissões: ao menos
Network Contributornas VNets envolvidas. - Peering não é transitivo. Para trânsito via gateway, use Allow gateway transit (no hub) e Use remote gateways (nos spokes).
- Regras de NSG, UDRs e firewalls ainda se aplicam; o peering por si só não abre portas.
- Suporta regiões diferentes (global), mas data transfer tem custo e não suporta multicast.
3) Arquitetura de referência
Allow gateway transit no hub e Use remote gateways nos spokes.4) Criar pelo Azure Portal
- Abra a VNet A → Peerings → Add.
- Selecione This virtual network <= A e Remote virtual network = VNet B.
- Ative opções conforme necessidade:
- Allow forwarded traffic (se houver NVA/Firewall)
- Allow gateway transit / Use remote gateways
- Repita o processo no sentido oposto (B → A) caso não tenha marcado criação recíproca.
5) Criar via Azure CLI
Exemplo para duas VNets no mesmo grupo de recursos. Ajuste nomes/IDs conforme seu ambiente.
# Variáveis
RG=my-rg
VNET_A=vnet-hub
VNET_B=vnet-spoke
# Obter IDs das VNets
a_id=$(az network vnet show -g $RG -n $VNET_A --query id -o tsv)
b_id=$(az network vnet show -g $RG -n $VNET_B --query id -o tsv)
# Peering A -> B
az network vnet peering create \
--resource-group $RG \
--vnet-name $VNET_A \
--name peer-azure-vnet-peering-AtoB \
--remote-vnet $b_id \
--allow-vnet-access true \
--allow-forwarded-traffic true \
--allow-gateway-transit false
# Peering B -> A (usando gateway do hub)
az network vnet peering create \
--resource-group $RG \
--vnet-name $VNET_B \
--name peer-azure-vnet-peering-BtoA \
--remote-vnet $a_id \
--allow-vnet-access true \
--allow-forwarded-traffic true \
--use-remote-gateways true
6) Criar via Bicep (IaC)
Exemplo minimalista criando os peerings entre duas VNets existentes (referenciadas por ID).
// azure-vnet-peering.bicep
@description('ID da VNet A')
param vnetAId string
@description('ID da VNet B')
param vnetBId string
resource vnetA 'Microsoft.Network/virtualNetworks@2023-11-01' existing = { id: vnetAId }
resource vnetB 'Microsoft.Network/virtualNetworks@2023-11-01' existing = { id: vnetBId }
resource peerAtoB 'Microsoft.Network/virtualNetworks/virtualNetworkPeerings@2023-11-01' = {
name: '${{vnetA.name}}/peer-azure-vnet-peering-AtoB'
properties: {
remoteVirtualNetwork: { id: vnetB.id }
allowVirtualNetworkAccess: true
allowForwardedTraffic: true
allowGatewayTransit: false
useRemoteGateways: false
}
}
resource peerBtoA 'Microsoft.Network/virtualNetworks/virtualNetworkPeerings@2023-11-01' = {
name: '${{vnetB.name}}/peer-azure-vnet-peering-BtoA'
properties: {
remoteVirtualNetwork: { id: vnetA.id }
allowVirtualNetworkAccess: true
allowForwardedTraffic: true
allowGatewayTransit: false
useRemoteGateways: true
}
}
7) Validação de conectividade
- Use
Test-NetConnection <IP-da-VM> -Port 3389(Windows) ounc -vz <IP> 22(Linux) para testar portas reais. Ping/ICMP depende de NSG. - Verifique Effective routes na NIC da VM e confirme a rota VNetPeering.
- Cheque NSGs e UDRs (rotas definidas pelo usuário) para evitar bloqueios.
8) Custos e observações
O peering cobra por transferência de dados entre VNets (ingresso/egresso) e difere para peering regional vs global. Tráfego dentro da mesma região costuma ser mais barato que entre regiões. Planeje rotas para evitar hairpin desnecessário por NVAs.
9) Troubleshooting (erros comuns)
- Falha ao criar: endereços se sobrepõem. Ajuste os prefixos CIDR.
- Sem conectividade: NSG/Firewall/UDR bloqueando. Libere a porta/roteamento, valide effective security rules.
- Trânsito ao gateway não funciona: habilite Allow gateway transit no hub e Use remote gateways no spoke (não pode ter gateway local no spoke simultaneamente).
- DNS: configure servidores DNS personalizados ou Azure DNS Private Resolver para resolução cruzada entre VNets.
10) Limpeza
az network vnet peering delete -g $RG --vnet-name $VNET_A -n peer-azure-vnet-peering-AtoB
az network vnet peering delete -g $RG --vnet-name $VNET_B -n peer-azure-vnet-peering-BtoA
