如何為 VPN 閘道設定 BGP:PowerShell

本文可協助您使用 Azure PowerShell,在跨單位站對站 (S2S) VPN 連線和 VNet 對 VNet 連線上啟用 BGP。 如果您不熟悉這種類型的設定,您可能會發現使用本文Azure 入口網站版本更容易。

BGP 是常用於網際網路的標準路由通訊協定,可交換兩個或多個網路之間的路由和可執行性資訊。 BGP 可讓 VPN 閘道和您的內部部署 VPN 裝置稱為 BGP 對等或鄰近使用者交換「路由」,以告知這兩個閘道的可用性和連線能力,讓這些前置詞通過相關的閘道或路由器。 BGP 也可以傳播從一個 BGP 對等互連到所有其他 BGP 對等所識別的 BGP 閘道,來啟用多個網路之間的傳輸路由。

如需 BGP 優點的詳細資訊,以及瞭解使用 BGP 的技術需求和考慮,請參閱關於 BGP 和 Azure VPN 閘道

開始使用

本文的每個部分均構成基本建置組塊,可供在您的網路連線中啟用 BGP。 如果您完成這三個部分 (在閘道、S2S 連線和 VNet 對 VNet 連線上設定 BGP,) 您建置拓撲,如圖 1 所示。 您可以結合這些小節的內容,以建置出更加複雜且能符合您需求的多重躍點傳輸網路。

圖表 1

顯示網路架構和設定的圖表。

啟用 VPN 閘道的 BGP

在您可以執行其他兩個設定小節中的任何步驟之前,必須先完成本節的內容。 下列設定步驟會設定 VPN 閘道的 BGP 參數,如圖 2 所示。

圖表 2

顯示虛擬網路閘道設定的圖表。

開始之前

您可以在瀏覽器中使用 Azure Cloud Shell來執行此練習的步驟。 如果您想要直接從電腦使用 PowerShell,請安裝 Azure Resource Manager PowerShell Cmdlet。 如需如何安裝 PowerShell Cmdlet 的詳細資訊,請參閱如何安裝和設定 Azure PowerShell

建立及設定 VNet1

1. 宣告變數

在此練習中,我們會從宣告變數開始。 下列範例會使用此練習中的值來宣告變數。 如果您執行的步驟來熟悉這種類型的設定,您可以使用範例變數 (,但訂用帳戶名稱除外) 。 修改任何變數,然後將它複製並貼到您的 PowerShell 主控台。 請務必在設定生產環境時,使用您自己的值來取代該值。

$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.連接至您的訂用帳戶並建立新的資源群組

請確定您切換為 PowerShell 模式,以使用 Resource Manager Cmdlet。 如需詳細資訊,請參閱 搭配使用 Windows PowerShell 與 Resource Manager

如果您使用 Azure Cloud Shell,則會自動連線到您的帳戶。 如果您從電腦使用 PowerShell,請開啟 PowerShell 主控台並聯機到您的帳戶。 使用下列範例來協助您連接:

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

接下來,建立新的資源群組。

New-AzResourceGroup -Name $RG1 -Location $Location1

3. 建立 TestVNet1

下列範例會建立一個名為 TestVNet1 的虛擬網路和三個子網路:一個名為 GatewaySubnet、一個名為 FrontEnd,另一個名為 Backend。 替代值時,務必一律將您的閘道子網路特定命名為 GatewaySubnet。 如果您將其命名為其他名稱,閘道建立會失敗。

$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

建立已啟用 BGP 的 VPN 閘道

1. 建立 IP 和子網路設定

要求要配置給您將為 VNet 建立的閘道的公用 IP 位址。 您也會定義必要的子網路和 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. 透過 AS 號碼建立 VPN 閘道

建立 TestVNet1 的虛擬網路閘道。 BGP 需要 Route-Based VPN 閘道,另外還需要一個參數 -Asn 來設定 TestVNet1 的 ASN (AS Number) 。 請務必指定 -Asn 參數。 如果您未設定 -Asn 參數,ASN 65515 (預設無法用於此設定) 。 建立閘道可能需要花費一段時間 (45 分鐘或更久)。

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

建立閘道後,您可以使用此閘道來建立跨單位連線或與 BGP 的 VNet 對 VNet 連線。

3.取得 Azure BGP 對等 IP 位址

建立閘道之後,您必須取得 VPN 閘道上的 BGP 對等 IP 位址。 需要此位址,才能將 VPN 閘道設定為內部部署 VPN 裝置的 BGP 對等互連。

如果您使用 CloudShell,則在建立閘道時會話逾時,您可能需要重新建立變數。

如有必要,請重新建立變數:

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

執行下列命令,並記下輸出中的 「BgpPeeringAddress」 值。

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

範例輸出︰

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

如果您沒有看到 BgpPeeringAddress 顯示為 IP 位址,則您的閘道仍在設定中。 閘道完成時再試一次。

建立與 BGP 的跨單位連線

若要建立跨單位連線,您需要建立區域網路閘道來代表您的內部部署 VPN 裝置,以及建立一個連線來連線 VPN 閘道與區域網路閘道,如建立站對站連線中所述。 下列各節包含指定 BGP 組態參數所需的屬性,如圖 3 所示。

圖表 3

顯示 IPsec 設定的圖表。

在繼續之前,請確定您已在上一節中為 VPN 閘道啟用 BGP。

步驟 1:建立及設定區域網路閘道

1. 宣告變數

本練習將繼續建置圖中所示的組態。 請務必使用您想用於設定的值來取代該值。 例如,您需要 VPN 裝置的 IP 位址。 在此練習中,如果您目前不打算連線到 VPN 裝置,可以替代有效的 IP 位址。 您稍後可以取代 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"

關於區域網路閘道參數,有幾件事要注意︰

  • 區域網路閘道可以位於與 VPN 閘道相同或不同的位置和資源群組中。 此範例會顯示它們位於不同位置的不同資源群組中。
  • 您需要針對區域網路閘道宣告的前置詞是 VPN 裝置上 BGP 對等 IP 位址的主機位址。 在此情況下,它是 「10.51.255.254/32」 的 /32 前置詞。
  • 提醒您,您必須在內部部署網路與 Azure VNet 之間使用不同的 BGP ASN。 如果它們相同,則如果您的內部部署 VPN 裝置已使用 ASN 與其他 BGP 芳鄰對等互連,則需要變更 VNet ASN。

2. 建立 Site5 的區域網路閘道

建立局域網路閘道之前,請先建立資源群組。

New-AzResourceGroup -Name $RG5 -Location $Location5

建立區域網路閘道。 請注意,區域網路閘道的兩個額外參數︰Asn 與 BgpPeerAddress。

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

步驟 2:連線 VNet 閘道與區域網路閘道

1. 取得兩個閘道

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

2. 建立 TestVNet1 到 Site5 的連線

在此步驟中,您將建立從 TestVNet1 至 Site5 的連線。 您必須指定 "-EnableBGP $True" 才能為此連線啟用 BGP。 如先前所述,可以同時擁有相同 VPN 閘道的 BGP 和非 BGP 連線。 除非在連線屬性中啟用 BGP,否則即使兩個閘道上都已設定 BGP 參數,Azure 也不會為此連線啟用 BGP。

如有必要,請重新宣告您的變數:

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

然後,執行下列命令:

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

內部部署裝置組態

下列範例所列出的參數,是您要針對此練習,在內部部署 VPN 裝置的 BGP 組態區段中加以輸入︰

- 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

幾分鐘後就會建立連線,而一旦建立 IPsec 連線後,BGP 對等工作階段就會啟動。

建立與 BGP 的 VNet 對 VNet 連線

本節會新增與 BGP 的 VNet 對 VNet 連線,如圖 4 所示。

圖表 4

顯示完整網路設定的圖表。

以下指示延續自從上面所列的先前步驟。 您必須先完成 為 VPN 閘道啟用 BGP 一節中的步驟,以使用 BGP 建立及設定 TestVNet1 和 VPN 閘道。

步驟 1:建立 TestVNet2 和 VPN 閘道

請務必確定新虛擬網路 TestVNet2 的 IP 位址空間不會與任何 VNet 範圍重迭。

在此範例中,虛擬網路屬於相同的訂用帳戶。 您可以設定不同訂用帳戶之間的 VNet 對 VNet 連線。 如需詳細資訊,請參閱設定 VNet 對 VNet 連線。 請務必在建立連線時新增 "-EnableBgp $True",才能啟用 BGP。

1. 宣告變數

請務必使用您想用於設定的值來取代該值。

$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. 在新的資源群組中建立 TestVNet2

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. 使用 BGP 參數建立 TestVNet2 的 VPN 閘道

要求將公用 IP 位址配置給您將為 VNet 建立的閘道,並定義必要的子網和 IP 組態。

宣告變數。

$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

透過 AS 號碼建立 VPN 閘道。 您必須覆寫 VPN 閘道上的預設 ASN。 已連接 VNet 的 ASN 必須不同,才能啟用 BGP 與傳輸路由。

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

步驟 2:連線 TestVNet1 與 TestVNet2 閘道

在此範例中,兩個閘道位於相同的訂用帳戶。 您可以在相同的 PowerShell 工作階段中完成此步驟。

1. 取得兩個閘道

如有必要,請重新建立變數:

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

取得這兩個閘道。

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

2. 建立兩個連線

在此步驟中,您要建立從 TestVNet1 到 TestVNet2 的連線,以及從 TestVNet2 到 TestVNet1 的連線。

TestVNet1 至 TestVNet2 連線。

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

TestVNet2 至 TestVNet1 連線。

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

重要

請務必對這兩個連線啟用 BGP。

完成這些步驟之後,會在幾分鐘後建立連線。 一旦 VNet 對 VNet 連線完成後,就會啟動 BGP 對等互連工作階段。

如果您已完成此練習的所有三個部分,您已建立下列網路拓撲:

圖表 4

顯示完整網路的圖表

針對內容,參照 圖表 4,如果 TestVNet2 與 TestVNet1 之間停用 BGP,TestVNet2 就不會瞭解內部部署網路的路由、Site5,因此無法與月臺 5 通訊。 啟用 BGP 後,如圖 4 所示,這三個網路都能夠透過 S2S IPsec 和 VNet 對 VNet 連線進行通訊。

後續步驟

如需 BGP 的詳細資訊,請參閱關於 BGP 和VPN 閘道