Pular para o conteúdo principal

Challenge 24: Solução de problemas de conectividade híbrida

Tempo e custo estimados

60–90 minutos | ~$0,19/h (Gateway VPN) + ~$1,20/h (Circuito ER) | Peso no exame: 20–25%

Cenário

A equipe de operações de rede da Contoso recebeu três tickets de escalonamento esta manhã:

  1. Ticket 1 -- Instabilidade da VPN S2S: O túnel VPN site a site entre a sede (local) e o Azure continua desconectando a cada 5-10 minutos. Os usuários relatam conectividade intermitente com aplicações hospedadas no Azure.

  2. Ticket 2 -- Falhas de autenticação P2S: Trabalhadores remotos usando o cliente VPN ponto a site estão recebendo erros de autenticação. Alguns usuários recebem "falha na validação do certificado" enquanto outros veem erros de "incompatibilidade de tipo de túnel".

  3. Ticket 3 -- ExpressRoute não provisionado: Um circuito ExpressRoute recém-solicitado mostra "Provider Provisioning State: NotProvisioned" mesmo que o provedor de serviços afirme ter concluído sua parte da configuração.

A equipe deve usar ferramentas de diagnóstico do Azure para identificar sistematicamente as causas raiz e resolver cada problema.

Habilidades de exame avaliadas

HabilidadeDescrição
Diagnosticar e resolver problemas de conectividade do gateway de rede virtualSolucionar problemas de conexões VPN S2S, integridade do gateway e falhas IKE
Diagnosticar e resolver problemas de autenticação e do lado do cliente (P2S)Solucionar problemas de certificados, tipos de túnel e pools de endereços
Diagnosticar e resolver problemas de conexão ExpressRouteVerificar estado do circuito, configuração de peering, tabelas ARP e tabelas de rotas

Pré-requisitos

Este desafio assume que os seguintes recursos existem (de desafios anteriores ou de uma configuração de laboratório):

  • Grupo de recursos com Gateway VPN (VpnGw1 ou superior)
  • Conexão VPN S2S ativa
  • Configuração de VPN P2S com autenticação por certificado
  • Circuito ExpressRoute (pode usar um circuito de teste/simulação)

Tarefa 1: Solucionar problemas da VPN S2S -- verificar status da conexão

Comece examinando o objeto de conexão VPN para determinar o estado atual e coletar métricas.

Azure CLI

RG="rg-hybrid-challenge24"
GW_NAME="vpngw-contoso"
CONNECTION_NAME="conn-onprem-hq"

# Check VPN connection status and traffic counters
az network vpn-connection show \
--name $CONNECTION_NAME \
--resource-group $RG \
--query "{
connectionStatus: connectionStatus,
ingressBytes: ingressBytesTransferred,
egressBytes: egressBytesTransferred,
connectionType: connectionType,
sharedKey: sharedKey,
provisioningState: provisioningState,
ipsecPolicies: ipsecPolicies
}"

# List all connections on the gateway
az network vpn-connection list \
--resource-group $RG \
--vnet-gateway $GW_NAME \
--output table

Azure PowerShell

$RG = "rg-hybrid-challenge24"
$GwName = "vpngw-contoso"
$ConnName = "conn-onprem-hq"

# Get connection details
$conn = Get-AzVirtualNetworkGatewayConnection `
-ResourceGroupName $RG `
-Name $ConnName

# Display key diagnostic properties
$conn | Select-Object `
Name,
ConnectionStatus,
IngressBytesTransferred,
EgressBytesTransferred,
ConnectionProtocol,
ProvisioningState

# Check if the connection has custom IPsec policies
$conn.IpsecPolicies

Valores de status da conexão

StatusSignificado
ConnectedO túnel está ativo e passando tráfego
ConnectingNegociação IKE em andamento
NotConnectedO túnel está inativo, nenhuma negociação ativa
UnknownO gateway não consegue determinar o estado (geralmente durante atualizações)

Tarefa 2: Analisar diagnósticos de VPN com o Network Watcher

Use a solução de problemas de VPN do Network Watcher para executar diagnósticos automatizados que analisam logs IKE, descartes de pacotes e integridade do gateway.

Azure CLI

STORAGE_ACCOUNT="stdiagcontoso"
CONTAINER_NAME="vpn-diagnostics"
STORAGE_PATH="https://${STORAGE_ACCOUNT}.blob.core.windows.net/${CONTAINER_NAME}"

# Start VPN troubleshooting on the connection
az network watcher troubleshooting start \
--resource $CONNECTION_NAME \
--resource-group $RG \
--resource-type vpnConnection \
--storage-account $STORAGE_ACCOUNT \
--storage-path $STORAGE_PATH

# Alternatively, troubleshoot the gateway itself
az network watcher troubleshooting start \
--resource $GW_NAME \
--resource-group $RG \
--resource-type vnetGateway \
--storage-account $STORAGE_ACCOUNT \
--storage-path $STORAGE_PATH

# Check results of the last troubleshooting operation
az network watcher troubleshooting show \
--resource $GW_NAME \
--resource-group $RG \
--resource-type vnetGateway

Azure PowerShell

$StorageAccount = Get-AzStorageAccount -ResourceGroupName $RG -Name "stdiagcontoso"

# Start gateway troubleshooting
$gw = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GwName

Start-AzNetworkWatcherResourceTroubleshooting `
-NetworkWatcher (Get-AzNetworkWatcher -ResourceGroupName "NetworkWatcherRG" -Name "NetworkWatcher_eastus") `
-TargetResourceId $gw.Id `
-StorageId $StorageAccount.Id `
-StoragePath "https://stdiagcontoso.blob.core.windows.net/vpn-diagnostics"
![Challenge 24 - Topologia de Rede](/img/az-700/challenge-24-topology.svg)


#### Azure PowerShell

```powershell
$gw = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GwName

# Inspect P2S configuration
$gw.VpnClientConfiguration | Select-Object `
VpnClientProtocols,
VpnClientAddressPool,
VpnAuthenticationTypes

# List root certificates
$gw.VpnClientConfiguration.VpnClientRootCertificates |
Select-Object Name, ProvisioningState

Problemas comuns de P2S e resolução

Problema 1: Falha na validação do certificado

O certificado do cliente não foi emitido por uma CA raiz que está carregada no gateway.

# List uploaded root certificates
az network vnet-gateway root-cert list \
--gateway-name $GW_NAME \
--resource-group $RG \
--output table

# Upload a missing root certificate (base64-encoded .cer without header/footer)
az network vnet-gateway root-cert create \
--gateway-name $GW_NAME \
--resource-group $RG \
--name "ContosoRootCA" \
--public-cert-data "MIIDuzCCAqO..."

Problema 2: Incompatibilidade de tipo de túnel

O cliente está configurado para IKEv2, mas o gateway suporta apenas SSTP, ou vice-versa.

# Update gateway to support both IKEv2 and OpenVPN
az network vnet-gateway update \
--name $GW_NAME \
--resource-group $RG \
--client-protocol IkeV2 OpenVPN

Problema 3: Esgotamento do pool de endereços

Todos os IPs de clientes P2S estão alocados. Nenhum novo cliente pode se conectar.

# Check current address pool size
az network vnet-gateway show \
--name $GW_NAME \
--resource-group $RG \
--query "vpnClientConfiguration.vpnClientAddressPool.addressPrefixes"

# Expand the address pool
az network vnet-gateway update \
--name $GW_NAME \
--resource-group $RG \
--address-prefixes "172.16.0.0/16"
Dimensionamento do pool de endereços

Um prefixo /24 fornece aproximadamente 251 endereços de cliente utilizáveis. Para implantações maiores, use /16 ou múltiplos prefixos. O pool de endereços não deve sobrepor nenhum espaço de endereço de VNet ou intervalos locais.


Tarefa 4: Solucionar problemas de circuito e peering ExpressRoute

Examine o estado de provisionamento do circuito ExpressRoute, a configuração de peering e verifique a conectividade de camada 2/3.

Azure CLI

ER_NAME="er-contoso-equinix"

# Check circuit provisioning state
az network express-route show \
--name $ER_NAME \
--resource-group $RG \
--query "{
circuitProvisioningState: circuitProvisioningState,
serviceProviderProvisioningState: serviceProviderProvisioningState,
serviceProviderProperties: serviceProviderProperties,
sku: sku,
bandwidthInMbps: bandwidthInMbps
}"

# Check peering configuration
az network express-route peering show \
--circuit-name $ER_NAME \
--resource-group $RG \
--name "AzurePrivatePeering" \
--query "{
peeringType: peeringType,
state: state,
azureASN: azureASN,
peerASN: peerASN,
primaryPeerAddressPrefix: primaryPeerAddressPrefix,
secondaryPeerAddressPrefix: secondaryPeerAddressPrefix,
vlanId: vlanId
}"

# Get circuit statistics (bytes in/out)
az network express-route get-stats \
--name $ER_NAME \
--resource-group $RG

# Get ARP table to verify layer 2 connectivity
az network express-route list-arp-tables \
--name $ER_NAME \
--resource-group $RG \
--peering-name "AzurePrivatePeering" \
--device-path "primary"

# Get route table to verify BGP route exchange
az network express-route list-route-tables \
--name $ER_NAME \
--resource-group $RG \
--peering-name "AzurePrivatePeering" \
--device-path "primary"

Azure PowerShell

$ErName = "er-contoso-equinix"

# Get circuit details
$circuit = Get-AzExpressRouteCircuit -ResourceGroupName $RG -Name $ErName

# Check provisioning states
$circuit | Select-Object `
CircuitProvisioningState,
ServiceProviderProvisioningState,
@{N='Bandwidth';E={$_.ServiceProviderProperties.BandwidthInMbps}}

# Get peering details
$peering = Get-AzExpressRouteCircuitPeeringConfig `
-ExpressRouteCircuit $circuit `
-Name "AzurePrivatePeering"

$peering | Select-Object `
PeeringType,
State,
AzureASN,
PeerASN,
PrimaryPeerAddressPrefix,
SecondaryPeerAddressPrefix,
VlanId

# Get ARP table
Get-AzExpressRouteCircuitARPTable `
-ResourceGroupName $RG `
-ExpressRouteCircuitName $ErName `
-PeeringType "AzurePrivatePeering" `
-DevicePath "Primary"

# Get route table
Get-AzExpressRouteCircuitRouteTable `
-ResourceGroupName $RG `
-ExpressRouteCircuitName $ErName `
-PeeringType "AzurePrivatePeering" `
-DevicePath "Primary"

Matriz de estados do ExpressRoute

Estado de provisionamento do circuitoEstado do provedor de serviçosSignificado
EnabledNotProvisionedCircuito criado no Azure; aguardando o provedor
EnabledProvisioningProvedor está configurando seu lado
EnabledProvisionedProvedor concluiu; pronto para configuração de peering
DeprovisioningDeprovisioningCircuito sendo excluído

Tarefa 5: Usar reset do gateway como último recurso

Quando um gateway se torna não responsivo ou os túneis ficam presos em um estado inválido, redefinir o gateway reinicia a instância ativa e força a renegociação IKE.

Azure CLI

# Reset the VPN gateway (affects all connections on this gateway)
az network vnet-gateway reset \
--name $GW_NAME \
--resource-group $RG

# Wait for the gateway to come back online
az network vnet-gateway wait \
--name $GW_NAME \
--resource-group $RG \
--created

# Verify gateway status after reset
az network vnet-gateway show \
--name $GW_NAME \
--resource-group $RG \
--query "{provisioningState:provisioningState, gatewayType:gatewayType, vpnType:vpnType}"

Azure PowerShell

# Reset the gateway
Reset-AzVirtualNetworkGateway `
-VirtualNetworkGateway (Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GwName)

# Check gateway health after reset
Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GwName |
Select-Object Name, ProvisioningState, GatewayType, VpnType
Impacto do reset do gateway

Redefinir um gateway:

  • Interrompe TODAS as conexões nesse gateway (S2S, P2S e VNet-to-VNet)
  • Leva de 5 a 15 minutos para ser concluído
  • Não altera a configuração do gateway -- apenas reinicia a instância ativa
  • Para gateways ativo-ativo, você pode redefinir cada instância separadamente usando o parâmetro --gateway-vip

Tarefa 6: Solução de problemas avançada com captura de pacotes

Para problemas persistentes, capture pacotes no gateway VPN para analisar o handshake IKE e o tráfego do plano de dados.

Azure CLI

# Start packet capture on the gateway (captures IKE and ESP traffic)
az network vnet-gateway packet-capture start \
--name $GW_NAME \
--resource-group $RG

# After reproducing the issue, stop and save the capture
# The SAS URL points to a blob where the capture is stored
az network vnet-gateway packet-capture stop \
--name $GW_NAME \
--resource-group $RG \
--sas-url "https://stdiagcontoso.blob.core.windows.net/captures?sv=2023-01-01&st=..."

Azure PowerShell

$gw = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GwName

# Start capture
Start-AzVirtualNetworkGatewayPacketCapture `
-ResourceGroupName $RG `
-Name $GwName

# Stop capture and download
Stop-AzVirtualNetworkGatewayPacketCapture `
-ResourceGroupName $RG `
-Name $GwName `
-SasUrl "https://stdiagcontoso.blob.core.windows.net/captures?sv=2023-01-01&st=..."

Cenários de quebra e correção

Cenário 1: Instabilidade da conexão VPN (timeout DPD)

Sintoma: O túnel S2S desconecta a cada 5-10 minutos, reconecta automaticamente e depois cai novamente. Os contadores de bytes transferidos são zerados a cada vez.

Causa raiz: O timeout de Dead Peer Detection (DPD) está configurado de forma muito agressiva no dispositivo local. O Azure usa um timeout DPD de 45 segundos por padrão. Se o dispositivo local tem um timeout menor (ex.: 10 segundos) e há picos breves de latência, ele derruba o túnel.

Diagnóstico:

# Check the connection for custom IPsec/IKE policies
az network vpn-connection show \
--name $CONNECTION_NAME \
--resource-group $RG \
--query "ipsecPolicies"

# Look for DPD-related failures in troubleshooting output
az network watcher troubleshooting start \
--resource $CONNECTION_NAME \
--resource-group $RG \
--resource-type vpnConnection \
--storage-account $STORAGE_ACCOUNT \
--storage-path $STORAGE_PATH

Correção: Defina uma política IPsec personalizada com timeout DPD apropriado (mínimo do Azure é 9 segundos, recomendado é 45 segundos). Garanta também que o dispositivo local esteja alinhado:

az network vpn-connection ipsec-policy add \
--connection-name $CONNECTION_NAME \
--resource-group $RG \
--ike-encryption AES256 \
--ike-integrity SHA256 \
--dh-group DHGroup14 \
--ipsec-encryption AES256 \
--ipsec-integrity SHA256 \
--pfs-group PFS14 \
--sa-lifetime 28800 \
--sa-data-size 102400000

Cenário 2: Pool de endereços P2S cheio

Sintoma: Novos clientes VPN P2S recebem o erro "no available IP addresses" ou falham ao conectar enquanto clientes existentes permanecem conectados.

Causa raiz: O pool de endereços P2S foi configurado com um /28 (14 IPs utilizáveis) e todos os endereços estão alocados para sessões existentes.

Diagnóstico:

# Check current pool size
az network vnet-gateway show \
--name $GW_NAME \
--resource-group $RG \
--query "vpnClientConfiguration.vpnClientAddressPool"

# Count connected clients (approximate)
az network vnet-gateway vpn-client show-health \
--name $GW_NAME \
--resource-group $RG 2>/dev/null || echo "Use Azure Portal > VPN Gateway > Point-to-site configuration > Connected clients"

Correção: Expanda o pool de endereços para acomodar mais clientes:

az network vnet-gateway update \
--name $GW_NAME \
--resource-group $RG \
--address-prefixes "172.16.0.0/16"
observação

Alterar o pool de endereços requer que os clientes P2S existentes se reconectem. Planeje essa mudança durante uma janela de manutenção.


Cenário 3: Falha de ARP do ExpressRoute (VLAN incorreta)

Sintoma: O estado de peering do ExpressRoute mostra "Enabled", mas a tabela ARP retorna resultados vazios. Nenhuma rota é aprendida.

Causa raiz: O VLAN ID configurado no peering do Azure não corresponde ao VLAN ID configurado pelo provedor de serviços em seu roteador de borda.

Diagnóstico:

# Check the VLAN ID in peering configuration
az network express-route peering show \
--circuit-name $ER_NAME \
--resource-group $RG \
--name "AzurePrivatePeering" \
--query "vlanId"

# Verify ARP table is empty (no layer 2 adjacency)
az network express-route list-arp-tables \
--name $ER_NAME \
--resource-group $RG \
--peering-name "AzurePrivatePeering" \
--device-path "primary"

Correção: Coordene com o provedor de serviços para confirmar o VLAN ID correto e então atualize o peering:

# Update peering with correct VLAN ID (example: provider confirms VLAN 200)
az network express-route peering update \
--circuit-name $ER_NAME \
--resource-group $RG \
--name "AzurePrivatePeering" \
--vlan-id 200

Após a atualização, verifique se o ARP resolve dentro de 1-2 minutos e se as rotas BGP começam a aparecer na tabela de rotas.


Árvore de decisão para solução de problemas

Túnel VPN Inativo?
├── Verificar connectionStatus
│ ├── NotConnected → Verificar acessibilidade do dispositivo local (UDP 500/4500)
│ ├── Connecting → Negociação IKE falhando
│ │ ├── Verificar correspondência de chave compartilhada
│ │ ├── Verificar alinhamento de política IKE/IPsec
│ │ └── Executar solução de problemas do Network Watcher
│ └── Connected mas sem tráfego → Verificar roteamento (UDR, BGP, NSG)

VPN P2S Falhando?
├── Erro de certificado → Verificar cert raiz carregado, cert cliente não revogado
├── Erro de tipo de túnel → Alinhar protocolo do cliente com config do gateway (IKEv2/OpenVPN/SSTP)
└── Sem IPs disponíveis → Expandir pool de endereços

ExpressRoute Não Funcionando?
├── Estado do Provedor = NotProvisioned → Contatar provedor
├── Estado do Peering = Disabled → Verificar configuração de peering
├── Tabela ARP vazia → Incompatibilidade de VLAN ou problema L2 com provedor
└── Rotas ausentes → Incompatibilidade de ASN BGP ou filtragem de prefixo

Limpeza

# Delete resources if they were created for this challenge
az group delete --name $RG --yes --no-wait
Remove-AzResourceGroup -Name "rg-hybrid-challenge24" -Force -AsJob

Verificação de conhecimento

1. Uma conexão VPN mostra connectionStatus 'Connecting' por mais de 10 minutos. O log do dispositivo on-premises mostra 'no proposal chosen'. Qual é a causa mais provável?

2. Qual comando inicia a solução automatizada de problemas VPN que analisa logs IKE e produz um relatório de diagnóstico?

3. Um circuito ExpressRoute mostra circuitProvisioningState 'Enabled' e serviceProviderProvisioningState 'NotProvisioned'. O que isso indica?

4. Clientes VPN P2S falham ao conectar com 'certificate validation failed'. O certificado da CA raiz foi renovado recentemente. Qual ação resolve isso?

5. Após resetar um gateway VPN, qual é o impacto esperado?

6. Um peering ExpressRoute mostra estado 'Enabled', mas a tabela ARP retorna resultados vazios nos caminhos primário e secundário. Qual é o problema de camada 2 mais provável?