Come configurare BGP per il gateway VPN: PowerShell

Questo articolo illustra come abilitare BGP in connessioni VPN da sito a sito (S2S) cross-premise e connessioni da rete virtuale a rete virtuale tramite Azure PowerShell. Se non si ha familiarità con questo tipo di configurazione, potrebbe risultare più semplice usare la versione del portale di Azure di questo articolo.

BGP è il protocollo di routing standard comunemente usato in Internet per lo scambio di informazioni di routing e raggiungibilità tra due o più reti. BGP consente ai gateway VPN e ai dispositivi VPN locali, detti peer BGP o router adiacenti, lo scambio di "route" che indicano a entrambi i gateway la disponibilità e la raggiungibilità di tali prefissi per il passaggio attraverso i gateway o i router coinvolti. BGP può anche abilitare il routing di transito tra più reti propagando a tutti gli altri peer BGP le route che un gateway BGP apprende da un peer BGP.

Per altre informazioni sui vantaggi di BGP, sui requisiti tecnici e sulle considerazioni relative all'uso di BGP, vedere Informazioni su BGP e il gateway VPN di Azure.

Introduzione

Ogni parte di questo articolo assistenza nella creazione di un blocco predefinito di base per abilitare BGP nella connettività di rete. Se si completano tutte e tre le parti (configurare BGP nel gateway, la connessione da sito a sito e la connessione da rete virtuale a rete virtuale) si compila la topologia, come illustrato nel Diagramma 1. È possibile combinare le sezioni per creare una rete di transito a più hop più complessa per soddisfare le proprie esigenze.

Diagramma 1

Diagramma che mostra l'architettura e le impostazioni di rete.

Abilitare BGP per il gateway VPN

Questa sezione è obbligatoria prima dell'esecuzione dei passaggi illustrati nelle altre due sezioni di configurazione. La procedura di configurazione configura i parametri BGP nel gateway VPN come illustrato nel diagramma seguente.

Diagramma 2

Diagramma che mostra le impostazioni per il gateway di rete virtuale.

Operazioni preliminari

È possibile eseguire i passaggi di questo esercizio usando Azure Cloud Shell nel proprio browser. Se invece si vuole usare PowerShell direttamente dal computer, installare i cmdlet di PowerShell di Azure Resource Manager. Per altre informazioni sull'installazione dei cmdlet di PowerShell, vedere Come installare e configurare Azure PowerShell.

Creare e configurare VNet1

1. Dichiarare le variabili

Per questo esercizio, si inizierà dichiarando le variabili. L'esempio seguente dichiara le variabili usando i valori per questo esercizio. È possibile usare le variabili di esempio (ad eccezione del nome della sottoscrizione) se si esegue la procedura per acquisire familiarità con questo tipo di configurazione. Modificare le variabili e quindi copiarle e incollarle nella console di PowerShell. Assicurarsi di sostituire i valori con quelli reali durante la configurazione per la produzione.

$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. Connettersi alla sottoscrizione e creare un nuovo gruppo di risorse

Per usare i cmdlet di Resource Manager assicurarsi di passare alla modalità PowerShell. Per altre informazioni, vedere Uso di Windows PowerShell con Gestione risorse.

Se si usa Azure Cloud Shell, ci si connette automaticamente all'account. Se si usa PowerShell dal computer, aprire la console di PowerShell e connettersi all'account. Per connettersi, usare l'esempio seguente:

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

Creare quindi un nuovo gruppo di risorse.

New-AzResourceGroup -Name $RG1 -Location $Location1

3. Creare TestVNet1

L'esempio seguente mostra come creare una rete virtuale denominata TestVNet1 e tre subnet, denominate rispettivamente GatewaySubnet, FrontEnd e Backend. Quando si sostituiscono i valori, è importante che la subnet gateway venga denominata sempre esattamente GatewaySubnet. Se si assegnano altri nomi, la creazione del gateway ha esito negativo.

$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

Creare il gateway VPN con BGP abilitato

1. Creare le configurazioni IP e subnet

Richiedere un indirizzo IP pubblico da allocare per il gateway che verrà creato per la rete virtuale. Verranno create anche le configurazioni necessarie per subnet e IP.

$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. Creare il gateway VPN con il numero AS

Creare il gateway di rete virtuale per TestVNet1. BGP richiede un gateway VPN basato su route e anche un parametro -Asn aggiuntivo per impostare l'ASN (AS Number) per TestVNet1. Assicurarsi di specificare il parametro -Asn. Se non si imposta il parametro -Asn, per impostazione predefinita viene assegnato ASN 65515 (che non funziona per questa configurazione). La creazione di un gateway può richiedere anche oltre 45 minuti.

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

Una volta creato il gateway, è possibile usarlo per stabilire una connessione cross-premise o una connessione da rete virtuale a rete virtuale con BGP.

3. Ottenere l'indirizzo IP del peer BGP di Azure

Dopo la creazione del gateway, è necessario ottenere l'indirizzo IP del peer BGP per il gateway VPN. Questo indirizzo è necessario per configurare il gateway VPN come peer BGP per i dispositivi VPN locali.

Se si usa CloudShell, potrebbe essere necessario ristabilire le variabili in caso di timeout della sessione durante la creazione del gateway.

Ristabilire le variabili, se necessario:

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

Eseguire il comando seguente e prendere nota del valore "BgpPeeringAddress" nell'output.

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

Output di esempio:

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

Se BgpPeeringAddress non viene visualizzato come indirizzo IP, il gateway è ancora in fase di configurazione. Riprovare al termine del gateway.

Stabilire una connessione cross-premise con BGP

Per stabilire una connessione cross-premise, è necessario creare un gateway di rete localee per rappresentare il dispositivo VPN locale e una connessione per connettere il gateway VPN al gateway di rete locale, come spiegato in Creare una connessione da sito a sito. Le sezioni seguenti contengono le proprietà necessarie per specificare i parametri di configurazione BGP, illustrati nel diagramma 3.

Diagramma 3

Diagramma che mostra la configurazione IPsec.

Prima di procedere, assicurarsi di aver abilitato BGP per il gateway VPN nella sezione precedente.

Passaggio 1: Creare e configurare il gateway di rete locale

1. Dichiarare le variabili

Questo esercizio continua a creare la configurazione illustrata nel diagramma. Sostituire i valori con quelli desiderati per la propria configurazione. Ad esempio, è necessario l'indirizzo IP per il dispositivo VPN. Per questo esercizio, è possibile sostituire un indirizzo IP valido se non si prevede di connettersi al dispositivo VPN al momento. In seguito è possibile sostituire l'indirizzo 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"

È necessario tenere presenti due aspetti relativi ai parametri del gateway di rete:

  • Il gateway di rete locale può essere nella stessa località e nello stesso gruppo di risorse del gateway VPN oppure in altri. In questo esempio sono in gruppi di risorse diversi in località diverse.
  • Il prefisso che è necessario dichiarare per il gateway di rete locale è l'indirizzo host dell'indirizzo IP del peer BGP nel dispositivo VPN. In questo caso, è un prefisso /32 di "10.51.255.254/32".
  • È anche possibile lasciare vuoto il prefisso se si usa BGP per connettersi alla rete. Il gateway VPN di Azure aggiunge internamente una route dell'indirizzo IP del peer BGP al tunnel IPsec corrispondente.
  • Si ricordi che è necessario usare ASN BGP diversi nelle reti locali e nella rete virtuale di Azure. Se sono gli stessi, è necessario modificare l'ASN della rete virtuale se il dispositivo VPN locale usa già l'ASN per il peering con altri vicini BGP.

2. Creare il gateway di rete locale per Site5

Creare il gruppo di risorse prima di creare il gateway di rete locale.

New-AzResourceGroup -Name $RG5 -Location $Location5

Creare il gateway di rete locale. Si notino i due parametri aggiuntivi per il gateway di rete locale: Asn e BgpPeerAddress.

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

Passaggio 2: Connettere il gateway di rete virtuale e il gateway di rete locale

1. Ottenere i due gateway

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

2. Creare la connessione da TestVNet1 a Site5

In questo passaggio viene creata la connessione da TestVNet1 a Site5. È necessario specificare "-EnableBgp $True" per abilitare BGP per questa connessione. Come illustrato in precedenza, è possibile avere connessioni BGP e non BGP per lo stesso gateway VPN. A meno che BGP non venga abilitato nella proprietà della connessione, Azure non abiliterà BGP per questa connessione nemmeno se i parametri BGP sono già configurati in entrambi i gateway.

Ripetere le variabili, se necessario:

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

Poi eseguire quindi il comando seguente.

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

Configurazione di un dispositivo locale

L'esempio seguente elenca i parametri da immettere nella sezione della configurazione BGP nel dispositivo VPN locale per questo esercizio:

- 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 connessione viene stabilita in pochi minuti e la sessione di peering BGP viene avviata non appena stabilita la connessione IPsec.

Stabilire una connessione da rete virtuale a rete virtuale con BGP

Questa sezione aggiunge una connessione da rete virtuale a rete virtuale con BGP, come illustrato nel Diagramma 4.

Diagramma 4

Diagramma che mostra la configurazione di rete completa.

Le istruzioni seguenti sono la prosecuzione dei passaggi precedenti. È prima necessario completare i passaggi nella sezione Abilitare BGP per il gateway VPN per creare e configurare TestVNet1 e il gateway VPN con BGP.

Passaggio 1: Creare TestVNet2 e il gateway VPN

È importante verificare che lo spazio di indirizzi IP della nuova rete virtuale, TestVNet2, non si sovrapponga ad altri di intervalli di rete virtuale.

In questo esempio le reti virtuali appartengono alla stessa sottoscrizione. È possibile configurare connessioni da rete virtuale a rete virtuale tra sottoscrizioni diverse. Per altre informazioni, vedere Configurare una connessione tra reti virtuali. Assicurarsi di aggiungere "-EnableBgp $True" quando si creano le connessioni per abilitare BGP.

1. Dichiarare le variabili

Sostituire i valori con quelli desiderati per la propria configurazione.

$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. Creare TestVNet2 nel nuovo gruppo di risorse

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. Creare il gateway VPN per TestVNet2 con i parametri BGP

Richiedere un indirizzo IP pubblico da allocare al gateway che verrà creato per la rete virtuale e definire le configurazioni necessarie per subnet e IP.

Dichiarare le variabili.

$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

Creare il gateway VPN con il numero AS. È necessario eseguire l'override dell'ASN predefinito nei gateway VPN. Gli ASN per le reti virtuali connesse devono essere diversi per abilitare BGP e il routing di transito.

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

Passaggio 2: Connettere i gateway TestVNet1 e TestVNet2

In questo esempio entrambi i gateway sono nella stessa sottoscrizione. È possibile completare questo passaggio nella stessa sessione di PowerShell.

1. Ottenere entrambi i gateway

Ristabilire le variabili, se necessario:

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

Ottenere entrambi i gateway.

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

2. Creare entrambe le connessioni

In questo passaggio vengono create le connessioni rispettivamente da TestVNet1 a TestVNet2 e da TestVNet2 a TestVNet1.

Connessione da TestVNet1 a TestVNet2.

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

Connessione da TestVNet2 a TestVNet1.

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

Importante

Assicurarsi di abilitare BGP per ENTRAMBE le connessioni.

Dopo il completamento di questi passaggi, la connessione viene stabilita entro pochi minuti. Non appena completata la connessione da rete virtuale a rete virtuale, la sessione di peering BGP è attiva.

Se sono state completate tutte e tre le parti di questo esercizio, è stata stabilita la topologia di rete seguente:

Diagramma 4

Diagramma che mostra la rete completa

Per il contesto, facendo riferimento al Diagramma 4, se BGP dovesse essere disabilitato tra TestVNet2 e TestVNet1, TestVNet2 non imparerebbe le route per la rete locale, Site5 e quindi non poteva comunicare con il sito 5. Dopo aver abilitato BGP, come illustrato nel Diagramma 4, tutte e tre le reti saranno in grado di comunicare tramite le connessioni IPsec S2S e da rete virtuale a rete virtuale.

Passaggi successivi

Per altre informazioni su BGP, vedere Informazioni su BGP e gateway VPN.