Configuración de BGP para VPN Gateway: PowerShell

Este artículo le ayuda a habilitar BGP en conexiones VPN de sitio a sitio (S2S) entre entornos locales y conexiones de red virtual a red virtual mediante Azure PowerShell. Si no está familiarizado con este tipo de configuración, es posible que le resulte más fácil usar la versión Azure Portal de este artículo.

BGP es el protocolo de enrutamiento estándar usado habitualmente en Internet para intercambiar información de enrutamiento y disponibilidad entre dos o más redes. BGP permite que instancias de Azure VPN Gateway y los dispositivos VPN locales, denominados vecinos o pares BGP, intercambien "rutas" que comunicarán a ambas puertas de enlace la disponibilidad y la posibilidad de que dichos prefijos pasen a través de las puertas de enlace o los enrutadores implicados. BGP también puede permitir el enrutamiento del tránsito entre varias redes mediante la propagación de las rutas que una puerta de enlace de BGP aprende de un par BGP a todos los demás pares BGP.

Para más información sobre las ventajas de BGP y conocer los requisitos técnicos y las consideraciones sobre el uso de BGP, consulte Acerca de BGP con Azure VPN Gateway.

Introducción

Cada parte de este artículo le ayuda a constituir un bloque de creación básico para habilitar BGP en la conectividad de red. Si completa las tres partes (configurar BGP en la puerta de enlace, la conexión S2S y la conexión de red virtual a red virtual), creará una topología como la que se muestra en el diagrama 1. Puede combinar estas secciones para crear una red de tránsito más compleja y de saltos múltiples que satisfaga sus necesidades.

Diagrama 1

Diagrama que muestra la configuración y la arquitectura de red.

Habilitación de BGP para VPN Gateway

Esta sección es necesaria antes de realizar alguno de los pasos de las otras dos secciones de configuración. Los siguientes pasos de configuración permiten establecer los parámetros de BGP de la instancia de Azure VPN Gateway, como se muestra en el diagrama 2.

Diagrama 2

Diagrama que muestra la configuración de la puerta de enlace de red virtual.

Antes de empezar

Puede ejecutar los pasos de este ejercicio mediante Azure Cloud Shell en el explorador. Si quiere usar PowerShell directamente desde el equipo, instale los cmdlets de PowerShell para Azure Resource Manager. Consulte Instalación y configuración de Azure PowerShell para más información sobre cómo instalar los cmdlets de PowerShell.

Creación y configuración de VNet1

1. Declaración de las variables

En este ejercicio, se empieza por la declaración de las variables. En este ejemplo se declaran las variables con los valores para este ejercicio. Puede usar las variables de ejemplo (con la excepción del nombre de la suscripción) si está ejecutando los pasos para familiarizarse con este tipo de configuración. Modifique todas las variables y después copie y pegue todo en la consola de PowerShell. Asegúrese de reemplazar los valores por los suyos propios cuando realice la configuración para el entorno de producción.

$Sub1 = "Replace_With_Your_Subscription_Name"
$RG1 = "TestRG1"
$Location1 = "East US"
$VNetName1 = "TestVNet1"
$FESubName1 = "FrontEnd"
$BESubName1 = "Backend"
$GWSubName1 = "GatewaySubnet"
$VNetPrefix11 = "10.11.0.0/16"
$VNetPrefix12 = "10.12.0.0/16"
$FESubPrefix1 = "10.11.0.0/24"
$BESubPrefix1 = "10.12.0.0/24"
$GWSubPrefix1 = "10.12.255.0/27"
$VNet1ASN = 65010
$DNS1 = "8.8.8.8"
$GWName1 = "VNet1GW"
$GWIPName1 = "VNet1GWIP"
$GWIPconfName1 = "gwipconf1"
$Connection12 = "VNet1toVNet2"
$Connection15 = "VNet1toSite5"

2. Conexión a su suscripción y creación de un nuevo grupo de recursos

Para usar los cmdlets de Resource Manager, asegúrese de cambiar al modo de PowerShell. Para obtener más información, consulte Uso de Windows PowerShell con el Administrador de recursos.

Si utiliza Azure Cloud Shell, se conectará automáticamente a su cuenta. Si usa PowerShell desde el equipo, abra la consola de PowerShell y conéctese a la cuenta. Use el siguiente ejemplo para ayudarle a conectarse:

Connect-AzAccount
Select-AzSubscription -SubscriptionName $Sub1
New-AzResourceGroup -Name $RG1 -Location $Location1

Después, cree un grupo de recursos.

New-AzResourceGroup -Name $RG1 -Location $Location1

3. Creación de TestVNet1

En el siguiente ejemplo se crea una red virtual denominada "TestVNet1" y tres subredes: GatewaySubnet, FrontEnd y Backend. Al reemplazar valores, es importante que siempre asigne el nombre GatewaySubnet a la subred de la puerta de enlace. Si usa otro, se produce un error al crear la puerta de enlace.

$fesub1 = New-AzVirtualNetworkSubnetConfig -Name $FESubName1 -AddressPrefix $FESubPrefix1
$besub1 = New-AzVirtualNetworkSubnetConfig -Name $BESubName1 -AddressPrefix $BESubPrefix1
$gwsub1 = New-AzVirtualNetworkSubnetConfig -Name $GWSubName1 -AddressPrefix $GWSubPrefix1

New-AzVirtualNetwork -Name $VNetName1 -ResourceGroupName $RG1 -Location $Location1 -AddressPrefix $VNetPrefix11,$VNetPrefix12 -Subnet $fesub1,$besub1,$gwsub1

Creación de la puerta de enlace de VPN con BGP habilitado

1. Cree las configuraciones de IP y de subred

Solicite que se asigne una dirección IP pública a la puerta de enlace que creará para la red virtual. También definirá las configuraciones de subred y de IP necesarias.

$gwpip1 = New-AzPublicIpAddress -Name $GWIPName1 -ResourceGroupName $RG1 -Location $Location1 -AllocationMethod Dynamic

$vnet1 = Get-AzVirtualNetwork -Name $VNetName1 -ResourceGroupName $RG1
$subnet1 = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet1
$gwipconf1 = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconfName1 -Subnet $subnet1 -PublicIpAddress $gwpip1

2. Cree la puerta de enlace de VPN con el número de AS

Cree la puerta de enlace de red virtual para TestVNet1. BGP requiere una instancia de VPN Gateway basada en una ruta y también una parámetro adicional, -Asn, con el fin de establecer el ASN (número de AS) para TestVNet1. Asegúrese de especificar el parámetro -Asn. Si no establece el parámetro -Asn, se asigna ASN 65515 (que no funciona para esta configuración) de forma predeterminada. Se tardan unos 45 minutos o algo más en crear una puerta de enlace.

New-AzVirtualNetworkGateway -Name $GWName1 -ResourceGroupName $RG1 -Location $Location1 -IpConfigurations $gwipconf1 -GatewayType Vpn -VpnType RouteBased -GatewaySku VpnGw1 -Asn $VNet1ASN

Una vez creada la puerta de enlace, puede usar esta puerta de enlace para establecer conexión entre locales o conexión de red virtual a red virtual con BGP.

3. Obtención de la dirección IP del par BGP de Azure

Una vez creada la puerta de enlace, debe obtener la dirección IP del par BGP en VPN Gateway. Esta dirección es necesaria para configurar VPN Gateway como par BGP para los dispositivos VPN locales.

Si usa CloudShell, es posible que tenga que restablecer las variables si se agota el tiempo de espera de la sesión al crear la puerta de enlace.

Vuelva a establecer las variables si es necesario:

$RG1 = "TestRG1"
$GWName1 = "VNet1GW"

Ejecute el siguiente comando y anote el valor "BgpPeeringAddress" de la salida.

$vnet1gw = Get-AzVirtualNetworkGateway -Name $GWName1 -ResourceGroupName $RG1
$vnet1gw.BgpSettingsText

Salida de ejemplo:

$vnet1gw.BgpSettingsText
{
    "Asn": 65010,
    "BgpPeeringAddress": "10.12.255.30",
    "PeerWeight": 0
}

Si no aparece el elemento BgpPeeringAddress como una dirección IP, la puerta de enlace todavía se está configurando. Inténtelo de nuevo cuando se complete la configuración de la puerta de enlace.

Establecer una conexión entre locales con BGP

Para establecer una conexión entre locales, debe crear una puerta de enlace de red local para representar el dispositivo VPN local y una conexión para conectarse a la instancia de VPN Gateway con la puerta de enlace de red local como se explica en Creación de una conexión de sitio a sitio. Las secciones siguientes contienen las propiedades necesarias para especificar los parámetros de configuración de BGP, como se muestra en el diagrama 3.

Diagrama 3

Diagrama que muestra la configuración de IPsec.

Antes de continuar, asegúrese de que ha habilitado BGP para VPN Gateway en la sección anterior.

Paso 1: Creación y configuración de la puerta de enlace de red local

1. Declaración de las variables

Este ejercicio es continuación del paso de creación de la configuración mostrada en el diagrama. Asegúrese de reemplazar los valores por los que desea usar para su configuración. Por ejemplo, debe tener la dirección IP del dispositivo VPN. En este ejercicio, puede sustituir una dirección IP válida si no planea conectarse a su dispositivo VPN en este momento. Más adelante puede reemplazar la dirección IP.

$RG5 = "TestRG5"
$Location5 = "West US"
$LNGName5 = "Site5"
$LNGPrefix50 = "10.51.255.254/32"
$LNGIP5 = "4.3.2.1"
$LNGASN5 = 65050
$BGPPeerIP5 = "10.51.255.254"

Un par de cosas a tener en cuenta con respecto a los parámetros de la puerta de enlace de red local:

  • La puerta de enlace de red local puede estar en la misma ubicación y grupo de recursos que la puerta de enlace de VPN o en otros distintos. Este ejemplo los muestra en distintos grupos de recursos en diferentes ubicaciones.
  • El prefijo que debe declarar para la puerta de enlace de red local es la dirección del host de la dirección IP del par BGP en el dispositivo VPN. En este caso, es un prefijo /32 de "10.51.255.254/32".
  • Como recordatorio, debe usar diferentes ASN de BGP entre las redes locales y la red virtual de Azure. Si son iguales, tiene que cambiar el ASN de la red virtual si el dispositivo VPN local ya utiliza el ASN para emparejarse con otros vecinos de BGP.

2. Cree las puertas de enlace de red local para Site5

Cree el grupo de recursos antes de crear la puerta de enlace de red local.

New-AzResourceGroup -Name $RG5 -Location $Location5

Cree la puerta de enlace de red local. Observe los dos parámetros adicionales de la puerta de enlace de red local: Asn y BgpPeerAddress.

New-AzLocalNetworkGateway -Name $LNGName5 -ResourceGroupName $RG5 -Location $Location5 -GatewayIpAddress $LNGIP5 -AddressPrefix $LNGPrefix50 -Asn $LNGASN5 -BgpPeeringAddress $BGPPeerIP5

Paso 2: Conexión de la puerta de enlace de red virtual y la puerta de enlace de red local

1. Obtenga las dos puertas de enlace

$vnet1gw = Get-AzVirtualNetworkGateway -Name $GWName1  -ResourceGroupName $RG1
$lng5gw  = Get-AzLocalNetworkGateway -Name $LNGName5 -ResourceGroupName $RG5

2. Cree la conexión de TestVNet1 a Site5

En este paso, creará la conexión de TestVNet1 a Site5. Debe especificar "-EnableBGP True" para habilitar BGP para esta conexión. Como se explicó anteriormente, es posible tener conexiones BGP y no BGP para la misma instancia de VPN Gateway. A menos que BGP esté habilitado en la propiedad de conexión, Azure no habilitará BGP para esta conexión, aunque los parámetros de BGP ya estén configurados en ambas puertas de enlace.

Vuelva a declarar las variables si es necesario:

$Connection15 = "VNet1toSite5"
$Location1 = "East US"

Luego, ejecute el siguiente comando:

New-AzVirtualNetworkGatewayConnection -Name $Connection15 -ResourceGroupName $RG1 -VirtualNetworkGateway1 $vnet1gw -LocalNetworkGateway2 $lng5gw -Location $Location1 -ConnectionType IPsec -SharedKey 'AzureA1b2C3' -EnableBGP $True

Configuración del dispositivo local

En el ejemplo siguiente se enumeran los parámetros que deberá especificar en la sección de configuración de BGP en el dispositivo VPN local para este ejercicio:

- Site5 ASN            : 65050
- Site5 BGP IP         : 10.51.255.254
- Prefixes to announce : (for example) 10.51.0.0/16
- Azure VNet ASN       : 65010
- Azure VNet BGP IP    : 10.12.255.30
- Static route         : Add a route for 10.12.255.30/32, with nexthop being the VPN tunnel interface on your device
- eBGP Multihop        : Ensure the "multihop" option for eBGP is enabled on your device if needed

La conexión se establece después de unos minutos y se iniciará la sesión de emparejamiento BGP una vez establecida la conexión IPsec.

Establecer una conexión de red virtual a red virtual con BGP

En esta sección se agrega una conexión de red virtual a red virtual con BGP, como se indica en el diagrama 4.

Diagrama 4

Diagrama que muestra la configuración de red completa.

Las siguientes instrucciones son continuación de los pasos anteriores. Primero debe completar los pasos de la sección Habilitar BGP para VPN Gateway para crear y configurar TestVNet1 y la instancia de VPN Gateway con BGP.

Paso 1: Creación de TestVNet2 y la puerta de enlace de VPN

Es importante asegurarse de que el espacio de direcciones IP de la red virtual nueva, TestVNet2, no se solape con ninguno de los intervalos de red virtual.

En este ejemplo, las redes virtuales pertenecen a la misma suscripción. Se pueden configurar conexiones de red virtual a red virtual entre distintas suscripciones. Para obtener más información, consulte Configuración de una conexión de red virtual a red virtual. Asegúrese de agregar "-EnableBgp True" al crear las conexiones para habilitar BGP.

1. Declaración de las variables

Asegúrese de reemplazar los valores por los que desea usar para su configuración.

$RG2 = "TestRG2"
$Location2 = "East US"
$VNetName2 = "TestVNet2"
$FESubName2 = "FrontEnd"
$BESubName2 = "Backend"
$GWSubName2 = "GatewaySubnet"
$VNetPrefix21 = "10.21.0.0/16"
$VNetPrefix22 = "10.22.0.0/16"
$FESubPrefix2 = "10.21.0.0/24"
$BESubPrefix2 = "10.22.0.0/24"
$GWSubPrefix2 = "10.22.255.0/27"
$VNet2ASN = 65020
$DNS2 = "8.8.8.8"
$GWName2 = "VNet2GW"
$GWIPName2 = "VNet2GWIP"
$GWIPconfName2 = "gwipconf2"
$Connection21 = "VNet2toVNet1"
$Connection12 = "VNet1toVNet2"

2. Cree TestVNet2 en el nuevo grupo de recursos

New-AzResourceGroup -Name $RG2 -Location $Location2

$fesub2 = New-AzVirtualNetworkSubnetConfig -Name $FESubName2 -AddressPrefix $FESubPrefix2
$besub2 = New-AzVirtualNetworkSubnetConfig -Name $BESubName2 -AddressPrefix $BESubPrefix2
$gwsub2 = New-AzVirtualNetworkSubnetConfig -Name $GWSubName2 -AddressPrefix $GWSubPrefix2

New-AzVirtualNetwork -Name $VNetName2 -ResourceGroupName $RG2 -Location $Location2 -AddressPrefix $VNetPrefix21,$VNetPrefix22 -Subnet $fesub2,$besub2,$gwsub2

3. Cree la puerta de enlace de VPN para TestVNet2 con parámetros BGP

Solicite que se asigne una dirección IP pública a la puerta de enlace que creará para la red virtual y defina las configuraciones de IP y subred requeridas.

Declare las variables.

$gwpip2    = New-AzPublicIpAddress -Name $GWIPName2 -ResourceGroupName $RG2 -Location $Location2 -AllocationMethod Dynamic

$vnet2     = Get-AzVirtualNetwork -Name $VNetName2 -ResourceGroupName $RG2
$subnet2   = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet2
$gwipconf2 = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconfName2 -Subnet $subnet2 -PublicIpAddress $gwpip2

Cree la puerta de enlace de VPN con el número de AS. Debe reemplazar el valor predeterminado del ASN en las instancias de VPN Gateway. Los ASN para las redes virtuales conectadas deben ser diferentes para habilitar el enrutamiento de tránsito y de BGP.

New-AzVirtualNetworkGateway -Name $GWName2 -ResourceGroupName $RG2 -Location $Location2 -IpConfigurations $gwipconf2 -GatewayType Vpn -VpnType RouteBased -GatewaySku VpnGw1 -Asn $VNet2ASN

Paso 2: Conexión de las puertas de enlace de TestVNet1 y TestVNet2

En este ejemplo, ambas puertas de enlace están en la misma suscripción. Puede completar este paso en la misma sesión de PowerShell.

1. Obtenga ambas puertas de enlace

Vuelva a establecer las variables si es necesario:

$GWName1 = "VNet1GW"
$GWName2 = "VNet2GW"
$RG1 = "TestRG1"
$RG2 = "TestRG2"
$Connection12 = "VNet1toVNet2"
$Connection21 = "VNet2toVNet1"
$Location1 = "East US"
$Location2 = "East US"

Obtenga ambas puertas de enlace

$vnet1gw = Get-AzVirtualNetworkGateway -Name $GWName1 -ResourceGroupName $RG1
$vnet2gw = Get-AzVirtualNetworkGateway -Name $GWName2 -ResourceGroupName $RG2

2. Cree ambas conexiones

En este paso, creará la conexión de TestVNet1 a TestVNet2 y viceversa.

Conexión de TestVNet1 a TestVNet2.

New-AzVirtualNetworkGatewayConnection -Name $Connection12 -ResourceGroupName $RG1 -VirtualNetworkGateway1 $vnet1gw -VirtualNetworkGateway2 $vnet2gw -Location $Location1 -ConnectionType Vnet2Vnet -SharedKey 'AzureA1b2C3' -EnableBgp $True

Conexión de TestVNet2 a TestVNet1.

New-AzVirtualNetworkGatewayConnection -Name $Connection21 -ResourceGroupName $RG2 -VirtualNetworkGateway1 $vnet2gw -VirtualNetworkGateway2 $vnet1gw -Location $Location2 -ConnectionType Vnet2Vnet -SharedKey 'AzureA1b2C3' -EnableBgp $True

Importante

Asegúrese de habilitar BGP para AMBAS conexiones.

Después de completar estos pasos, se establece la conexión después de unos minutos. La sesión de emparejamiento BGP funcionará una vez completada la conexión de red virtual a red virtual.

Si ha completado las tres partes de este ejercicio, habrá establecido la siguiente topología de red:

Diagrama 4

Diagrama que muestra la red completa

Para dar contexto, en referencia al diagrama 4, si BGP fuera a deshabilitarse entre TestVNet2 y TestVNet1, TestVNet2 no aprendería las rutas de la red local, Site5, y, por tanto, no podría comunicarse con Site5. Una vez que habilite BGP, como se muestra en el diagrama 4, las tres redes podrán comunicarse a través de las conexiones de sitio a sitio de IPsec y de red virtual a red virtual.

Pasos siguientes

Para más información sobre BGP, consulte Acerca de BGP con Azure VPN Gateway.