今回はAzure Virtual WANとオンプレデバイスをVPN接続する手順について紹介します。本来であれば推奨パートナーデバイスを用いて自動デプロイなどを試してみたいところですが、ない袖は振れぬということでひとまず手近にあったSRX300で接続をしてみます。VPN接続したうえでAzureとBGPで経路情報の交換を行ってみたいと思います。



1.環境構成

今回構築する検証環境は以下の図の通りです。Azure Virtual WANでハブ&スポーク型ネットワークを実現します。

オンプレ拠点と東日本リージョンにデプロイしたVirtual WANの仮想ハブを接続し、同一リージョン内の仮想ネットワークをピアリングします。

2.Azure側構築

2-1.仮想ネットワークの作成

Virtual WANと接続するための仮想ネットワークを2つ作成します。各仮想ネットワーク内には通信用のVMを作成します。疎通確認のため、VMのセキュリティ設定は適宜変更しておきます。

設定項目 設定値
仮想ネットワーク名1 LAB-WAN-JE-VP
アドレス空間1 10.110.0.0/16
サブネット名 default
サブネットプレフィックス 10.110.0.0/24
仮想マシン名1 WAN-VM-JE-VP
仮想マシンIPアドレス1 10.110.0.4
仮想ネットワーク名2 LAB-WAN-JE-VP-2
アドレス空間2 10.120.0.0/16
サブネット名 default
サブネットプレフィックス 10.120.0.0/24
仮想マシン名2 WAN-VM-JE-VP-2
仮想マシンIPアドレス2 10.120.0.4

2-2.Virtual WANの作成

[リソースの作成]から「Virtual WAN」を選択し、作成します。

Virtual WANリソースは拠点間接続を実現するための複数のコンポーネントが統合されたサービスです。リソースの場所はVirtual WANリソースが紐づけられるロケーションであり、この段階ではインスタンスの実態は作成されません。

設定項目 設定値
名前 NE-LAB-WAN
サブスクリプション (デプロイするサブスクリプションを選択)
リソースグループ LAB-WAN-RG
リソースグループの場所 東日本

2-3.仮想ハブの作成

[Virtual WAN]のメニューから[仮想ハブ]を選択し、新規に仮想ハブを作成します。

設定項目 設定値
名前 NE-LAB-HUB-JE
ハブプライベートアドレス空間 10.255.0.0/24
VPNサイト用のVPNゲートウェイを含める 有効
AS番号 65515(既定値)
ゲートウェイスケールユニット 1 スケールユニット – 500Mbps

2-4.VPN接続情報

[Virtual WAN]のメニューから[VPNサイト]を選択し、新たにVPN接続するオンプレデバイスの情報を設定します。

VPNサイトの設定情報はS2S VPN接続の時のローカルネットワークゲートウェイに設定するものと同様の仕組みです。BGP接続の場合は[プライベートアドレス空間]にオンプレデバイスのループバックアドレスをプレフィックス付きで指定し、ピアリングアドレスには同様にループバックアドレスを指定します。
ピアの重みは同一拠点に複数のパス(VPNサイト)を作成する場合に経路を制御するための設定値です。

デバイスの情報は任意の設定項目です。オンプレデバイスを管理するための事務的な項目でしょうか。

設定項目 設定値
名前 NETFC
パブリックIPアドレス (環境に合わせて設定)
プライベートアドレス空間 1.1.1.1/32
Border Gateway Protocol設定を有効にします 有効
ピアリングアドレス 1.1.1.1
ASN 65010

仮想サイトを作成したら、仮想ハブとの関連付けをします。関連付けするサイトを選択し、[新しいハブの関連付け]から対象の仮想ハブを選択します。接続に用いる共有キーの設定も行います。

設定項目 設定値
名前 Connection-NETFC
共有キー (オンプレデバイスの共有キーと一致させる)

2-5.仮想ネットワーク接続

[Virtual WAN]のメニューから[仮想ネットワーク接続]を選択し、仮想ハブと仮想ネットワークを接続します。設定を行うと、対象の仮想ネットワーク側に自動でピアリングの設定が作成されます。

設定項目 設定値
接続名 LAB-WAN-JE-VP-Peering
ハブ NE-LAB-HUB-JE
サブスクリプション (仮想ネットワークのサブスクリプションを選択)
仮想ネットワーク LAB-WAN-JE-VP

仮想ハブと接続できる仮想ネットワークは同一リージョン内に作成されているもののみです。異なるリージョンに作成されている仮想ネットワークと接続しようとするとエラーとなります。また、仮想ネットワーク内にVPNゲートウェイが含まれている場合も失敗します。

左下の画像はVPNゲートウェイが含まれる仮想ネットワークとの接続をしたとき、右下の画像は異なるリージョンの仮想ネットワークとの接続をしたときのエラーです。

3.オンプレ側構築

皆大好きJUNOSコンフィグレーションの時間です。Juniper SRX300の設定項目を一部抜粋して紹介します。

3-1.Interfaces設定

このほかのインタフェースで有効になっている経路情報を広報します。(192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24)

3-2.IKE設定

S2S VPN接続時と変わらないパラメータです。VPN接続の既定のポリシーは以下の公式サイトに情報があります。

IPsec 接続の既定のポリシー

3-3.IPsec設定

3-4.Security-zone設定

3-5.Address-book設定

3-6.Flow設定

3-7.Security-policy設定

3-8.Routing-options設定

3-9.BGP設定

AzureのゲートウェイインスタンスとはeBGPで接続する必要があります。VPN経由で対向の仮想ハブ内のアドレスに対してネゴシエーションを張りに行くので、マルチホップ設定を行います。ローカルアドレスにはループバックアドレスを指定します。

3-10.Policy-options設定

4.状態確認

4-1.IKE/IPsec状態確認

4-2.BGP状態確認

4-3.経路情報確認

SRXにおいてBGPで受信した経路を確認します。‘show route advertising-protocol bgp X.X.X.X’コマンドでネイバーごとに広報している経路を確認できます。

 

Azure側では、ピアリングした仮想ネットワークに配置したVMのNICを参照し、[有効なルート情報]からVMが保持している経路情報を確認します。オンプレデバイスへの経路が冗長されているため、オンプレネットワーク宛経路のネクストホップには、ゲートウェイインスタンスのIPアドレスが2つ表示されています。

5.経路制御

5-1.AS-Prepend

アクティブ/アクティブ構成のVPNゲートウェイは、両経路が等コストなのでそのままではAzureからオンプレへの通信はどちらか一方のパスを選択することになります。Azure→オンプレへの通信経路を制御するにはいくつか方法がありますが、オーソドックスな方法はAS-Prependであると思います。

ASパス長を長くして広報することにより、対向ルータからの経路を制御する。以下のようにセカンダリーインスタンス向けのみパス属性に自ASを余分に付与することでコストを高く見せます。

Azure側で経路を確認すると、対象の経路のネクストホップが片方になっているのが確認できます。

6.さいごに

今回はAzure Virtual WANとJuniper SRXでBGP over IPsec接続をしてみました。S2S VPNと手順は変わらずに行えることがお分かりいただけたかと思います。Virtual WANを利用するならば大規模な拠点間接続の利用シーンが想定されますので、静的に経路制御を行っていては管理の手間が膨れ上がることは明白です。推奨パートナーデバイスの利用が最善解かもしれませんが、せめて動的経路制御を行うのは必須でしょう。

この記事を書いた人

曽根悠斗
曽根悠斗
仮想基盤分野のエンジニア,曽根です。
昨年まではネットワークの構築を担当しておりました。
進歩の早いクラウド技術に置いて行かれないよう,日々成長していきます。