Configurar o Azure Virtual WAN

Configurar o Azure Virtual WAN

O Azure Virtual WAN é um serviço de rede de grande escala. Ele unifica conectividade, segurança e roteamento global em uma única interface operacional. Neste tutorial você aprenderá a configurar o Azure Virtual WAN passo a passo. Vamos criar o Virtual Hub, o VPN Gateway, conexões de filiais (VPN Sites) e políticas de roteamento com segurança integrada.

O que é Azure Virtual WAN?

Em termos gerais, o Azure Virtual WAN é uma plataforma de rede gerenciada pelo Azure. Ela centraliza filiais, usuários remotos, VNets e circuitos ExpressRoute em uma arquitetura hub-and-spoke.

Além disso, os principais componentes do Azure Virtual WAN são:

  • Virtual WAN — recurso raiz que agrupa todos os hubs e conexões de uma organização.
  • Virtual Hub — roteador regional gerenciado pelo Azure; centraliza o tráfego de uma região específica.
  • VPN Gateway — gateway de VPN site-to-site dentro do Virtual Hub para conexão de filiais.
  • ExpressRoute Gateway — gateway para circuitos ExpressRoute dedicados.
  • VPN Site — representa uma filial ou data center on-premises.
  • Hub VNet Connection — conecta VNets spoke ao Virtual Hub via peering gerenciado.
  • Routing Intent — política de roteamento que força tráfego via Azure Firewall para inspeção.
Diagrama da arquitetura Azure Virtual WAN com Virtual Hub, VPN Gateway, VNets e filiais conectadas
Arquitetura: Filiais (VPN Sites) → VPN Gateway → Virtual Hub → VNets Spoke

Tipos de Virtual WAN

O Azure Virtual WAN está disponível em dois SKUs com capacidades distintas:

RecursoBasicStandard
Site-to-Site VPN Sim Sim
Point-to-Site VPN (User VPN) Não Sim
ExpressRoute Não Sim
Hub-to-Hub Transit Não Sim
Azure Firewall no Hub Não Sim
Routing Intent / Routing Policies Não Sim
BGP entre VNets e filiais Não Sim

Portanto, neste tutorial usaremos o SKU Standard, recomendado para ambientes corporativos com múltiplas regiões e necessidade de segurança centralizada.

Pré-requisitos

  • AZ CLI instalado e atualizado (az upgrade)
  • Conta Azure com permissão de Contributor na subscription
  • Provider Microsoft.Network registrado na subscription
  • Endereço IP público da filial on-premises para o VPN Site
  • Espaço de endereçamento privado das filiais (CIDR)
# Verificar versão do AZ CLI
az version

# Login no Azure
az login

# Registrar o provider de rede
az provider register --namespace Microsoft.Network

# Verificar registro (aguarde o status "Registered")
az provider show --namespace Microsoft.Network --query "registrationState"

Variáveis de Ambiente

Com as variáveis definidas, você está pronto para configurar o Azure Virtual WAN nos passos a seguir.

Primeiramente, defina todas as variáveis antes de executar os comandos. Substitua os valores de IP e CIDR pelos endereços reais da sua infraestrutura.

# ── Identificação ─────────────────────────────────────────────────────────────
SUBSCRIPTION_ID=$(az account show --query id -o tsv)
LOCATION="eastus"

# ── Nomes dos Recursos (padrão vwan-castilho) ──────────────────────────────────
RESOURCE_GROUP="rg-vwan-castilho"
VWAN_NAME="vwan-castilho"
HUB_NAME="vhub-castilho-eastus"
VPN_GW_NAME="vpngw-castilho"
VPN_SITE_NAME="vpnsite-filial-sp"
VPN_CONNECTION_NAME="conn-filial-sp"
VNET_NAME="vnet-spoke-castilho"
VNET_CONNECTION_NAME="conn-vnet-spoke"

# ── Endereçamento ──────────────────────────────────────────────────────────────
HUB_ADDRESS_PREFIX="10.0.0.0/23"          # Endereço do hub (mín. /24)
VNET_ADDRESS_PREFIX="10.10.0.0/16"        # Endereço da VNet spoke
BRANCH_ADDRESS_PREFIX="192.168.1.0/24"    # CIDR da filial on-premises
BRANCH_PUBLIC_IP="203.0.113.10"           # IP público do roteador da filial

# ── VPN ───────────────────────────────────────────────────────────────────────
VPN_PSK="$(openssl rand -base64 32)"      # Pré-shared key aleatória

echo "Variáveis definidas com sucesso!"
echo "Subscription: $SUBSCRIPTION_ID"
echo "VPN PSK gerada (salve em local seguro): $VPN_PSK"

Para configurar o Azure Virtual WAN, o Resource Group é o container que agrupará todos os seus recursos de rede.

Passo 1 — Criar o Resource Group

az group create \
  --name "$RESOURCE_GROUP" \
  --location "$LOCATION" \
  --tags \
    projeto="vwan-castilho" \
    ambiente="producao" \
    responsavel="seu-email@empresa.com"

# Verificar criação
az group show \
  --name "$RESOURCE_GROUP" \
  --query "{nome:name, local:location, status:properties.provisioningState}"

Ao configurar o Azure Virtual WAN, o tipo Standard é obrigatório para habilitar VPN Gateway e Azure Firewall no hub.

Passo 2 — Criar o Virtual WAN

Em primeiro lugar, o Virtual WAN é o recurso raiz que agrupa todos os hubs e conexões. Use o SKU Standard para ter acesso a todos os recursos: ExpressRoute, User VPN, Azure Firewall e roteamento inter-hub.

az network vwan create \
  --name "$VWAN_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "$LOCATION" \
  --type Standard \
  --tags \
    projeto="vwan-castilho" \
    ambiente="producao"

# Capturar o ID do Virtual WAN
VWAN_ID=$(az network vwan show \
  --name "$VWAN_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query id -o tsv)

echo "Virtual WAN ID: $VWAN_ID"
ℹ️ Informação: O SKU do Virtual WAN não pode ser alterado após a criação. Se você criar como Basic e precisar de recursos Standard, será necessário recriar o recurso. Planeje antes de provisionar.

Ao configurar o Azure Virtual WAN com um Virtual Hub ativo, você estabelece o ponto central de roteamento da sua rede global.

Passo 3 — Criar o Virtual Hub

Em seguida, o Virtual Hub é o roteador regional gerenciado. Ele exige um bloco de endereço privado dedicado mínimo de /24. Nunca use um prefixo já utilizado em outra VNet ou filial. O provisionamento leva em torno de 30 a 60 minutos.

az network vhub create \
  --name "$HUB_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "$LOCATION" \
  --vwan "$VWAN_NAME" \
  --address-prefix "$HUB_ADDRESS_PREFIX" \
  --sku Standard \
  --tags \
    projeto="vwan-castilho" \
    ambiente="producao"

# Monitorar o provisionamento (aguarde "Succeeded")
az network vhub show \
  --name "$HUB_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query "{nome:name, status:provisioningState, routingState:routingState}"
⚠️ Atenção: O Virtual Hub ficará no estado Updating durante o provisionamento. Aguarde o provisioningState chegar em Succeeded antes de prosseguir com os próximos passos. Verifique com az network vhub show periodicamente.

O VPN Gateway é indispensável ao configurar o Azure Virtual WAN para conexões IPsec com filiais remotas.

Passo 4 — Criar o VPN Gateway no Hub

Além disso, o VPN Gateway do Virtual WAN é diferente do Azure VPN Gateway tradicional. Ele é provisionado dentro do hub e gerenciado automaticamente. A escala é definida em unidades de escala: 1 unidade equivale a 500 Mbps de throughput agregado.

az network vpn-gateway create \
  --name "$VPN_GW_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "$LOCATION" \
  --vhub "$HUB_NAME" \
  --scale-unit 1 \
  --tags \
    projeto="vwan-castilho" \
    ambiente="producao"

# Monitorar o provisionamento (leva ~30 minutos)
az network vpn-gateway show \
  --name "$VPN_GW_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query "{nome:name, status:provisioningState, bgpAsn:bgpSettings.asn}"

Tabela de Unidades de Escala do VPN Gateway

UnitThroughput AgregadoConexões FiliaisUso
Scale deRecomendado
1 500 Mbps Até 1.000 Ambientes pequenos / laboratório
2 1 Gbps Até 1.000 Médias empresas
10 5 Gbps Até 5.000 Grandes empresas
20 10 Gbps Até 10.000 Corporações globais

Passo 5 — Criar o VPN Site (Filial)

Especificamente, o VPN Site representa uma filial ou data center on-premises. Você precisa informar o IP público do roteador da filial e o bloco CIDR que ela utiliza internamente.

az network vpn-site create \
  --name "$VPN_SITE_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "$LOCATION" \
  --virtual-wan "$VWAN_NAME" \
  --ip-address "$BRANCH_PUBLIC_IP" \
  --address-prefixes "$BRANCH_ADDRESS_PREFIX" \
  --device-vendor "Cisco" \
  --device-model "ASR1000" \
  --link-speed 100 \
  --tags \
    projeto="vwan-castilho" \
    filial="sao-paulo"

# Capturar o ID do VPN Site
VPN_SITE_ID=$(az network vpn-site show \
  --name "$VPN_SITE_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query id -o tsv)

echo "VPN Site ID: $VPN_SITE_ID"

VPN Site com BGP habilitado

Também é possível usar roteamento dinâmico via BGP. Nesse caso, adicione as configurações abaixo ao criar o VPN Site:

# VPN Site com BGP (substituir pelos ASN e IP BGP reais da filial)
az network vpn-site create \
  --name "$VPN_SITE_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "$LOCATION" \
  --virtual-wan "$VWAN_NAME" \
  --ip-address "$BRANCH_PUBLIC_IP" \
  --address-prefixes "$BRANCH_ADDRESS_PREFIX" \
  --asn 65001 \
  --bgp-peering-address "192.168.1.254" \
  --tags \
    projeto="vwan-castilho" \
    filial="sao-paulo"

A conexão VPN conclui o processo de configurar o Azure Virtual WAN para comunicação segura com a filial on-premises.

Passo 6 — Conectar o VPN Site ao Hub

Com o VPN Gateway e o VPN Site criados, crie a conexão entre o hub e a filial. Ela estabelece o túnel IPsec/IKEv2. O campo --shared-key deve conter a mesma PSK configurada no roteador da filial.

az network vpn-gateway connection create \
  --name "$VPN_CONNECTION_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --gateway-name "$VPN_GW_NAME" \
  --vpn-site "$VPN_SITE_ID" \
  --shared-key "$VPN_PSK" \
  --enable-bgp false \
  --protocol-type IKEv2 \
  --connection-bandwidth 100

# Verificar o status da conexão
az network vpn-gateway connection show \
  --name "$VPN_CONNECTION_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --gateway-name "$VPN_GW_NAME" \
  --query "{nome:name, status:provisioningState, conexao:connectionStatus}"

Baixar a Configuração para o Roteador da Filial

Além disso, o Azure gera automaticamente um arquivo de configuração para os principais fabricantes de roteadores (Cisco, Palo Alto, Fortinet, etc.):

# Baixar configuração para o roteador da filial
az network vpn-site download \
  --resource-group "$RESOURCE_GROUP" \
  --vwan-name "$VWAN_NAME" \
  --vpn-sites "$VPN_SITE_ID" \
  --output-blob-sas-url "$(az storage blob generate-sas \
    --account-name  \
    --container-name configs \
    --name "vpn-config-filial.json" \
    --permissions rw \
    --expiry $(date -u -d '+1 hour' '+%Y-%m-%dT%H:%MZ') \
    --full-uri -o tsv)"

Conectar uma VNet ao hub é o último passo estrutural para configurar o Azure Virtual WAN com roteamento completo entre spoke e filiais.

Passo 7 — Conectar uma VNet ao Virtual Hub

Da mesma forma, as VNets spoke são conectadas ao Virtual Hub por meio de Hub VNet Connections. Elas criam um peering gerenciado automaticamente. Como resultado, as VMs passam a rotear o tráfego para filiais e outras VNets via o hub.

# Criar a VNet spoke (caso ainda não exista)
az network vnet create \
  --name "$VNET_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "$LOCATION" \
  --address-prefixes "$VNET_ADDRESS_PREFIX" \
  --tags \
    projeto="vwan-castilho" \
    ambiente="producao"

# Capturar o ID da VNet
VNET_ID=$(az network vnet show \
  --name "$VNET_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query id -o tsv)

# Conectar a VNet ao Virtual Hub
az network vhub connection create \
  --name "$VNET_CONNECTION_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --vhub-name "$HUB_NAME" \
  --remote-vnet "$VNET_ID"

echo "VNet $VNET_NAME conectada ao hub $HUB_NAME!"

# Verificar a conexão
az network vhub connection show \
  --name "$VNET_CONNECTION_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --vhub-name "$HUB_NAME" \
  --query "{nome:name, status:provisioningState, vnet:remoteVnet.id}"

Passo 8 — Configurar Routing Intent (Segurança Centralizada)

Por fim, o Routing Intent força todo o tráfego privado e de Internet a passar pelo Azure Firewall no hub. Dessa forma, garante-se inspeção centralizada. Este passo requer que o Azure Firewall já esteja provisionado no hub.

8.1 — Criar o Azure Firewall no Hub

# Criar Azure Firewall Policy
FIREWALL_POLICY_NAME="fw-policy-castilho"
FIREWALL_NAME="fw-castilho"

az network firewall policy create \
  --name "$FIREWALL_POLICY_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "$LOCATION" \
  --sku Premium \
  --threat-intel-mode Alert

# Criar o Azure Firewall dentro do Virtual Hub
az network firewall create \
  --name "$FIREWALL_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "$LOCATION" \
  --vhub "$HUB_NAME" \
  --sku AZFW_Hub \
  --tier Premium \
  --firewall-policy "$FIREWALL_POLICY_NAME" \
  --public-ip-count 1

# Capturar o ID do Firewall
FIREWALL_ID=$(az network firewall show \
  --name "$FIREWALL_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query id -o tsv)

echo "Azure Firewall ID: $FIREWALL_ID"

8.2 — Habilitar o Routing Intent

# Habilitar Routing Intent para tráfego privado e Internet via Azure Firewall
az network vhub routing-intent create \
  --name "routing-intent-castilho" \
  --resource-group "$RESOURCE_GROUP" \
  --vhub "$HUB_NAME" \
  --routing-policies \
    name=PrivateTrafficPolicy,destinations=PrivateTraffic,nexthop="$FIREWALL_ID" \
    name=InternetTrafficPolicy,destinations=Internet,nexthop="$FIREWALL_ID"

# Verificar o Routing Intent
az network vhub routing-intent show \
  --name "routing-intent-castilho" \
  --resource-group "$RESOURCE_GROUP" \
  --vhub "$HUB_NAME" \
  --query "{nome:name, status:provisioningState, policies:routingPolicies}"
⚠️ Atenção: Ao habilitar o Routing Intent, todo o tráfego entre VNets e filiais passará pelo Azure Firewall. Verifique as regras de firewall antes de habilitar em produção para evitar interrupção de conectividade.

Verificar cada recurso ao configurar o Azure Virtual WAN garante que todos os componentes estejam operacionais antes de conectar filiais.

Verificar a Configuração

Use os comandos abaixo para confirmar que todos os recursos estão provisionados e as conexões estabelecidas.

# Visão geral do Virtual WAN
az network vwan show \
  --name "$VWAN_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query "{nome:name, tipo:type, status:provisioningState}"

# Verificar o Virtual Hub e seu estado de roteamento
az network vhub show \
  --name "$HUB_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query "{nome:name, status:provisioningState, routingState:routingState, endereco:addressPrefix}"

# Listar todas as conexões VPN do Gateway
az network vpn-gateway connection list \
  --resource-group "$RESOURCE_GROUP" \
  --gateway-name "$VPN_GW_NAME" \
  --query "[].{Nome:name, Status:provisioningState, Conexao:connectionStatus}" \
  -o table

# Listar conexões de VNet no hub
az network vhub connection list \
  --resource-group "$RESOURCE_GROUP" \
  --vhub-name "$HUB_NAME" \
  --query "[].{Nome:name, Status:provisioningState, VNet:remoteVnet.id}" \
  -o table

# Ver tabela de rotas efetivas do hub
az network vhub get-effective-routes \
  --resource-group "$RESOURCE_GROUP" \
  --name "$HUB_NAME" \
  --resource-type VpnConnection \
  --resource-id "$(az network vpn-gateway connection show \
    --name "$VPN_CONNECTION_NAME" \
    --resource-group "$RESOURCE_GROUP" \
    --gateway-name "$VPN_GW_NAME" \
    --query id -o tsv)"
✅ Resultado esperado: O campo routingState do Virtual Hub deve exibir Provisioned e o connectionStatus das conexões VPN deve exibir Connected.

Após configurar o Azure Virtual WAN com sucesso em laboratório, remova os recursos para evitar cobranças desnecessárias.

Limpeza dos Recursos

Para remover todos os recursos criados neste tutorial e evitar cobranças desnecessárias, siga a ordem abaixo. Assim, você evita erros de dependência:

# 1. Remover conexões VPN
az network vpn-gateway connection delete \
  --name "$VPN_CONNECTION_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --gateway-name "$VPN_GW_NAME" \
  --yes

# 2. Remover conexões de VNet
az network vhub connection delete \
  --name "$VNET_CONNECTION_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --vhub-name "$HUB_NAME" \
  --yes

# 3. Remover o VPN Site
az network vpn-site delete \
  --name "$VPN_SITE_NAME" \
  --resource-group "$RESOURCE_GROUP"

# 4. Remover o Resource Group completo (inclui hub, gateway, vwan e vnet)
# ATENÇÃO: Este comando remove TODOS os recursos do Resource Group!
az group delete \
  --name "$RESOURCE_GROUP" \
  --yes \
  --no-wait

echo "Resource Group $RESOURCE_GROUP em processo de exclusão."
⚠️ Atenção: A exclusão do Virtual Hub e do VPN Gateway pode levar até 60 minutos. O Azure precisa desprovisionar os roteadores gerenciados e liberar os IPs públicos antes de concluir a operação.

Os erros mais comuns ao configurar o Azure Virtual WAN envolvem estado de provisionamento do hub e PSK incorreto na conexão VPN.

Troubleshooting — Erros Comuns

ErroCausaSolução
VirtualHubNotInSucceededState Hub ainda em provisionamento Aguardar provisioningState: Succeeded antes de criar o VPN Gateway
AddressPrefixOverlap CIDR do hub conflita com VNet ou filial Usar blocos de endereço exclusivos para o hub (--address-prefix)
VpnGatewayNotFound VPN Gateway ainda não provisionado Verificar status com az network vpn-gateway show e aguardar
ConnectionNotConnected PSK incorreta ou IP da filial errado Verificar --shared-key e --ip-address no VPN Site e roteador
RoutingIntentConflict Routing Intent conflita com UDRs nas VNets spoke Remover User Defined Routes das VNets que apontam para o hub manualmente
FirewallNotInHub Routing Intent sem Azure Firewall no hub Provisionar o Azure Firewall com --sku AZFW_Hub antes do Routing Intent

Conclusão

Neste tutorial você aprendeu como configurar o Azure Virtual WAN. Percorreu desde a criação do recurso raiz até o roteamento seguro com Azure Firewall. O fluxo completo envolveu:

  1. Criar o Resource Group rg-vwan-castilho
  2. Criar o Virtual WAN Standard vwan-castilho
  3. Criar o Virtual Hub vhub-castilho-eastus com CIDR dedicado
  4. Provisionar o VPN Gateway dentro do hub com unidade de escala adequada
  5. Registrar a filial on-premises como VPN Site com IP e CIDR reais
  6. Estabelecer a conexão IPsec/IKEv2 entre o hub e a filial
  7. Conectar VNets spoke ao hub via Hub VNet Connection
  8. Habilitar Routing Intent para inspeção centralizada via Azure Firewall

Em resumo, o Azure Virtual WAN simplifica o gerenciamento de redes corporativas distribuídas. Ele elimina a complexidade de manter roteamento e segurança em múltiplas regiões de forma independente. Para escalar, basta adicionar novos hubs em outras regiões — eles se interconectam automaticamente via a backbone global do Azure.


Série completa:

  1. 📖 Artigo 1: O que é Azure Virtual WAN — conceitos e arquitetura
  2. ⚙️ Artigo 2 (este): Configurar o Azure Virtual WAN
  3. 🔧 Artigo 3: Criar o Azure Virtual WAN
  4. 🔌 Artigo 4: Conectar Filiais ao Azure Virtual WAN com VPN
  5. 🔒 Artigo 5: Segurança Azure Virtual WAN com Firewall

Referências oficiais:
O que é o Azure Virtual WAN? — Microsoft Learn
Tutorial: Criar conexão site a site com Virtual WAN — Microsoft Learn
Políticas de roteamento do Virtual Hub — Microsoft Learn
Referência AZ CLI — az network vwan

Interessado em saber mais sobre artigos relacionados ao Microsoft Azure CLIQUE AQUI

🚀 Vamos nos conectar?

Não perca nenhuma oportunidade! Cadastre-se nas minhas redes e no canal do YouTube para receber conteúdos de TI, Cloud, Azure, Kubernetes e DevOps em primeira mão.

Dica: No Facebook, todos os artigos do blog são publicados automaticamente. Vale a pena curtir!


💬 Dúvidas ou Problemas?

Com o intuito de ajudar a comunidade, caso você tenha dúvidas ou encontre problemas na execução dos comandos deste artigo, deixe um comentário abaixo. Responderei o mais breve possível!

Muito obrigado pela visita e até o próximo post!

Jefferson Castilho Especialista em Cloud & DevOps.

Este guia técnico é exclusivo do Blog do Castilho. Explore nossa para mais conteúdos sobre IA e Cloud.

 

Deixe uma resposta

Rolar para cima