Microsoft AzureとRouterboardによるサイト間VPN接続を行う方法

Blog

Microsoft Azureの旧ポータルでのサイト間VPNの接続方法は、某所に掲載されていましたが、新ポータルからのVPNの接続についてはだいぶ変わっているようです。

何度か試してみたところ接続できるようになったので、情報公開いたします。

今回、サイト間VPNに利用するMicrosoft Azure及びRouterboard側の機能・コンポーネントは以下の通りです。

Microsoft Azure:

  • リソースグループ
  • 仮想ネットワーク
  • 仮想ネットワークゲートウェイ
  • パブリックIPアドレス
  • ローカルネットワークゲートウェイ
  • 接続
  • Virtual Machine

Routerboard(RotuerOS 6.37の場合)

  • PPP
  • IP>IPsec

今回のサイト間接続の簡単な概要図は以下のとおりです。

なおサイト間VPNの作成において特にAzure側での操作に当たっては、各リソースの作業順序が求められるケースがありますので、基本的には項番どおり作業を進めるようにしてください。

1. リソースグループの作成

リソースグループとして、VPN接続に関連するリソースを保存するためのグループ、「VPN-GROUP」を作成します。

2. Azure側のネットワーク環境の整備

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

まずは仮想ネットワークを選択します。

今回は以下のようなパラメータで作成します。

  • 名前:VN01
  • アドレス空間:10.2.0.0/16
  • サブネット名:default
  • サブネットアドレス範囲:10.2.0.0/24
  • サブスクリプション:使用しているサブスクリプション
  • リソースグループ:VPN-GROUP
  • 場所:お好きなところに。

必要なパラメータを入力し終わったら作成ボタンから仮想ネットワークを作成します。

作成が完了すると、上記のように仮想ネットワーク「VN01」が作成されます。

2-2. VPN用のゲートウェイサブネットの追加

VPN用のゲートウェイサブネットを追加します。

  • 名前:GatewaySubnet(変更不可)
  • アドレス範囲:10.2.1.0/28
  • ルートテーブル:なし

これで仮想マシンを配置するサブネットと、VPNゲートウェイサブネットの作成が出来ました。

2-3. 仮想ネットワークゲートウェイの作成

次に仮想ネットワークゲートウェイを作成します。

仮想ネットワーク ゲートウェイの作成から、必要なパラメーターを入力します。

  • 名前:VN-GW1(任意)
  • 仮想ネットワーク:ゲートウェイを作成する、仮想ネットワーク (VPN-GROUPのVN01)
  • パブリックIPアドレス:次の工程で作成します。

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

仮想ネットワークゲートウェイに割り当てるパブリックIPアドレスを作成します。

といっても、自分でパブリックIPアドレスを入力する訳ではなく、パブリックIPアドレスに紐付けるリソースを作る作業になります。ここでは、パブリックIPアドレスリソース名称の設定のみの作業となります。
今回は、Virtual-Network-Gateway01と言うリソース名にします。

  • 名前:Virtual-Network-Gateway01(任意)

2-3-2. 仮想ネットワークゲートウェイの作成

引き続き、仮想ネットワークゲートウェイの作成を続けていきます。VPNの種類については、ルートベースがデフォルトになっています。
※古いポータルではポリシーベース(静的)がデフォルトになっていました。
Routerboardは、ポリシーベースが対応していますので、そちらに変更します。

  • ゲートウェイの種類:VPN
  • VPNの種類:ポリシーベース
  • サブスクリプション:変更できません
  • リソースグループ:VPN-GROUP

これで仮想ネットワークゲートウェイの作成に必要な項目が揃ったので、作成ボタンで仮想ネットワークゲートウェイの作成を開始します。
なお、仮想ネットワークゲートウェイのデプロイには、数十分程度(自分が試した感じでは2,30分)掛かるケースもあるようです。

2-4. ローカルネットワークゲートウェイの作成

次にローカルネットワークゲートウェイの設定を行います。ローカルネットワークゲートウェイは、Azure側に設定しておくオンプレミス側(つまるところRouterboard側)の情報になります。

ローカルネットワークゲートウェイの作成画面で以下のパラメーターを設定します。

  • 名前:任意
  • IPアドレス:自宅(又は自社)側(Routerboard側)のWAN側IPアドレス
  • アドレス空間:自宅(又は自社)側(Routerboard側)のLAN側IPアドレス
  • サブスクリプション:使用しているサブスクリプション
  • リソースグループ:VPN-GROUP

作成が完了すると、以下のようなリソースが確認できます。ここまでの作業が完了すると、以下の4つのリソースが揃っているはずです。

  • home-site:ローカルネットワークゲートウェイ
  • VN-GW1:グローバルIPアドレス
  • VN-GW1:仮想ネットワークゲートウェイ
  • VN01:仮想ネットワーク

3. VPN接続の追加

ここまでの作業でIPsec接続に必要なAzure側のリソースがひととおり揃ったため、ここからいよいよIPsecによるVPN接続を行うための接続設定を追加します。

3-1. 接続の追加

「接続」を選択し、追加をクリックします。
以下のパラメーターを設定します。ここで設定した共有キーを、自宅(又は自社側)側のRouterboardにも設定します。

  • 名前:VN-GW1-home-site
  • 接続の種類:サイト対サイト(IPSec)
  • 仮想ネットワークゲートウェイ:VN-GW1
  • ローカルネットワークゲートウェイ:home-site
  • 共有キー(PSK):VPN接続の際に設定する共有キー (今回は share0123456789share と設定していますが、各環境上で任意の値に変更してください)

内容を確認して問題がなければ設定します。

4. Routerboardの設定

ここまでの作業で、Azure側の設定が完了しました。ここからは自宅(又は自社)側のRouterboardの設定になります。
なお、今回利用するRouterBoardの環境は、RouterOS 6.37となります。

操作自体はWindowsを使用しているならば、Winbox、他にもWebUIのWebfigでも操作は変わらないはずです。CLIについては今回は掲載しません。

RouterBoardの設定に必要となるパラメーターは以下のとおりです。

  • Azure側のパブリックIPアドレス(Azureのリソースから確認可能)
  • Azure側のローカルIPサブネット(今回の環境では10.2.0.0/16)
  • Azureの仮想ネットワークゲートウェイに設定した共有キー(今回は share0123456789share と設定していますが、各環境上で任意の値に変更してください)

4-1. IPsec Policy

「IPsec Policy > Generalタブ」

  • Src. Address:  192.168.1.0/24 (Routerboardの内部アドレスですが、必要に応じて各環境のLAN環境に合わせて読み替えて下さい)
  • Dst. Address:  10.2.0.0/16 (Azureの内部IPアドレス)

「IPsec Policy > Actionタブ」

  • SA Src. Address: RouterboardのWAN側IPアドレス(プロバイダ等から払い出されるIP)
  • SA Dst. Address: Azure側で設定した仮想ネットワークゲートウェイのIPアドレス
  • Proposal: IPsec-Azure

4.2. IPsec Peer

ここから、細かい設定が続きます。これらのパラメーター設定を1つでも誤った場合、接続できない恐れがありますので、接続に問題が生じたら、チェックボックスが当該ページの指定どおりの設定になっているかの見直しを行って下さい。

  • Address:仮想ネットワークゲートウェイのIPアドレス
  • Auth Method: pre shared key
  • Secret:Azureで設定した共有鍵(今回は share0123456789share と設定していますが、各環境上で任意の値に変更してください)
  • Exchange Mode:main
  • Send Initial Contactにチェック
  • NAT Traversalにチェック
  • Proposal Check:obey
  • Hash Algorithm:sha256
  • Enc Algorithm:aes-128, aes-256
  • DH Group:modp1024

4.3. IPsec Proposal

  • Name: IPsec Policyで指定した名前
  • Auth Algorithms:sha1
  • Encr. Algorithms:aes-126 cbc, aes-192 cbc, aes-256 cbc, aes-128 ctr, aes-192 ctr, aes-256 ctr
  • PFS Group:modp3072

接続の状態はIPsec>Install SAからか、CLIで確認することが出来ます。

[[email protected]] /ip ipsec> installed-sa print 
Flags: A - AH, E - ESP 
 0 E spi=0x74B4780 src-address=xxx.xxx.xxx.xxx dst-address=yyy.yyy.yyy.yyy state=mature 
     auth-algorithm=sha1 enc-algorithm=aes-cbc 
     auth-key="f1cecb27640bc364604e1b5bfb6913336d24c77b" 
     enc-key="ea4f9e9b583a198643b10770e0354bf5521bc41aa9a85a65a4b888ad53f26b97" 
     addtime=oct/01/2016 15:54:00 expires-in=58m20s add-lifetime=48m/1h current-bytes=290140 
     replay=128

ちなみに、Microsoft Azureから見たステータスはこちら。

5. まとめ

Microsoft Azureの新ポータルからのサイト間VPN接続設定の情報は、まだまだ不足していると思います。また、Routerboardになるとなおさらです。

主だったメーカーのルーター製品における設定値・例についてはMicrosoftに掲載されていますが、それ以外のRouterboardようなIPsecが利用できる機器であれば接続できると思います。

Routerboardはライセンスレベルはあるものの、基本的にはどれでも(ローエンドの製品でも)IPsecが使えます。Microsoft Azureとのサイト間VPN用ルーターとしてMicrosoftが公開している「検証済みのVPNデバイス」と比較すると低コストで入手可能なRouterboardやCCRが利用できる意味は大きいと考えています。

クラウドとオンプレミスとの接続は、今後のITインフラを考えていくうえで,重要な検討事項です。そのため、現在すでにAzureを利用している方、またこれからAzureを使いハイブリッドクラウドの検証等を検討される方は、是非Routerboardを入手して、この機会にお試しいただければと思います。

それでは良いRouterboardライフを!

6. Appendix

なお、今回のRouterboardでの設定だけでなく、AzureとのIPsec接続で必要となる各種の暗号に係るパラメーター等は、以下のリンクに公開されています。

今回の検証におけるRouterboardでの接続は、リンクのドキュメント内「PolicyBased」のパラメータに沿ってIPsec接続を行っています。

https://azure.microsoft.com/ja-jp/documentation/articles/vpn-gateway-about-vpn-devices/