Pular para o conteúdo principal

Desafio 14: Gateway VPN site a site

Tempo e custo estimados

60-90 minutos | ~$0,19/h (SKU VpnGw1) | Peso no exame: 20-25%

Tempo de implantação

O provisionamento do VPN Gateway leva 30-45 minutos. Use --no-wait e continue com outras tarefas enquanto o gateway é implantado.

Cenário

A Contoso possui uma rede virtual hub no Azure (vnet-hub, 10.1.0.0/16) e um datacenter local com o espaço de endereço 192.168.0.0/16. O dispositivo VPN local possui o IP público 203.0.113.50. A equipe de rede deve estabelecer um túnel VPN IPsec site a site entre a VNet hub do Azure e o datacenter local para habilitar a conectividade híbrida para cargas de trabalho que ainda não podem migrar para o Azure.

Arquitetura:

Challenge 14 - Topologia de Rede

Objetivos de aprendizagem

Após concluir este desafio, você será capaz de:

  • Projetar e implementar uma conexão VPN site a site
  • Criar e configurar um gateway de rede local representando o ambiente local
  • Criar e configurar um gateway de rede virtual (tipo VPN)
  • Identificar quando usar uma VPN baseada em política versus uma conexão VPN baseada em rota
  • Verificar o status da conexão VPN e solucionar problemas de conectividade

Pré-requisitos

  • Uma assinatura do Azure com acesso de Colaborador
  • Azure CLI instalado e autenticado (az login)
  • PowerShell com o módulo Az instalado (Install-Module Az -Force)
  • Um grupo de recursos e VNet já criados (ou crie-os na Tarefa 1)

Conceitos-chave para o AZ-700

ConceitoDetalhe
GatewaySubnetSub-rede dedicada para o gateway VPN; deve ser nomeada exatamente GatewaySubnet; tamanho recomendado /27 ou maior
Gateway de rede virtualEndpoint VPN gerenciado pelo Azure; suporta baseado em rota (dinâmico) ou baseado em política (estático)
Gateway de rede localRepresentação lógica do dispositivo VPN local (IP público + prefixos de endereço)
Conexão VPNO túnel IPsec/IKE que conecta o gateway de rede virtual ao gateway de rede local
VPN baseada em rotaUsa tabelas de rotas para seleção de tráfego; suporta múltiplos túneis, P2S, VNet a VNet, coexistência com ExpressRoute
VPN baseada em políticaUsa seletores de tráfego (ACLs); limitada a um único túnel S2S; necessária para dispositivos legados
Chave compartilhada (PSK)Chave pré-compartilhada que deve coincidir em ambos os lados do túnel

VPN baseada em política vs baseada em rota

RecursoBaseada em políticaBaseada em rota
Versão IKESomente IKEv1IKEv1 e IKEv2
Máximo de túneis S2S130 (VpnGw1) a 100 (VpnGw4/5)
Ponto a siteNão suportadoSuportado
Suporte a BGPNão suportadoSuportado
VNet a VNetNão suportadoSuportado
Coexistência com ExpressRouteNão suportadoSuportado
SKU do gatewaySomente BasicVpnGw1-5, VpnGw1AZ-5AZ
Caso de usoDispositivos locais legados que exigem correspondência de política IKEv1Todas as implantações modernas
Nota de exame

O exame frequentemente testa quando a VPN baseada em política é necessária versus a baseada em rota. A resposta quase sempre é baseada em rota, a menos que a questão declare explicitamente um dispositivo legado que suporta apenas IKEv1 com seletores de tráfego baseados em política. Gateways baseados em rota são a recomendação padrão.


Tarefa 1: Criar a VNet hub e o GatewaySubnet

Azure CLI

# Create resource group
az group create \
--name rg-vpn-lab \
--location eastus

# Create hub VNet
az network vnet create \
--resource-group rg-vpn-lab \
--name vnet-hub \
--location eastus \
--address-prefixes 10.1.0.0/16 \
--subnet-name snet-workloads \
--subnet-prefixes 10.1.1.0/24

# Create the GatewaySubnet (must be named exactly "GatewaySubnet")
az network vnet subnet create \
--resource-group rg-vpn-lab \
--vnet-name vnet-hub \
--name GatewaySubnet \
--address-prefixes 10.1.255.0/27

Azure PowerShell

# Create resource group
New-AzResourceGroup -Name "rg-vpn-lab" -Location "eastus"

# Create hub VNet with subnets
$workloadsSubnet = New-AzVirtualNetworkSubnetConfig `
-Name "snet-workloads" `
-AddressPrefix "10.1.1.0/24"

$gatewaySubnet = New-AzVirtualNetworkSubnetConfig `
-Name "GatewaySubnet" `
-AddressPrefix "10.1.255.0/27"

New-AzVirtualNetwork `
-ResourceGroupName "rg-vpn-lab" `
-Name "vnet-hub" `
-Location "eastus" `
-AddressPrefix "10.1.0.0/16" `
-Subnet $workloadsSubnet, $gatewaySubnet
Requisitos do GatewaySubnet
  • O nome deve ser GatewaySubnet (sensível a maiúsculas/minúsculas, nenhum outro nome funciona)
  • O tamanho mínimo recomendado é /27 (32 endereços) para permitir crescimento futuro e configurações active-active
  • /28 é o mínimo absoluto, mas limita a expansibilidade futura
  • Não associe um NSG ou tabela de rotas ao GatewaySubnet (isso pode interromper a operação do gateway)

Tarefa 2: Implantar o gateway VPN

Etapa 1: Criar um IP público para o gateway

az network public-ip create \
--resource-group rg-vpn-lab \
--name pip-vgw-hub \
--location eastus \
--allocation-method Static \
--sku Standard

Etapa 2: Criar o gateway de rede virtual

az network vnet-gateway create \
--resource-group rg-vpn-lab \
--name vgw-hub \
--vnet vnet-hub \
--gateway-type Vpn \
--vpn-type RouteBased \
--sku VpnGw1 \
--vpn-gateway-generation Generation1 \
--public-ip-addresses pip-vgw-hub \
--no-wait

Azure PowerShell

# Create public IP
$pip = New-AzPublicIpAddress `
-ResourceGroupName "rg-vpn-lab" `
-Name "pip-vgw-hub" `
-Location "eastus" `
-AllocationMethod Static `
-Sku Standard

# Get subnet reference
$vnet = Get-AzVirtualNetwork -ResourceGroupName "rg-vpn-lab" -Name "vnet-hub"
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet

# Create IP configuration
$ipConfig = New-AzVirtualNetworkGatewayIpConfig `
-Name "gwIpConfig" `
-SubnetId $gwSubnet.Id `
-PublicIpAddressId $pip.Id

# Create the VPN gateway (takes 30-45 minutes)
New-AzVirtualNetworkGateway `
-ResourceGroupName "rg-vpn-lab" `
-Name "vgw-hub" `
-Location "eastus" `
-IpConfigurations $ipConfig `
-GatewayType Vpn `
-VpnType RouteBased `
-GatewaySku VpnGw1 `
-AsJob

Etapa 3: Monitorar o progresso da implantação

# Check provisioning state (repeat until "Succeeded")
az network vnet-gateway show \
--resource-group rg-vpn-lab \
--name vgw-hub \
--query "provisioningState" \
--output tsv

Tarefa 3: Criar o gateway de rede local

O gateway de rede local representa o dispositivo VPN local no Azure. Ele armazena o IP público do dispositivo local e os prefixos de endereço da rede local.

Azure CLI

az network local-gateway create \
--resource-group rg-vpn-lab \
--name lgw-onprem-datacenter \
--gateway-ip-address 203.0.113.50 \
--local-address-prefixes 192.168.0.0/16 \
--location eastus

Azure PowerShell

New-AzLocalNetworkGateway `
-ResourceGroupName "rg-vpn-lab" `
-Name "lgw-onprem-datacenter" `
-Location "eastus" `
-GatewayIpAddress "203.0.113.50" `
-AddressPrefix "192.168.0.0/16"

Múltiplas sub-redes locais

Se a rede local tiver múltiplas sub-redes não contíguas, liste todas:

az network local-gateway create \
--resource-group rg-vpn-lab \
--name lgw-onprem-datacenter \
--gateway-ip-address 203.0.113.50 \
--local-address-prefixes 192.168.1.0/24 192.168.2.0/24 10.50.0.0/16 \
--location eastus

Tarefa 4: Criar a conexão VPN

Após o gateway VPN concluir o provisionamento, crie a conexão IPsec.

Azure CLI

az network vpn-connection create \
--resource-group rg-vpn-lab \
--name conn-hub-to-onprem \
--vnet-gateway1 vgw-hub \
--local-gateway2 lgw-onprem-datacenter \
--shared-key "Contoso!VPN#2024secure"

Azure PowerShell

$vgw = Get-AzVirtualNetworkGateway -ResourceGroupName "rg-vpn-lab" -Name "vgw-hub"
$lgw = Get-AzLocalNetworkGateway -ResourceGroupName "rg-vpn-lab" -Name "lgw-onprem-datacenter"

New-AzVirtualNetworkGatewayConnection `
-ResourceGroupName "rg-vpn-lab" `
-Name "conn-hub-to-onprem" `
-Location "eastus" `
-VirtualNetworkGateway1 $vgw `
-LocalNetworkGateway2 $lgw `
-ConnectionType IPsec `
-SharedKey "Contoso!VPN#2024secure"
Requisitos da chave compartilhada
  • A chave compartilhada deve ser idêntica em ambos os lados (Azure e dispositivo local)
  • Máximo de 128 caracteres
  • Suporta caracteres alfanuméricos e caracteres especiais
  • Use uma chave forte e gerada aleatoriamente em produção

Tarefa 5: Verificar o status da conexão

Azure CLI

# Check connection status
az network vpn-connection show \
--resource-group rg-vpn-lab \
--name conn-hub-to-onprem \
--query "{status:connectionStatus, inBytes:ingressBytesTransferred, outBytes:egressBytesTransferred}" \
--output table

Azure PowerShell

Get-AzVirtualNetworkGatewayConnection `
-ResourceGroupName "rg-vpn-lab" `
-Name "conn-hub-to-onprem" | `
Select-Object Name, ConnectionStatus, IngressBytesTransferred, EgressBytesTransferred

Valores de status da conexão

StatusSignificado
ConnectedO túnel está estabelecido e passando tráfego
ConnectingO lado Azure está pronto, mas aguardando resposta do dispositivo local
NotConnectedO objeto de conexão existe, mas o túnel não foi iniciado
UnknownNão é possível determinar o estado (verifique a integridade do gateway)
Simulação de laboratório

Em um laboratório sem um dispositivo local real, a conexão permanecerá no estado Connecting. Isso é esperado. Para simular um túnel totalmente conectado, implante um segundo gateway VPN em outra VNet e crie uma conexão VNet a VNet (ambos os lados estão sob seu controle).


Tarefa 6: Testar conectividade (simulação de laboratório com segunda VNet)

Para verificar a conectividade ponta a ponta em um laboratório, crie uma segunda VNet simulando a rede local:

# Create simulated on-prem VNet
az network vnet create \
--resource-group rg-vpn-lab \
--name vnet-onprem-sim \
--location eastus \
--address-prefixes 192.168.0.0/16 \
--subnet-name snet-servers \
--subnet-prefixes 192.168.1.0/24

az network vnet subnet create \
--resource-group rg-vpn-lab \
--vnet-name vnet-onprem-sim \
--name GatewaySubnet \
--address-prefixes 192.168.255.0/27

# Create second public IP and gateway
az network public-ip create \
--resource-group rg-vpn-lab \
--name pip-vgw-onprem \
--location eastus \
--allocation-method Static \
--sku Standard

az network vnet-gateway create \
--resource-group rg-vpn-lab \
--name vgw-onprem-sim \
--vnet vnet-onprem-sim \
--gateway-type Vpn \
--vpn-type RouteBased \
--sku VpnGw1 \
--vpn-gateway-generation Generation1 \
--public-ip-addresses pip-vgw-onprem \
--no-wait

Após ambos os gateways serem provisionados, crie conexões em ambas as direções:

# Update local gateway with actual public IP of simulated on-prem gateway
ONPREM_GW_IP=$(az network public-ip show \
--resource-group rg-vpn-lab \
--name pip-vgw-onprem \
--query "ipAddress" \
--output tsv)

az network local-gateway update \
--resource-group rg-vpn-lab \
--name lgw-onprem-datacenter \
--gateway-ip-address "$ONPREM_GW_IP"

# Create the reverse local gateway (representing Azure hub from on-prem perspective)
HUB_GW_IP=$(az network public-ip show \
--resource-group rg-vpn-lab \
--name pip-vgw-hub \
--query "ipAddress" \
--output tsv)

az network local-gateway create \
--resource-group rg-vpn-lab \
--name lgw-azure-hub \
--gateway-ip-address "$HUB_GW_IP" \
--local-address-prefixes 10.1.0.0/16 \
--location eastus

# Create reverse connection (on-prem to hub) with same shared key
az network vpn-connection create \
--resource-group rg-vpn-lab \
--name conn-onprem-to-hub \
--vnet-gateway1 vgw-onprem-sim \
--local-gateway2 lgw-azure-hub \
--shared-key "Contoso!VPN#2024secure"

Cenários de quebra e correção

Cenário 1: Incompatibilidade de chave compartilhada

Sintoma: O status da conexão permanece Connecting indefinidamente.

Causa raiz: A chave compartilhada na conexão Azure não corresponde à chave configurada no dispositivo local.

Comando de diagnóstico:

az network vpn-connection show \
--resource-group rg-vpn-lab \
--name conn-hub-to-onprem \
--query "connectionStatus" \
--output tsv
# Returns: Connecting

Correção: Atualize a chave compartilhada para que ambos os lados coincidam:

az network vpn-connection update \
--resource-group rg-vpn-lab \
--name conn-hub-to-onprem \
--shared-key "CorrectMatchingKey2024!"

Cenário 2: GatewaySubnet ausente

Sintoma: A criação do gateway falha com um erro sobre sub-rede ausente.

Causa raiz: A VNet não possui uma sub-rede nomeada exatamente GatewaySubnet.

Correção: Crie a sub-rede com o nome exato exigido:

az network vnet subnet create \
--resource-group rg-vpn-lab \
--vnet-name vnet-hub \
--name GatewaySubnet \
--address-prefixes 10.1.255.0/27

Cenário 3: Prefixos de endereço local incorretos

Sintoma: O túnel VPN está Connected, mas o tráfego para certas sub-redes locais não é roteado pelo túnel.

Causa raiz: O gateway de rede local está sem prefixos de endereço para algumas sub-redes locais.

Comando de diagnóstico:

az network local-gateway show \
--resource-group rg-vpn-lab \
--name lgw-onprem-datacenter \
--query "localNetworkAddressSpace.addressPrefixes" \
--output tsv

Correção: Atualize o gateway local com todos os prefixos locais:

az network local-gateway update \
--resource-group rg-vpn-lab \
--name lgw-onprem-datacenter \
--local-address-prefixes 192.168.0.0/16 10.50.0.0/16

Verificação de conhecimento

1. Qual deve ser o nome da sub-rede dedicada para um VPN Gateway?

2. Uma organização parceira possui um dispositivo VPN legado que suporta apenas IKEv1 com seletores de tráfego baseados em política. Qual tipo de VPN você deve configurar no Azure VPN Gateway?

3. Qual recurso do Azure representa o dispositivo VPN local em uma configuração de VPN site-to-site?

4. Uma conexão VPN mostra o status 'Connecting' por mais de 30 minutos. Qual é a causa mais provável?

5. Qual das seguintes opções NÃO é uma limitação dos VPN Gateways policy-based?


Limpeza

Remova todos os recursos criados neste desafio para parar a cobrança:

az group delete --name rg-vpn-lab --yes --no-wait
Remove-AzResourceGroup -Name "rg-vpn-lab" -Force -AsJob

Referências adicionais