VPN Gateway 用に BGP を構成する方法: PowerShell

この記事は、Azure PowerShell を使用して、クロスプレミスサイト間 (S2S) VPN 接続および VNet 間接続で BGP を有効にするのに役立ちます。 この種類の構成に慣れていない場合は、この記事の Azure portal バージョンを使用する方が簡単な場合があります。

BGP は、2 つ以上のネットワーク間でルーティングと到達可能性の情報を交換するためにインターネット上で広く使用されている標準のルーティング プロトコルです。 VPN ゲートウェイとオンプレミスの VPN デバイス (BGP ピアまたは BGP 近隣ノードと呼ばれる) が BGP を使用して "ルート" を交換します。これによって、関連するゲートウェイまたはルーターの可用性と、BGP のプレフィックスが到達できる可能性に関する情報が両方のゲートウェイに伝達されます。 また、BGP では、BGP ゲートウェイが特定の BGP ピアから学習したルートを他のすべての BGP ピアに伝達することで、複数のネットワークでトランジット ルーティングを行うこともできます。

BGP の利点の詳細と BGP を使用する場合の技術面の要件および考慮事項を理解するには、「BGP と Azure VPN Gateway について」をご覧ください。

作業の開始

この記事の各パートに従うと、ネットワーク接続で BGP を有効にするための基本的な構成要素を形成できます。 3 つの部分 (BGP をゲートウェイ、S2S 接続、VNet 間接続で構成する) をすべて完了すると、図 1 に示すようなトポロジが構築されます。 これらのセクションを組み合わせると、ニーズに合わせて、より複雑なマルチホップの通過ネットワークを構築することができます。

図 1

ネットワークのアーキテクチャと設定を示す図。

VPN ゲートウェイに対して BGP を有効にする

このセクションで説明する手順を実行してから、他の 2 つの構成セクションの手順を実行する必要があります。 次の構成手順では、図 2 に示すように、VPN ゲートウェイの BGP パラメーターを設定します。

図 2

仮想ネットワーク ゲートウェイの設定を示す図。

開始する前に

この演習の手順は、Azure Cloud Shell をブラウザーで使用して行うことができます。 代わりに PowerShell を直接コンピューターから使用したい場合は、Azure Resource Manager PowerShell コマンドレットをインストールします。 PowerShell コマンドレットのインストールの詳細については、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.サブスクリプションに接続して新しいリソース グループを作成する

Resource Manager コマンドレットを使用する場合は、必ず PowerShell モードに切り替えてください。 詳細については、「 リソース マネージャーでの Windows PowerShell の使用」を参照してください。

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 という名前の仮想ネットワークと 3 つのサブネットを作成します。サブネットの名前は 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 にはルート ベースの VPN ゲートウェイのほか、TestVNet1 の ASN (AS 番号) を設定するための追加のパラメーター -Asn も必要です。 必ず -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 間接続を確立することができます。

3. Azure BGP ピア IP アドレスを取得する

ゲートウェイが作成されたら、VPN ゲートウェイの BGP ピア IP アドレスを取得する必要があります。 オンプレミスの VPN デバイスの BGP ピアとして VPN ゲートウェイを構成するには、このアドレスが必要です。

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
}

IP アドレスとして表示される BgpPeeringAddress が見えない場合は、ゲートウェイがまだ構成されているところです。 ゲートウェイが完了したら、もう一度試しください。

BGP を使用してクロスプレミス接続を確立する

クロスプレミス接続を確立するには、オンプレミスの VPN デバイスを表す "ローカル ネットワーク ゲートウェイ" と、サイト間接続の作成に関するページで説明しているように、VPN ゲートウェイをローカル ネットワーク ゲートウェイにつなげる "接続" を作成する必要があります。 次のセクションには、図 3 に示すように、BGP 構成パラメーターを指定するために必要なプロパティが含まれています。

図 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

ローカル ネットワーク ゲートウェイを作成します。 また、ローカル ネットワーク ゲートウェイ用の 2 つの追加パラメーターであるAsn と BgpPeerAddress にも注意してください。

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

手順 2: VNet ゲートウェイとローカル ネットワーク ゲートウェイを接続する

1.2 つのゲートウェイを取得する

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

2.TestVNet1 から Site5 への接続を作成する

この手順では、TestVNet1 から Site5 への接続を作成します。 この接続の BGP を有効にするために、"-EnableBGP $True" を指定する必要があります。 既に説明したように、同じ 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 間接続を確立する

このセクションでは、図 4 に示すように、BGP を使用して VNet 間接続を追加します。

図 4

完全なネットワーク構成を示す図。

以下の指示は、前の手順からの続きになります。 BGP で TestVNet1 と VPN ゲートウェイを作成して構成するには、先に「VPN ゲートウェイに対して BGP を有効にする」セクションの手順を完了する必要があります。

手順 1: TestVNet2 と VPN ゲートウェイを作成する

新しい仮想ネットワークである TestVNet2 の IP アドレス空間がどの VNet 範囲とも重ならないようにすることが重要です。

この例では、仮想ネットワークは同じサブスクリプションに属しています。 異なるサブスクリプション間に VNet 間の接続を設定できます。 詳細については、「VNet 間の接続の構成」を参照してください。 接続の作成時に BGP を有効にするには、必ず "-EnableBgp $True" を追加してください。

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 ゲートウェイを作成する

VNet 用に作成するゲートウェイに割り当てるパブリック IP アドレスを要求し、必要なサブネットと 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 をオーバーライドする必要があります。 BGP とトランジット ルーティングを有効にするために、接続された VNet の ASN はそれぞれ異なっている必要があります。

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 を有効にしてください。

これらの手順を完了すると、数分後に接続が確立します。 BGP ピアリング セッションは、VNet 間の接続が完了すると有効になります。

この演習の 3 つのパートをすべて完了すると、次のようなネットワーク トポロジが確立されます。

図 4

完全なネットワークを示す図

コンテキストについては、図 4 からわかるように、TestVNet2 と TestVNet1 の間の BGP が無効になっていると、TestVNet2 で、オンプレミス ネットワーク Site5 のルートが学習されないため、Site 5 と通信できません。 BGP を有効にすると、図 4 に示すように、3 つのネットワークすべてがサイト間 IPsec 接続と VNet 間接続を介して通信できるようになります。

次のステップ

BGP についての詳細は、「BGP および VPN Gateway について」を参照してください。