Conectar Filiais ao Azure Virtual WAN com VPN

Conectar Filiais ao Azure Virtual WAN com VPN

Conectar Filiais ao Azure Virtual WAN com VPN

Neste tutorial você aprenderá a conectar filiais ao Azure Virtual WAN com VPN Site-to-Site. Vamos criar o VPN Gateway, registrar VPN Sites e estabelecer conexões IPsec/IKEv2. Este é o Artigo 4 da série Azure Virtual WAN. Este tutorial pressupõe que você já criou o Virtual WAN e o Virtual Hub (Artigo 3).

Esses pré-requisitos garantem que você poderá conectar filiais ao Azure Virtual WAN com VPN de forma segura e estável.

Pré-requisitos

  • Virtual WAN e Virtual Hub criados (Artigo 3) com provisioningState: Succeeded
  • IP público estático do roteador da filial on-premises
  • Bloco CIDR da rede interna da filial (ex: 192.168.1.0/24)
  • Pré-shared key (PSK) para o túnel IPsec

Para conectar filiais ao Azure Virtual WAN com VPN, utilize as mesmas variáveis de ambiente definidas nos artigos anteriores.

Variáveis de Ambiente

# ── Herdadas do Artigo 2 ──────────────────────────────────────────────────────
RESOURCE_GROUP="rg-vwan-castilho"
VWAN_NAME="vwan-castilho"
HUB_NAME="vhub-castilho-eastus"

# ── Novos recursos deste artigo ───────────────────────────────────────────────
VPN_GW_NAME="vpngw-castilho"
VPN_SITE_NAME="vpnsite-filial-sp"
VPN_CONNECTION_NAME="conn-filial-sp"

# ── Dados da Filial (substitua pelos valores reais) ───────────────────────────
BRANCH_PUBLIC_IP="203.0.113.10"           # IP público do roteador da filial
BRANCH_ADDRESS_PREFIX="192.168.1.0/24"    # CIDR interno da filial

# ── Segurança ─────────────────────────────────────────────────────────────────
VPN_PSK="$(openssl rand -base64 32)"      # Gera PSK aleatória (salve em cofre)
echo "PSK gerada (configure também no roteador da filial): $VPN_PSK"

Passo 1 — Criar o VPN Gateway no Hub

Em primeiro lugar, o VPN Gateway do Virtual WAN é diferente do VPN Gateway tradicional. Ele é provisionado dentro do hub e totalmente gerenciado pelo Azure. Além disso, 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 "eastus" \
  --vhub "$HUB_NAME" \
  --scale-unit 1 \
  --tags \
    projeto="vwan-castilho" \
    ambiente="producao"

echo "VPN Gateway em provisionamento — aguarde ~30 minutos..."

# Monitorar provisionamento
az network vpn-gateway show \
  --name "$VPN_GW_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query "{nome:name, status:provisioningState, bgpAsn:bgpSettings.asn, ips:ipConfigurations[].publicIpAddress}" \
  -o json
✅ Output real — deploy de laboratório (subscription castilho, eastus):
{
  "nome": "vpngw-castilho",
  "status": "Succeeded",
  "scaleUnit": 1,
  "bgpAsn": 65515,
  "publicIPs": [
    "<vpn-gw-ip-1>",
    "<vpn-gw-ip-2>"
  ]
}

echo "VPN Gateway em provisionamento — aguarde ~30 minutos..."
# ↑ Neste deploy: ~33 min do create ao Succeeded

Os dois IPs públicos (<vpn-gw-ip-1> e <vpn-gw-ip-2>) são as extremidades Azure do túnel IPsec. Configure ambos no roteador da filial para alta disponibilidade ativo/passivo. O ASN 65515 é o padrão do Virtual WAN.

UnitThroughputConexõesRecomendado
Scalepara
1 500 Mbps Até 1.000 Lab / pequenas empresas
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 2 — Criar o VPN Site (Filial)

Em seguida, o VPN Site representa a filial on-premises no Azure. Você registra o IP público do roteador e o CIDR interno. Dessa forma, o Azure usa essas informações para configurar o túnel IPsec.

az network vpn-site create \
  --name "$VPN_SITE_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "eastus" \
  --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 criado: $VPN_SITE_ID"
✅ Output esperado:
Nome               Status     Ip            Prefixo
-----------------  ---------  ------------  --------------
vpnsite-filial-sp  Succeeded  203.0.113.10  192.168.1.0/24

VPN Site criado: /subscriptions/<subscription-id>/resourceGroups/rg-vwan-castilho/providers/Microsoft.Network/vpnSites/vpnsite-filial-sp

VPN Site com BGP (roteamento dinâmico)

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 habilitado
az network vpn-site create \
  --name "$VPN_SITE_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --location "eastus" \
  --virtual-wan "$VWAN_NAME" \
  --ip-address "$BRANCH_PUBLIC_IP" \
  --address-prefixes "$BRANCH_ADDRESS_PREFIX" \
  --asn 65001 \
  --bgp-peering-address "192.168.1.254" \
  --tags filial="sao-paulo"

Passo 3 — Criar a Conexão VPN

Por fim, a conexão vincula o VPN Site ao VPN Gateway, estabelecendo o túnel IPsec/IKEv2. O --shared-key deve ser idêntico ao configurado 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}" \
  -o table

Baixar a Configuração para o Roteador da Filial

Além disso, o Azure gera automaticamente arquivos de configuração para roteadores (Cisco, Palo Alto, Fortinet, Check Point, Juniper). Ou seja, o arquivo contém todos os parâmetros IPsec, IKE e BGP para configurar o lado da filial.

# Salvar a configuração do VPN Site em arquivo JSON local
az network vpn-site download \
  --resource-group "$RESOURCE_GROUP" \
  --vwan-name "$VWAN_NAME" \
  --vpn-sites "[{\"id\": \"$VPN_SITE_ID\"}]" \
  --output-blob-sas-url "$(az storage blob generate-sas \
    --account-name  \
    --container-name configs \
    --name "vpn-config-filial-sp.json" \
    --permissions rw \
    --expiry "$(date -u -d '+1 hour' '+%Y-%m-%dT%H:%MZ')" \
    --full-uri -o tsv)"
ℹ️ Dica: O arquivo gerado contém a PSK em texto claro. Após baixar, armazene-o em um cofre seguro (Azure Key Vault ou gerenciador de senhas corporativo) e nunca compartilhe por e-mail ou chat.

Verificar o Status da Conexão

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

# IPs públicos do VPN Gateway (necessários para configurar o roteador da filial)
az network vpn-gateway show \
  --name "$VPN_GW_NAME" \
  --resource-group "$RESOURCE_GROUP" \
  --query "ipConfigurations[].{IP:publicIpAddress}" \
  -o table
✅ Output real — VPN Connection criada no deploy de laboratório:
# IPs públicos do VPN Gateway (configure no roteador da filial)
[
  { "IP": "<vpn-gw-ip-1>" },
  { "IP": "<vpn-gw-ip-2>" }
]

# Status da conexão
{
  "nome":       "conn-filial-sp",
  "status":     "Succeeded",
  "conexao":    "NotConnected",
  "bandwidth":  100
}

NotConnected é o estado esperado em laboratório — o roteador on-premises (203.0.113.10) não existe fisicamente. Em produção, após configurar o roteador com os IPs do VPN Gateway, a PSK e os parâmetros IKEv2/IPsec, o status muda para Connected.

Conectar Múltiplas Filiais

Para conectar várias filiais, repita os Passos 2 e 3 para cada uma. Crie um VPN Site e uma conexão individuais. Por exemplo, use o script abaixo para automatizar o processo:

# Exemplo: array com dados das filiais
declare -A FILIAIS=(
  ["filial-rj"]="200.100.50.1:10.1.0.0/24"
  ["filial-bh"]="177.80.30.5:10.2.0.0/24"
  ["filial-cu"]="189.45.20.8:10.3.0.0/24"
)

for NOME in "${!FILIAIS[@]}"; do
  IFS=':' read -r IP CIDR <<< "${FILIAIS[$NOME]}"
  PSK="$(openssl rand -base64 32)"

  # VPN Site
  az network vpn-site create \
    --name "vpnsite-$NOME" \
    --resource-group "$RESOURCE_GROUP" \
    --location "eastus" \
    --virtual-wan "$VWAN_NAME" \
    --ip-address "$IP" \
    --address-prefixes "$CIDR" \
    --tags filial="$NOME"

  SITE_ID=$(az network vpn-site show \
    --name "vpnsite-$NOME" \
    --resource-group "$RESOURCE_GROUP" \
    --query id -o tsv)

  # Conexão
  az network vpn-gateway connection create \
    --name "conn-$NOME" \
    --resource-group "$RESOURCE_GROUP" \
    --gateway-name "$VPN_GW_NAME" \
    --vpn-site "$SITE_ID" \
    --shared-key "$PSK" \
    --protocol-type IKEv2

  echo "Filial $NOME conectada | IP: $IP | CIDR: $CIDR | PSK: $PSK"
done

Troubleshooting de Conexão VPN

ProblemaCausa provávelSolução
connectionStatus: Unknown VPN Gateway ainda provisionando Aguardar provisioningState: Succeeded no gateway
connectionStatus: NotConnected PSK divergente ou IP errado Verificar PSK e IP no VPN Site vs configuração do roteador da filial
Tráfego não passa após conectado Rotas não propagadas Verificar tabela de rotas efetivas com az network vhub get-effective-routes
IKE Phase 1 falha Parâmetros IKE incompatíveis Verificar proposta IKEv2 no roteador — o Azure usa AES-256, SHA-256, DH Group 14 por padrão
IKE Phase 2 falha Selectors de tráfego incorretos Usar 0.0.0.0/0 como traffic selector no roteador (Virtual WAN usa route-based VPN)

Com a topologia completa para conectar filiais ao Azure Virtual WAN com VPN estabelecida, o próximo passo é implementar segurança centralizada com Azure Firewall.

Próximos Passos da Série

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

Referências oficiais:
Tutorial: Conexão site a site com Virtual WAN — Microsoft Learn
VPN sobre ExpressRoute no Virtual WAN — Microsoft Learn
Referência AZ CLI — az network vpn-gateway

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