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で確認することが出来ます。
[admin@Mikrotik] /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接続を行っています。