Introducción.
Ambiente de Referencia.
- En las instalaciones físicas se cuenta con dos dispositivos VPN independientes, para garantizar la redundancia de las comunicaciones. Estos dispositivos serán representados en Azure como Local Network Gateways. Cada uno de ellos cuenta con una dirección IP pública accesible a través de la internet, así como una dirección IP denominada BGP Peer Address, necesaria para la configuración del protocolo de enrutamiento BGP.
- En la infraestructura de Azure se definirá una Virtual Network Gateway en modo Active-Active, con el protocolo de enrutamiento BGP habilitado. En esta configuración, la Virtual Netwrok Gateway cuenta con dos instancias operativas, por lo que requerirá de dos direcciones IP públicas, así como las direcciones BGP Peer Address correspondientes para la configuración del protocolo de enrutamiento BGP.
- Por último, en este modelo de alta disponibilidad se definen conexiones lógicas que activan los túneles VPN para la configuración redundante entre las comunicaciones de los dispositivos. Como veremos más adelante, si bien en el diagrama vemos cuatro (4) túneles, en Azure están representados por dos conexiones, dado que una conexión en Azure se define como el vínculo entre una Virtual Network Gateway y una Local Network Gateway.
Figura 1. Ambiente de Referencia.
Requisitos.
Para utilizar los cmdlets de PowerShell que se proporcionan en este artículo, es necesario contar con el nuevo módulo Az de Azure PowerShell. Para obtener instrucciones sobre la instalación del módulo Az, puede consultar el siguiente enlace: Instalación del módulo Azure PowerShell. Una vez instalado el módulo Az de Azure PowerShell debe establecer una conexión autenticada con un usuario que tenga derechos administrativos en la suscripción, suficientes para la creación de los recursos que se describen en esta documentación. Para ello puede utilizar el cmdlet Connect-AzAccount y a continuación introducir las credenciales cuando se le solicite. Para mayor información sobre cómo iniciar sesión en Azure con PowerShell, puede consultar el siguiente enlace: Inicio de Sesión con Azure PowerShell.
Descripción General de las Actividades.
A continuación, se describen de manera general las actividades involucradas:
-
Paso 1.- Definición de Parámetros Comunes: En este paso vamos a definir los parámetros iniciales para la configuración, estableciendo valores de ejemplo, específicamente para la Virtual Network.
- Paso 2.- Creación de Direcciones IP Públicas: El modo Active-Active de la Virtual Network Gateway requiere de dos direcciones IP Públicas - una para cada instancia activa.
- Paso 3.- Creación de la Virtual Network Gateway: Satisfechos los requisitos iniciales, en este paso creamos el recurso para la Virtual Network Gateway.
- Paso 4.- Creación de las Local Network Gateways: Estos son los recursos en Azure que representan a los dispositivos VPN en las instalaciones físicas.
- Paso 5.- Creación de las Conexiones: Acá establecemos el vínculo lógico entre la Virtual Network Gateway y las Local Network Gateways creadas en el paso anterior.
Paso 1.- Definición de Parámetros Comunes.
Resource Group.
Para efectos de este documento, asumimos que el grupo de recursos o Resource Group ya se encuentra creado en Azure, y que todos los demás recursos que crearemos para esta implementación se agruparán dentro de esta unidad de administración.
Virtual Network.
De igual manera, también asumimos que la red virtual o Virtual Network ya se encuentra definida en Azure. Acá es importante destacar la importancia del espacio de direcciones que maneja la Virtual Network, así como las subredes o Subnets definidas bajo el paraguas de estos espacios de direcciones, ya que estos serán advertidos por la Virtual Network Gateway hacia las instalaciones físicas una vez establecida la conexión Site-to-Site. Es de suma importancia la subnet denominada GatewaySubnet, ya que dentro de esta se van a crear automáticamente y de manera transparente para nosotros los recursos de comunicación para las instancias y otros componentes necesarios para la operación de la Virtual Network. Por ejemplo, si habilitamos el protocolo de enrutamiento, como efectivamente vamos a hacer, las direcciones BGP Peer que utilizaremos para configurar el protocolo del lado de las instalaciones físicas se obtienen del rango de direcciones correspondiente a la GatewaySubnet. Los valores que se muestran en la siguiente tabla son de referencia.
Nombre Virtual Network | VNet-Infra | Subnets | GatewaySubnet | 10.224.128.0/27 | |
Espacio de Direcciones | 10.224.128.0/24 | | Subnet-Prod | 192.168.100.0/24 | |
192.168.0.0/16 | Subnet-Dev |
192.168.200.128/24 |
PowerShell
#region: Datos Generales:
$ResourceGroup = " AZ_Infraestructura_RG" #Nombre del Resource Group$Location= " eastus" #Nombre de la Localidad$VNetName = "VNet-Infra" #Nombre de la Virtual Network$GWsubnetName = "GatewaySubnet" #Nombre de la Gateway Subnet
#endregion
Paso 2.- Creación de Direcciones IPs Públicas.
Powershell.
#region: Creación de Direcciones IP Públicas:
#Definición de Nombres de Direcciones IP Públicas:
$VNGIP01Name = "VNGIP01" #Nombre Dirección IP Pública 01
$VNGIP02Name = "VNGIP02" #Nombre Dirección IP Pública 02
#Dirección IP Pública 01:
$VNGPublicIP01 = New-AzPublicIpAddress -Name $VNGIP01Name `
-ResourceGroupName $ResourceGroup `
-Location $Location `-AllocationMethod Dynamic
#Dirección IP Pública 02:$VNGPublicIP02 = New-AzPublicIpAddress -Name $VNGIP02Name `-ResourceGroupName $ResourceGroup `-Location $Location `-AllocationMethod Dynamic
#endregion
Paso 3.- Creación de la Virtual Network Gateway.
Propiedad | Parámetro | Descripción | |
Tipo de Gateway | -GatewayType | El tipo de gateway indica si se va a trabajar bajo el modelo de VPN, transmitiendo datos cifrados sobre la red pública, o través de un enlace dedicado. Los valores en cada caso son VPN y ExpressRoute. Para nuestro escenario, aplica el primer valor. | |
Tipo de VPN | -VPNType | El tipo de VPN indica si el enrutamiento se realizará con base a listas de acceso o será generado automáticamente. El primer caso corresponde a un valor Policy-Based y el segundo a Route-Based. En la gran mayoría de los casos el tipo de VPN corresponde a Route-Based, y esto es mandatorio cuando se utiliza el protocolo de enrutamiento BGP. En contadas excepciones se utiliza el tipo Policy-Based, como por ejemplo cuando el dispositivo en las instalaciones físicas no soporta Route-Based. | |
SKU | -GatewaySku | Del SKU seleccionado depende el desempeño y las características de la Virtual Network Gateway, como por ejemplo el número máximo de túneles que se pueden configurar y el máximo ancho de banda disponible. Para nuestro escenario, podemos escoger cualquier SKU entre VpnGw1, VpnGw2 o VpnGw3, ya que el Basic no soporta las características de alta disponibilidad que vamos a configurar. | |
Autonomous System Number (ASN) | -ASN | Este es un número especial que se utiliza en conjunto con BGP para identificar a un área de administración específica que agrupa dispositivos bajo una política de enrutamiento única. |
PowerShell.
#region: Creación de la Virtual Network Gateway:
$VNGName = "VPN-Gateway" #Nombre de la Virtual Network Gateway$VNGType = "VPN" #Tipo de Gateway de la Virtual Network Gateway$VNGVPNType = "RouteBased" #Tipo de VPN de la Virtual Network Gateway$SKU = "VpnGw1" #SKU de la Virtual Network Gateway$ASN = "65515" #Autonomous System Number (ASN)
#Información de la Virtual Network:$VNetInfo = Get-AzVirtualNetwork -Name $VNetName ` -ResourceGroupName $ResourceGroup#Vector de almacenamiento de Configuraciones IP Públicas de la Virtual Network Gateway:$VNGIPConfigs = @()#Información de la GatewaySubnet:$GWSubnetInfo = Get-AzVirtualNetworkSubnetConfig -Name $GWSubnetName `-VirtualNetwork $VNetInfo#Almacenamiento de las Configuraciones IP Públicas de la Virtual Network Gateway:$VNGIPConfigs += New-AzVirtualNetworkGatewayIpConfig -Name "VNGPIPConfig01" `-Subnet $GWSubnetInfo `-PublicIpAddress $VNGPublicIP01$VNGIPConfigs += New-AzVirtualNetworkGatewayIpConfig -Name "VNGPIPConfig02" `-Subnet $GWSubnetInfo `-PublicIpAddress $VNGPublicIP02#Creación de la Virtual Network Gateway:New-AzVirtualNetworkGateway -Name $VNGName `-ResourceGroupName $ResourceGroup `-Location $Location `-IpConfigurations $VNGIPConfigs `-GatewayType $VNGType `-VpnType $VNGVPNType `-GatewaySku $SKU `-Asn $ASN `-EnableBGP $true -EnableActiveActiveFeature | Out-Null
#endregion
#region: Obtener las direcciones IP Públicas y direcciones BGP Peer Addresses:
#Información de la Virtual Network Gateway:
$VNGInfo = Get-AzVirtualNetworkGateway -Name $VNGName `
-ResourceGroupName $ResourceGroup
#Información de las direcciones IP Públicas:
$VNGIP01Name = "VNGIP01" #Nombre Dirección IP Pública 01
$VNGIP02Name = "VNGIP02" #Nombre Dirección IP Pública 02$VNGPublicIP01 = Get-AzPublicIPAddress -Name $VNGIP01Name `$VNGPublicIP02 = Get-AzPublicIPAddress -Name $VNGIP02Name `-ResourceGroupName $ResourceGroup
-ResourceGroupName $ResourceGroup
#Información de las direcciones BGP Peer:
$BGPPeerIPs = ($VNGInfo.BgpSettings).BgpPeeringAddress$BGPPeerIPs = $BGPPeerIPs.Split(",")
#Datos de direcciones:Write-Host "Dirección Ip Pública 01: " $VNGPublicIP01.IpAddressWrite-Host "BGP Peer IP Address 01 : " $BGPPeerIPs[0]Write-Host "Dirección Ip Pública 02: " $VNGPublicIP02.IpAddress
Write-Host "BGP Peer IP Address 02 : " $BGPPeerIPs[1]
#endregion
Paso 4.- Creación de las Local Network Gateways.
PowerShell.
#region: Creación de las Local Network Gateway:
#Información de las Local Network Gateways:
$LNGName01 = "LNG-01" #Nombre de la Local Network Gateway 01$LNGName02 = "LNG-02" #Nombre de la Local Network Gateway 02LNGIP01 = "200.51.X.Z" #IP Pública de la Local Network Gateway 01LNGIP02 = "138.36.X.Z" #IP Pública de la Local Network Gateway 02LNGPref01 = "172.21.C.0/24" #Espacio de Direcciones Local Network Gateway 01LNGPref02 = "172.21.D.0/24" #Espacio de Direcciones Local Network Gateway 02LNGBGPIP01 = "172.21.C.D" #BGP Peer Address de la Local Network Gateway 01LNGBGPIP01 = "172.21.G.H" #BGP Peer Address de la Local Network Gateway 02LNGASN = "64999" #Autonomous System Number
#Creación Local Network Gateway 01 :
New-AzLocalNetworkGateway -Name $LNGName01 `
-ResourceGroupName $ResourceGroup `-Location $Location `-GatewayIpAddress $LNGIP01 `-AddressPrefix $LNGPref01 `-Asn $LNGASN `-BgpPeeringAddress $LNGBGPIP01 | Out-Null
#Creación Local Network Gateway 02:
New-AzLocalNetworkGateway -Name $LNGName02 `
-ResourceGroupName $ResourceGroup `-Location $Location `-GatewayIpAddress $LNGIP02 `-AddressPrefix $LNGPref02 `-Asn $LNGASN `-BgpPeeringAddress $LNGBGPIP02 | Out-Null
#endregion
Paso 5.- Creación de las Conexiones.
PowerShell.
#region: Creación de las Conexiones:
#Información de las Conexiones:
$ConnName01 = "VNG-to-LNG01" #Nombre de la Conexión hacia la Local Network 01$ConnName02 = "VNG-to-LNG02" #Nombre de la Conexión hacia la Local Network 02$SharedKeyConn01 ="GenKey01" #Clave Compartida Conexión 01$SharedKeyConn02 ="GenKey02" #Clave Compartida Conexión 02#Información de la Virtual Network Gateway:
$VNGInfo = Get-AzVirtualNetworkGateway -Name $VNGName `
-ResourceGroupName $ResourceGroup
#Información de la Local Network Gateway 01:$LNGName01 = "LNG-01" #Nombre de la Local Network Gateway 01
$LNGInfo01 = Get-AzLocalNetworkGateway -Name $LNGWName01 `
-ResourceGroupName $ResourceGroup
#Información de la Local Network Gateway 02:
$LNGName02 = "LNG-02" #Nombre de la Local Network Gateway 02 $LNGInfo02 = Get-AzLocalNetworkGateway -Name $LNGWName02 `
-ResourceGroupName $ResourceGroup
#Creación Conexión Virtual Network Gateway hacia Local Network Gateway 01
New-AzVirtualNetworkGatewayConnection -Name $ConnName01 `
-ResourceGroupName $ResourceGroup `-VirtualNetworkGateway1 $VNGInfo `-LocalNetworkGateway2 $LNGInfo01 `-Location $Location `-ConnectionType IPsec `-SharedKey $SharedKeyConn01 `-EnableBGP $True | Out-Null#Creación Conexión Virtual Network Gateway hacia Local Network Gateway 02
New-AzVirtualNetworkGatewayConnection -Name $ConnName02 `
-ResourceGroupName $ResourceGroup `-VirtualNetworkGateway1 $VNGInfo `-LocalNetworkGateway2 $LNGInfo02 `-Location $Location `-ConnectionTypeIPsec `-SharedKey $SharedKeyConn02 `#endregion-EnableBGP $True | Out-Null