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.
Sumário
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.
Tipos de Virtual WAN
O Azure Virtual WAN está disponível em dois SKUs com capacidades distintas:
| 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.Networkregistrado 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"
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}"
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
| Scale | de | Recomendado | |
|---|---|---|---|
| 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}"
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)"
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."
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
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:
- Criar o Resource Group
rg-vwan-castilho - Criar o Virtual WAN Standard
vwan-castilho - Criar o Virtual Hub
vhub-castilho-eastuscom CIDR dedicado - Provisionar o VPN Gateway dentro do hub com unidade de escala adequada
- Registrar a filial on-premises como VPN Site com IP e CIDR reais
- Estabelecer a conexão IPsec/IKEv2 entre o hub e a filial
- Conectar VNets spoke ao hub via Hub VNet Connection
- 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:
- 📖 Artigo 1: O que é Azure Virtual WAN — conceitos e arquitetura
- ⚙️ Artigo 2 (este): Configurar o Azure Virtual WAN
- 🔧 Artigo 3: Criar o Azure Virtual WAN
- 🔌 Artigo 4: Conectar Filiais ao Azure Virtual WAN com VPN
- 🔒 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.


