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

この記事は、Azure CLI を使用して、クロスプレミスサイト間 (S2S) VPN 接続および VNet 間接続で BGP を有効にするのに役立ちます。 この構成は、Azure portal または PowerShell の手順を使用して作成できます。

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

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

この記事の各パートに従うと、ネットワーク接続で BGP を有効にするための基本的な構成要素を形成できます。 3 つの部分 (BGP をゲートウェイ、S2S 接続、VNet 間接続で構成する) をすべて完了すると、図 1 に示すようなトポロジが構築されます。

図 1

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

これらのセクションを組み合わせると、ニーズに合わせて、より複雑なマルチホップの通過ネットワークを構築することができます。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

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

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

図 2

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

TestVNet1 の作成と構成

1. リソース グループを作成する

次の例では、TestRG1 という名前のリソース グループを "eastus" の場所に作成します。 仮想ネットワークを作成するリージョンにリソース グループが既にある場合は、代わりにそのリソース グループを使用できます。

az group create --name TestRG1 --location eastus

2. TestVNet1 を作成する

以下の例では、TestVNet1 という名前の仮想ネットワークと 3 つのサブネット(GatewaySubnet、FrontEnd、BackEnd) を作成します。 値を代入するときは、ゲートウェイ サブネットの名前を必ず GatewaySubnet にすることが重要です。 別の名前にすると、ゲートウェイの作成は失敗します。

1 番目のコマンドは、フロントエンド アドレス空間と、FrontEnd サブネットを作成します。 2 番目のコマンドでは、BackEnd サブネット用に追加のアドレス空間を作成します。 3 番目と 4 番目のコマンドは、BackEnd サブネットと GatewaySubnet を作成します。

az network vnet create -n TestVNet1 -g TestRG1 --address-prefix 10.11.0.0/16 --subnet-name FrontEnd --subnet-prefix 10.11.0.0/24
az network vnet update -n TestVNet1 --address-prefixes 10.11.0.0/16 10.12.0.0/16 -g TestRG1
 
az network vnet subnet create --vnet-name TestVNet1 -n BackEnd -g TestRG1 --address-prefix 10.12.0.0/24
 
az network vnet subnet create --vnet-name TestVNet1 -n GatewaySubnet -g TestRG1 --address-prefix 10.12.255.0/27

BGP パラメーターを指定して TestVNet1 の VPN ゲートウェイを作成する

1. パブリック IP アドレスの作成

パブリック IP アドレスを要求します。 仮想ネットワーク用に作成した VPN ゲートウェイにパブリック IP アドレスが割り当てられます。

az network public-ip create -n GWPubIP -g TestRG1 --allocation-method Dynamic 

2.AS 番号で VPN ゲートウェイを作成する

TestVNet1 用の仮想ネットワーク ゲートウェイを作成します。 BGP ではルートベースの VPN ゲートウェイが必要です。 TestVNet1 の自律システム番号 (ASN) を設定するには、追加のパラメーター -Asn も必要です。 選択したゲートウェイ SKU によっては、ゲートウェイの作成に 45 分以上かかる場合も少なくありません。

--no-wait パラメーターを使用してこのコマンドを実行した場合は、フィードバックや出力が表示されなくなります。 --no-wait パラメーターは、ゲートウェイをバックグラウンドで作成するためのものです。 これは、VPN ゲートウェイがすぐに作成されるという意味ではありません。

az network vnet-gateway create -n VNet1GW -l eastus --public-ip-address GWPubIP -g TestRG1 --vnet TestVNet1 --gateway-type Vpn --sku HighPerformance --vpn-type RouteBased --asn 65010 --no-wait

ゲートウェイが作成されたら、このゲートウェイを使用して、BGP でクロスプレミス接続または VNet 間接続を確立することができます。

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

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

次のコマンドを実行します。

az network vnet-gateway list -g TestRG1

出力の上部にある bgpSettings セクションをメモします。 これを使用します

"bgpSettings": { 
      "asn": 65010, 
      "bgpPeeringAddress": "10.12.255.30", 
      "peerWeight": 0 
    }

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

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

クロスプレミス接続を確立するには、オンプレミスの VPN デバイスを表すローカル ネットワーク ゲートウェイを作成する必要があります。 その後、Azure VPN ゲートウェイをローカル ネットワーク ゲートウェイに接続します。 次の手順は、他の接続の作成方法と似ていますが、図 3 で示すように、BGP 構成パラメーターを指定するのに必要なプロパティが追加されています。

図 3

IPsec 構成を示す図。

ローカル ネットワーク ゲートウェイを作成して構成する

この演習では、引き続き、図に示されている構成を作成します。 値は実際の構成で使用する値に置換します。 ローカル ネットワーク ゲートウェイを使用する場合は、次のことにご注意ください。

  • ローカル ネットワーク ゲートウェイは、VPN ゲートウェイと同じ場所およびリソース グループに配置することも、別の場所およびリソース グループに配置することもできます。 この例では、異なる場所の異なるリソース グループのゲートウェイを示します。
  • ローカル ネットワーク ゲートウェイ用に宣言する必要がある最小限のプレフィックスは、VPN デバイスの BGP ピア IP アドレスのホスト アドレスです。 この場合は、10.51.255.254/32 の /32 プレフィックスです。
  • 既に説明したように、オンプレミスのネットワークと Azure 仮想ネットワークでは、異なる BGP ASN を使用する必要があります。 これらが同じ場合、オンプレミス VPN デバイスが既に ASN を使用して他の BGP 近隣ノードとピアリングしているのであれば、VNet ASN を変更する必要があります。

先に進む前に、この演習の「VPN ゲートウェイに対して BGP を有効にする」セクションが終了していることをご確認ください。 この例では、新しいリソース グループを作成します。 また、ローカル ネットワーク ゲートウェイ用の 2 つの追加パラメーターである AsnBgpPeerAddress にもご注意ください。

az group create -n TestRG5 -l westus 
 
az network local-gateway create --gateway-ip-address 23.99.221.164 -n Site5 -g TestRG5 --local-address-prefixes 10.51.255.254/32 --asn 65050 --bgp-peering-address 10.51.255.254

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

この手順では、TestVNet1 から Site5 への接続を作成します。 この接続に対して BGP を有効にするには、--enable-bgp パラメーターを指定する必要があります。

この例では、仮想ネットワーク ゲートウェイとローカル ネットワーク ゲートウェイがそれぞれ異なるリソース グループにあります。 ゲートウェイがそれぞれ異なるリソース グループに属している場合は、仮想ネットワーク間の接続を設定するために、2 つのゲートウェイのリソース ID 全体を指定する必要があります。

1. VNet1GW のリソース ID を取得する

次のコマンドの出力を使用して、VNet1GW のリソース ID を取得します。

az network vnet-gateway show -n VNet1GW -g TestRG1

出力結果から "id": 行を探し出します。 次のセクションで接続を作成する際に引用符で囲まれた値が必要になります。

出力例:

{ 
  "activeActive": false, 
  "bgpSettings": { 
    "asn": 65010, 
    "bgpPeeringAddress": "10.12.255.30", 
    "peerWeight": 0 
  }, 
  "enableBgp": true, 
  "etag": "W/\"<your etag number>\"", 
  "gatewayDefaultSite": null, 
  "gatewayType": "Vpn", 
  "id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW",

"id": の後の値は、メモ帳などのテキスト エディターにコピーしてください。そうすることで、接続の作成時に簡単に貼り付けることができます。

"id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW"

2. Site5 のリソース ID を取得する

次のコマンドの出力を使用して、Site5 のリソース ID を取得します。

az network local-gateway show -n Site5 -g TestRG5

3. TestVNet1-to-Site5 接続を作成する

この手順では、TestVNet1 から Site5 への接続を作成します。 既に説明したように、同じ Azure VPN ゲートウェイで BGP 接続と BGP 以外の接続の両方を混在させることが可能です。 接続プロパティで BGP を有効にしない限り、両方のゲートウェイで BGP パラメーターが既に構成されていても、Azure はこの接続の BGP を有効にしません。 サブスクリプション ID を自分の ID に置換します。

az network vpn-connection create -n VNet1ToSite5 -g TestRG1 --vnet-gateway1 /subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW --enable-bgp -l eastus --shared-key "abc123" --local-gateway2 /subscriptions/<subscription ID>/resourceGroups/TestRG5/providers/Microsoft.Network/localNetworkGateways/Site5

オンプレミスのデバイス構成

次の例では、この演習用のオンプレミス 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 を有効にする」セクションが完了している必要があります。

TestVNet2 と VPN ゲートウェイを作成する

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

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

1. 新しいリソース グループを作成する

az group create -n TestRG2 -l eastus

2.新しいリソース グループに TestVNet2 を作成する

1 番目のコマンドは、フロントエンド アドレス空間と、FrontEnd サブネットを作成します。 2 番目のコマンドでは、BackEnd サブネット用に追加のアドレス空間を作成します。 3 番目と 4 番目のコマンドは、BackEnd サブネットと GatewaySubnet を作成します。

az network vnet create -n TestVNet2 -g TestRG2 --address-prefix 10.21.0.0/16 --subnet-name FrontEnd --subnet-prefix 10.21.0.0/24
az network vnet update -n TestVNet2 --address-prefixes 10.21.0.0/16 10.22.0.0/16 -g TestRG2
 
az network vnet subnet create --vnet-name TestVNet2 -n BackEnd -g TestRG2 --address-prefix 10.22.0.0/24
 
az network vnet subnet create --vnet-name TestVNet2 -n GatewaySubnet -g TestRG2 --address-prefix 10.22.255.0/27

3. パブリック IP アドレスの作成

パブリック IP アドレスを要求します。 仮想ネットワーク用に作成した VPN ゲートウェイにパブリック IP アドレスが割り当てられます。

az network public-ip create -n GWPubIP2 -g TestRG2 --allocation-method Dynamic

4.AS 番号で VPN ゲートウェイを作成する

TestVNet2 用の仮想ネットワーク ゲートウェイを作成します。 Azure VPN ゲートウェイでは既定の ASN をオーバーライドする必要があります。 BGP とトランジット ルーティングを有効にするために、接続された仮想ネットワークの ASN はそれぞれ異なっている必要があります。

az network vnet-gateway create -n VNet2GW -l eastus --public-ip-address GWPubIP2 -g TestRG2 --vnet TestVNet2 --gateway-type Vpn --sku Standard --vpn-type RouteBased --asn 65020 --no-wait

TestVNet1 と TestVNet2 のゲートウェイを接続する

この手順では、TestVNet1 から Site5 への接続を作成します。 この接続に対して BGP を有効にするには、--enable-bgp パラメーターを指定する必要があります。

次の例では、仮想ネットワーク ゲートウェイとローカル ネットワーク ゲートウェイがそれぞれ異なるリソース グループにあります。 ゲートウェイがそれぞれ異なるリソース グループに属している場合は、仮想ネットワーク間の接続を設定するために、2 つのゲートウェイのリソース ID 全体を指定する必要があります。

1. VNet1GW のリソース ID を取得する

次のコマンドの出力から、VNet1GW のリソース ID を取得します。

az network vnet-gateway show -n VNet1GW -g TestRG1

ゲートウェイ リソースの値の例:

"/subscriptions/<subscripion ID value>/resourceGroups/TestRG2/providers/Microsoft.Network/virtualNetworkGateways/VNet2GW"

2. VNet2GW のリソース ID を取得する

次のコマンドの出力から、VNet2GW のリソース ID を取得します。

az network vnet-gateway show -n VNet2GW -g TestRG2

3. 接続を作成する

TestVNet1 から TestVNet2 への接続と、TestVNet2 から TestVNet1 への接続を作成します。 これらのコマンドでは、リソース ID を使用します。 この演習では、ほとんどのリソース ID は既に例に示されています。 サブスクリプション ID の値は、必ずご自身のものに置き換えてください。 サブスクリプション ID は、同じコマンド内の複数の場所で使用されます。 このコマンドを運用環境で使用するときは、参照するオブジェクトごとにリソース ID 全体を置き換えることになります。

az network vpn-connection create -n VNet1ToVNet2 -g TestRG1 --vnet-gateway1 /subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW --enable-bgp -l eastus --shared-key "abc123" --vnet-gateway2 /subscriptions/<subscription ID>/resourceGroups/TestRG2/providers/Microsoft.Network/virtualNetworkGateways/VNet2GW
az network vpn-connection create -n VNet2ToVNet1 -g TestRG2 --vnet-gateway1 /subscriptions/<subscription ID>/resourceGroups/TestRG2/providers/Microsoft.Network/virtualNetworkGateways/VNet2GW --enable-bgp -l eastus --shared-key "abc123" --vnet-gateway2 /subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW

重要

"両方" の接続で BGP を有効にしてください。

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

次のステップ

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