Subnet Peering na Azure: conectando subnets específicas entre VNets

Diagrama técnico mostrando Subnet Peering na Azure conectando apenas a subnet snet-app da vnet-app-prd à subnet snet-database da vnet-data-prd, enquanto outras subnets permanecem isoladas.

Em ambientes corporativos na Azure, o VNet Peering é um recurso muito utilizado para conectar redes virtuais. Ele permite que recursos em VNets diferentes se comuniquem usando IP privado, trafegando pela backbone privada da Microsoft.

Mas nem sempre a necessidade é conectar uma VNet inteira com outra.

Em muitos cenários, uma aplicação precisa acessar apenas uma subnet de banco de dados. Um spoke precisa consumir somente uma subnet de DNS no hub. Um fornecedor precisa acessar apenas uma subnet de integração. Ou uma landing zone precisa expor apenas os serviços realmente necessários.

Quando o requisito é esse, conectar todo o address space das VNets pode ser mais amplo do que o necessário.

É aqui que entra o Subnet Peering.

Em vez de criar uma conectividade ampla:

vnet-app-prd  <──>  vnet-data-prd

Podemos criar uma conectividade mais específica:

snet-app  <──>  snet-database

A diferença parece pequena, mas muda bastante a abordagem de segurança, governança e troubleshooting.


O que é Subnet Peering

Subnet Peering permite conectar subnets específicas entre VNets, em vez de parear a VNet inteira. Segundo a documentação oficial, o recurso conecta duas redes virtuais vinculando subnets específicas, dando controle granular sobre quais subnets participam do relacionamento de peering.

Na prática, você deixa de dizer:

A VNet de aplicação pode falar com a VNet de dados.

E passa a dizer:

A subnet da aplicação pode falar com a subnet do banco.

Esse detalhe ajuda a aplicar o princípio de menor privilégio também na camada de rede.


Quando usar Subnet Peering

Subnet Peering faz sentido quando existe uma necessidade clara de granularidade.

CenárioExemplo
Aplicação acessando bancosnet-appsnet-database
Spoke consumindo serviço compartilhadosnet-workloadsnet-dns
Integração com fornecedorsnet-partnersnet-api-internal
Private Endpoints centralizadossnet-appsnet-private-endpoints
Ambientes reguladosSubnets específicas por criticidade ou domínio

Não é um recurso para usar apenas porque existe. Ele deve resolver um problema real de exposição, governança ou segmentação.


Por que não controlar tudo apenas com firewall?

Firewall e peering resolvem problemas diferentes.

O peering define alcance de rede.
O firewall controla tráfego que passa por ele.

Se duas VNets estão pareadas e o tráfego segue diretamente pelo peering, uma regra no Azure Firewall não participa da decisão, a menos que exista uma rota direcionando esse tráfego para o firewall.

Em outras palavras:

Se o pacote não passa pelo firewall,
a regra do firewall não controla esse fluxo.

Um desenho mais saudável combina camadas:

CamadaFunção
Subnet PeeringDefine quais subnets participam da conectividade
NSGControla origem, destino, porta e protocolo
UDRForça caminho por firewall/NVA quando necessário
Azure Firewall/NVAInspeciona o tráfego que passa por ele
LogsApoiam auditoria e troubleshooting

Subnet Peering não substitui firewall, NSG ou UDR. Ele reduz o escopo inicial da conectividade.


Como o roteamento entra nessa história

No Azure, cada subnet possui rotas efetivas. Mesmo sem route table customizada, o Azure cria rotas de sistema. Quando existe peering, rotas relacionadas ao relacionamento entre redes passam a participar do caminho.

Com Subnet Peering, o ponto principal é validar se o caminho foi criado apenas para as subnets selecionadas.

Por isso, em troubleshooting, não valide apenas se o peering está Connected.

Valide também:

Peering state
Peering sync status
Subnets selecionadas
Effective routes
NSG
UDR, se houver
Teste real de porta

Roteamento define caminho.
NSG define permissão.
Firewall inspeciona quando o tráfego passa por ele.


Laboratório prático

Objetivo

O objetivo do laboratório foi validar, na prática, que o Subnet Peering libera conectividade apenas entre as subnets selecionadas.

A arquitetura usada foi:

arquitetura subnet peering

Arquietura de redes para o laboratório

vnet-app-prd
├── snet-web 10.50.1.0/24
├── snet-app 10.50.2.0/24
└── snet-admin 10.50.3.0/24

vnet-data-prd
├── snet-database 10.60.1.0/24
├── snet-backup 10.60.2.0/24
└── snet-admin 10.60.3.0/24

VMs usadas:

vm-web  → snet-web       → 10.50.1.10
vm-app → snet-app → 10.50.2.10
vm-db2 → snet-database → 10.60.1.20

A vm-db2 foi usada como destino do teste na porta 22. As VMs não possuem IP público, então os testes validam comunicação privada entre subnets.


Baseline antes do Subnet Peering

Antes de criar o peering, a expectativa era simples:

vm-app → vm-db2 = bloqueado
vm-web → vm-db2 = bloqueado

Na vm-db2, validei que a porta 22 estava em escuta:

Resultado: OK
Conclusao: a vm-db2 esta pronta para receber os testes de conectividade.

Depois executei testes via Run Command na vm-app e na vm-web.

Resultado na vm-app:

Resultado: OK
Conclusao: a vm-app nao acessa a vm-db2 antes do Subnet Peering.

Resultado na vm-web:

Resultado: OK
Conclusao: a vm-web nao acessa a vm-db2 antes do Subnet Peering.

Esse baseline é importante porque comprova que a conectividade ainda não existia.

vm-db2 pronta para receber conexão.

vm-db2 pronta para receber conexão.

vm-app bloqueada antes do peering.

vm-app bloqueada antes do peering.

vm-web bloqueada antes do peering.

vm-web bloqueada antes do peering.


Criação do Subnet Peering pelo portal

Para deixar o laboratório mais visual, a criação foi feita pelo portal do Azure.

Na tela de criação do peering, selecionei:

Peering type: Subnet
Remote virtual network: vnet-data-prd
Local subnet: snet-app
Remote subnet: snet-database

A configuração esperada era:

vnet-app-prd/snet-app

vnet-data-prd/snet-database

Após a criação, o portal mostrou o peering como:

Peering state: Connected
Peering sync status: Fully Synchronized

A validação técnica confirmou:

peerCompleteVnets: false
localSubnetNames: snet-app
remoteSubnetNames: snet-database
peeringv1

Criação do Subnet Peering pelo portal do Azure, selecionando subnets específicas em vez de parear toda a VNet.

peeringv2

Criação do Subnet Peering pelo portal do Azure, selecionando subnets específicas em vez de parear toda a VNet.


Ponto de atenção: feature da subscription

Durante o laboratório, a primeira tentativa de criação retornou:

Erro ao criar subnet peering

Erro ao criar subnet peering

A correção foi registrar a feature e atualizar o provider:

az feature register \
--namespace Microsoft.Network \
--name AllowMultiplePeeringLinksBetweenVnets

az provider register \
--namespace Microsoft.Network

Depois disso, o Subnet Peering pôde ser criado normalmente. Esse tipo de validação é importante antes de testar em ambientes reais.


Teste após o Subnet Peering

Depois de criar o Subnet Peering entre snet-app e snet-database, executei novamente os testes.

Resultado na vm-app:

Resultado: OK
Conclusao: a vm-app acessa a vm-db2 apos o Subnet Peering.

Resultado na vm-web:

Resultado: OK
Conclusao: a vm-web continua sem acesso, pois nao faz parte do Subnet Peering.

Esse foi o principal resultado do laboratório.

Mesmo estando na mesma VNet da vm-app, a vm-web continuou bloqueada porque a snet-web não fazia parte do peering.

OrigemDestinoResultado
vm-app / snet-appvm-db2 / snet-databasePermitido
vm-web / snet-webvm-db2 / snet-databaseBloqueado

Isso prova que o peering não abriu a VNet inteira.


Atualizando o peering: adicionando a snet-web

Como teste adicional, atualizei o mesmo Subnet Peering pelo portal e adicionei também a snet-web.

A configuração passou a ser:

vnet-app-prd/snet-app
vnet-app-prd/snet-web

vnet-data-prd/snet-database

Um detalhe importante apareceu aqui: ao editar o peering pelo portal, é necessário manter as subnets anteriores selecionadas. Se você desmarcar snet-app e marcar apenas snet-web, o peering passa a considerar somente a nova seleção.

Depois de adicionar snet-web e sincronizar o peering, a vm-web passou a acessar a vm-db2.

Resultado:

A vm-web acessa a vm-db2 após ser adicionada ao Subnet Peering.

A vm-web acessa a vm-db2 após ser adicionada ao Subnet Peering.

Resumo final:

OrigemDestinoResultado
vm-app / snet-appvm-db2 / snet-databasePermitido
vm-web / snet-webvm-db2 / snet-databasePermitido

Esse teste reforça o conceito principal:

A conectividade muda conforme as subnets são adicionadas ou removidas do Subnet Peering.

Sincronização do peering

Durante a edição, o portal pode exibir mensagens como:

Erro sync peering local

Isso indica que o peering está conectado, mas a alteração ainda precisa ser sincronizada entre os dois lados. A Microsoft recomenda sincronizar peerings quando há alteração de address space ou necessidade de atualização do relacionamento.

O estado esperado para concluir os testes é:

peering sync

Se a comunicação não funcionar logo após uma alteração, valide primeiro a sincronização antes de investigar NSG, rota ou firewall.


Posso ter Subnet Peering e VNet Peering na mesma VNet?

Sim, desde que sejam relacionamentos com VNets diferentes.

Exemplo:

vnet-app-prd
├── Subnet Peering com vnet-data-prd
│ └── subnets específicas

└── VNet Peering tradicional com outra VNet
└── VNet inteira

O que não deve ser assumido é criar vários peerings paralelos entre o mesmo par de VNets. Para alterar as subnets participantes, atualize o peering existente.


Cuidados antes de usar em produção

Antes de usar Subnet Peering em produção, valide:

PontoRecomendação
FeatureConfirme se a subscription está habilitada
PortalVerifique se Peering type = Subnet está disponível
SubnetsMantenha selecionadas todas as subnets necessárias
SincronizaçãoAguarde Fully Synchronized
SegurançaContinue usando NSG
RoteamentoValide effective routes
FirewallUse UDR se o tráfego precisar passar por inspeção
GovernançaDocumente origem, destino, porta e justificativa
AutomaçãoEm produção, prefira IaC ou pipeline controlado

Subnet Peering melhora a granularidade, mas também exige mais cuidado operacional.


Conclusão

Subnet Peering é útil quando a conectividade entre VNets precisa ser mais granular.

No laboratório, o comportamento ficou claro:

Antes do peering:
vm-app e vm-web não acessavam a vm-db2.

Após o Subnet Peering:
vm-app passou a acessar a vm-db2.
vm-web continuou bloqueada.

Após adicionar snet-web:
vm-web também passou a acessar a vm-db2.

Isso confirma que a conectividade é controlada pela lista de subnets participantes do peering, e não pela VNet inteira.

O principal aprendizado é simples:

Em cloud, conectividade não deve nascer ampla para ser corrigida depois.
Ela deve nascer mínima, documentada, validada e automatizada.

Subnet Peering não substitui NSG, UDR, firewall ou logs. Ele é mais uma camada para desenhar conectividade com menor exposição e melhor governança.


Referências oficiais

Deixe um comentário

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