Blog Post

Azure InfraGurus
5 MIN READ

Conectando o Azure Vmware Solution (AVS) com VPN Site to Site em topologia Hub Spoke.

LeandroBarbosa's avatar
May 05, 2025

A conexão de VPN entre AVS e o ambiente On-premises na maioria das vezes é realizada através do Virtual WAN, conforme descrito em: https://learn.microsoft.com/en-us/azure/azure-vmware/configure-site-to-site-vpn-gateway.

Contudo, caso necessário utilizar em uma topologia Hub-Spoke, existem componentes adicionais que devem ser considerados para permitir o trânsito entre o ExpressRoute do AVS e o VPN Gateway, bem como a propagação das rotas para o ambiente On-premises, assim como é feito por padrão com o Virtual WAN.

Nesta topologia, o Azure Route Server deve ser integrado para habilitar esse trânsito (propagação de rotas) 

O objetivo deste artigo é demonstrar em um ambiente de laboratório como conectar um ambiente On-premises com o Azure VMware Solution (AVS) através de uma VPN Site-to-Site em topologia Hub-Spoke.

Arquitetura do Laboratório com topologia Hub-Spoke.

Componentes Azure.

  • Vnet 10.90.0.0/16 com 3 Subnets.
    • Gateway Subnet - 10.90.0.0/24
    • RouteServerSubnet - 10.90.1.0/24
    • VmSubnet : 10.90.2.0/24
  • Virtual Network Gateway - VPN
  • Virtual Network Gateway - Express Route
  • Azure Route Server
  • Azure Vm Linux Ubuntu

Componentes On-premises

  • Firewall VPN PfSense - 192.168.90.0/24 , 192.168.200.0/22 , 192.168.92.0/24

Componetes Azure Vmware Solution

  • VMware SDDC
  • Circuito Express Route

*Este laboratório presume que os componentes como o Azure Vmware Solution e ambiente On-premises com Pfsense ou qualquer outro equipamento esteja presente.

1. Deploy componentes Azure
# 1. Variáveis - Altere conforme necessário
RESOURCE_GROUP="rg-avs-lab"
LOCATION="eastus2"
VNET_NAME="vnet-avs-lab"
VNET_ADDRESS_PREFIX="10.90.0.0/16"
SUBNET_GATEWAY_PREFIX="10.90.0.0/24"
SUBNET_ROUTE_SERVER_PREFIX="10.90.1.0/24"
SUBNET_GATEWAY_NAME="GatewaySubnet"
SUBNET_ROUTE_SERVER_NAME="RouteServerSubnet"

EXPRESSROUTE_GW_NAME="er-avs-lab"
VPN_GW_NAME="vpn-avs-lab"
VPN_GW_IP1_NAME="vpn-gw-ip1"
VPN_GW_IP2_NAME="vpn-gw-ip2"
VPN_GW_ASN=65515

EXPRESSROUTE_IP_NAME="er-ip"
LOCAL_NETWORK_GATEWAY_NAME="local-gw-avs-lab"
BGP_PEER_IP="192.168.90.1"
ASN_LOCAL=65503

ROUTE_SERVER_NAME="rserver-avs-lab"

# Variáveis para subnet e VM
SUBNET_VM_NAME="subnet-vm"
SUBNET_VM_PREFIX="10.90.5.0/24"
VM_NAME="vm-ubuntu"
VM_ADMIN_USERNAME='azureuser'
VM_ADMIN_PASSWORD='P@ssword123!' # Use um método seguro em produção
VM_NIC_NAME="vm-ubuntu-nic"
VM_IMAGE="Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest"
VM_SIZE="Standard_B2ms"

# 2. Criar grupo de recursos
az group create --name $RESOURCE_GROUP --location $LOCATION

# 3. Criar VNet e subnets
az network vnet create \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --name $VNET_NAME \
  --address-prefixes $VNET_ADDRESS_PREFIX \
  --subnet-name $SUBNET_GATEWAY_NAME \
  --subnet-prefix $SUBNET_GATEWAY_PREFIX

az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name $SUBNET_ROUTE_SERVER_NAME \
  --address-prefix $SUBNET_ROUTE_SERVER_PREFIX

# Criar subnet para a VM
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name $SUBNET_VM_NAME \
  --address-prefix $SUBNET_VM_PREFIX

# 4. Criar IP público para ExpressRoute
az network public-ip create \
  --resource-group $RESOURCE_GROUP \
  --name $EXPRESSROUTE_IP_NAME \
  --sku Standard \
  --allocation-method Static

# 5. Criar Gateway ExpressRoute
az network vnet-gateway create \
  --resource-group $RESOURCE_GROUP \
  --name $EXPRESSROUTE_GW_NAME \
  --location $LOCATION \
  --vnet $VNET_NAME \
  --public-ip-addresses $EXPRESSROUTE_IP_NAME \
  --gateway-type ExpressRoute \
  --sku Standard 

# 6. Criar IPs públicos para VPN Gateway ativo-ativo
az network public-ip create \
  --resource-group $RESOURCE_GROUP \
  --name $VPN_GW_IP1_NAME \
  --sku Standard \
  --allocation-method Static

az network public-ip create \
  --resource-group $RESOURCE_GROUP \
  --name $VPN_GW_IP2_NAME \
  --sku Standard \
  --allocation-method Static

# 7. Criar VPN Gateway 
az network vnet-gateway create \
  --resource-group $RESOURCE_GROUP \
  --name $VPN_GW_NAME \
  --location $LOCATION \
  --vnet $VNET_NAME \
  --public-ip-addresses $VPN_GW_IP1_NAME $VPN_GW_IP2_NAME \
  --gateway-type Vpn \
  --vpn-type RouteBased \
  --sku VpnGw1

# Após a criação, configurar ativo-ativo e BGP
az network vnet-gateway update \
  --resource-group $RESOURCE_GROUP \
  --name $VPN_GW_NAME \
  --set activeActive=true enableBgp=true bgpSettings.asn=$VPN_GW_ASN

# 8. Criar Local Network Gateway com BGP e ASN
az network local-gateway create \
  --resource-group $RESOURCE_GROUP \
  --name $LOCAL_NETWORK_GATEWAY_NAME \
  --gateway-ip-address $BGP_PEER_IP \
  --local-address-prefixes "192.168.90.0/24" \
  --asn $ASN_LOCAL \
  --bgp-peering-address $BGP_PEER_IP \
  --location $LOCATION

# 9. Criar conexão VPN entre o Gateway de VPN e o Local Network Gateway
az network vpn-connection create \
  --resource-group $RESOURCE_GROUP \
  --name vpn-s2s-connection \
  --vnet-gateway1 $VPN_GW_NAME \
  --local-gateway2 $LOCAL_NETWORK_GATEWAY_NAME \
  --shared-key 'teste@123' \
  --enable-bgp


# 10. Criar NIC para a VM 
az network nic create \
  --resource-group $RESOURCE_GROUP \
  --name $VM_NIC_NAME \
  --vnet-name $VNET_NAME \
  --subnet $SUBNET_VM_NAME

# 12. Criar VM com Ubuntu
az vm create \
  --resource-group $RESOURCE_GROUP \
  --name $VM_NAME \
  --nics $VM_NIC_NAME \
  --image $VM_IMAGE \
  --admin-username $VM_ADMIN_USERNAME \
  --admin-password $VM_ADMIN_PASSWORD \
  --size $VM_SIZE \
  --location $LOCATION
2. Conectando o Express Route do AVS no VPN Gateway da Hub.

No Virtual Network Gateway de ER , adicione uma conexão

Defina o connection type como ExpressRoute

 

 

No AVS, copie o authorization key e o ExpressRoute ID

 

Para este cenário será utilizado o modelo de resiliência standard, o Virtual network gateway, informe um nome para conexão, insira a "authorization key" e "ExpressRoute ID" (per cirtuit URI) copiados nos passos acima e execute o deploy.

 

 

Verificando que a conexão foi estabelecida com sucesso.

 

Verificando as rotas na Vm de teste.

Ao verificar as rotas do Pfsense ( onprem) ,  é possível observar que não temos as rotas do AVS, somente da Vnet do Azure.

Para habilitar o trânsito e troca de rotas entre o Express Route do AVS e o VPN gateway precisamos inserir o Azure Route Server.

3. Deploy do Azure Route Server.

#Criar Azure Route Server 
#Cria Public IP para o Route Server
az network public-ip create --resource-group $RESOURCE_GROUP --name routeserver-pip --sku Standard --allocation-method Static

# Identifica o ID da Subnet do Route Server
SUBNET_ID=$(az network vnet subnet list --resource-group $RESOURCE_GROUP --vnet-name $VNET_NAME --query "[?name=='$SUBNET_ROUTE_SERVER_NAME'].id" --output tsv)

# Cria o Route Server
az network routeserver create \
  --resource-group $RESOURCE_GROUP \
  --name $ROUTE_SERVER_NAME \
  --hosted-subnet $SUBNET_ID \
  --location $LOCATION \
  --public-ip-address routeserver-pip

 

Após criado habilitamos a opção Branch-to-Branch

 

Podemos verificar que agora as rotas do AVS (172.30.0.0/22), agora foram propagadas para o Pfsense.

Validando acesso ao Vcenter do AVS.

 

Referências: 

https://learn.microsoft.com/en-us/azure/route-server/overview 

https://learn.microsoft.com/en-us/azure/architecture/networking/architecture/hub-spoke

Updated May 05, 2025
Version 4.0
No CommentsBe the first to comment