AzureとBarracuda NextG FirewallでSite to Site VPN接続

#はじめに
Azure標準のVPNゲートウェイを使って、Barracuda NextG Firewall(以下NGFW)とSite to Site VPN接続を試しました。

もともとNGFWは「[サイト間 VPN ゲートウェイ接続用の VPN デバイスと IPsec/IKE パラメーターについて](https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-about-vpn-devices)」にかかれている通り「検証済みのVPNデバイス」になっているため安心して利用可能です。

英語版の資料ですが「[How to Configure an IKEv2 IPsec Site-to-Site VPN to a Routed-Based Microsoft Azure VPN Gateway](https://campus.barracuda.com/product/nextgenfirewallf/article/NGF70/AzureRouteBasedVPNGW/)」の内容に添って簡単に試すことができました。

【宣伝】[pnop](http://www.pnop.co.jp/)は[バラクーダネットワークスジャパン](http://www.barracuda.co.jp/)さんの[クラウドパートナー](http://www.barracuda.co.jp/lp_cloud)です【大事】

#構成
以下の格好悪い図ですが、Azure側は192.168.0.0/16の仮想ネットワーク内にGatewaySubnetとSubnet-1を作成。仮想ネットワークゲートウェイとWindowsサーバを配置しておきます。

オンプレミス側は今回は物理HWは使わずに、こちらもAzure上に構築したNGFWを使って検証します。
仮想ネットワークとしては10.0.0.0/16になっているため、本資料でもこちらのセグメントはオンプレである想定で読んでいただければと。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/2a42d507-202b-0b1f-f30d-8281651bc0d3.png)

NGFWの構築については「[AzureでBarracuda NextG Firewall(構築編)](http://qiita.com/yotan/items/08cc7af7f667e5a96b50)」を参照下さい。

#Site to Site VPN設定
##Azure側のVPN設定

適当なリソースグループを作成して、仮想ネットワークとしては192.168.0.0/16の空間を作成します。
Subnet-1の他にGatewaySubnetも作成しておきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/8055ee5e-b5f0-4c27-84b9-a5d77f45cddc.png)

仮想ネットワークゲートウェイはVPN用で作成。SKUは今回は検証目的なので安価なBasicを利用します。
仮想ネットワークゲートウェイのデプロイには数十分かかるので気長に待ちます。作成完了後、パブリックIPアドレスは控えておきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/f5707e00-778e-5080-ecc2-b2c43437a3e0.png)

ローカルネットワークゲートウェイは接続先の情報(NGFW側)を入力して作成します。
IPアドレスはNGFWのパブリックIPアドレスを、アドレス空間には10.0.0.0/16を設定します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/ecfd07a4-8066-ed2e-a202-aa53247c14a7.png)

接続(Connection)も先に作成しておきます。
先に作成した仮想ネットワークゲートウェイ、ローカルネットワークゲートウェイの情報を元に作成します。
作成後、状態が「不明」になりますが、今はNGFW側のVPN設定が済んでいないためこのままでOKです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/b8d4fc9b-ec4e-70b5-e6f9-7d5ba7ced98b.png)

##NGFW側のVPN設定
クライアントPCからNextGenAdmin.exeを実行して、NGFWの管理画面にログインします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/89a1b607-445d-717e-ecbf-57c693cc2b82.png)

「CONFIGURATION」「Configuration Tree」から、Virtual Server配下のツリーを開き、「Site to Site」をダブルクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/e1963a2a-c4ed-91ce-9540-7806c5f91a8b.png)

「Lock」ボタンをクリック後、「IPsec IKEv2 Tunnels」をクリック。一覧を右クリックしてメニューから「New IPsec IKEv2 Tunnel..」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/eff77647-d43f-5825-4052-f87eeb35f63c.png)

VPN接続のための情報を入力します。
【General】
Tunnel Name：任意の名前入力
Enabled：Yes
Initiates tunnel：Yes
Restart SA on Close：Yes

【Authentication】
Authentication Method：Pre-Shared key
Shared Secret：Azure側の接続(Connection)作成時に入力したキー

【Phase 1 / Phase 2】
Phase 1 - Encryption：AES256
Phase 1 - Hash：SHA
Phase 1 - DH-Group：Group 2
Phase 2 - Encryption：AES256
Phase 2 - Hash：SHA
Phase 2 - DH-Group：Disable PFS

【Network Local / Network Remote】
Local Gateway：0.0.0.0
Local ID：(空白)
Local Network Address：10.0.0.0/16 (NGFW側のネットワークセグメント)
Remote Gateway：xx.xx.xx.xx (Azure側の仮想ネットワークゲートウェイのパブリックIPアドレス)
Remote ID：(空白)
Remote Network Address：192.168.0.0/16 (Azure側のネットワークセグメント)

記載の無い項目はデフォルト設定のままで良いと思います。最後に「OK」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/26522b50-16d1-52c2-b40a-7dbde9d4619e.png)

「Send Changes」「Activation Pending」「Activate」の順にクリックして変更を適用します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/7b3ccd46-c184-39bc-6e38-970d74e29c67.png)

##VPN接続確認
NGFW管理画面から、「VPN」「Status」をクリックするとトンネルの定義が２つ追加されており、その片方のステータスが「ACTIVE」になっていれば接続完了です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/2fced031-003e-8db8-2852-4f385ad433a8.png)

Azureポータルからも接続(Connection)の状態を見ると「接続済み」に変わりました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/800f214a-2bfc-69e3-8e28-152500e4fbe4.png)

##NGFWのFirewall設定
NGFW管理画面から「COFIGURATION」「Forwarding Rules」をダブルクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/bfb77645-9e25-acd9-fd41-6754a798621b.png)

「Lock」ボタンクリック後、「＋」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/dc92ca22-5f22-4cb8-cf9e-8888e32937a6.png)

新規ルールとして以下の情報を入力します。

ルール種類：Pass
ルール名：任意
BI-Directional：チェック
Source：10.0.0.0/16 (NGFW側)
Destination：192.168.0.0/16（Azure側)
Connection Method：Original Source IP

記載の無い項目はデフォルト設定のままで良いと思います。最後に「OK」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/4557c867-67b1-d72d-1fd9-50c4f815c6e2.png)

新規追加されたルールは「↑」をクリックして、リストの「Block」よりも上に移動させます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/f176352a-85c8-ece1-95df-475f96c14c3b.png)

「Send Changes」「Activation Pending」「Activate」の順にクリックして変更を適用します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/91ba42f2-1510-b9ad-247a-1eb92123212a.png)

#接続確認
予めAzure側(192.168.0.0/16)上にWindows Server 2012R2をデプロイして、IISをインストールしておきました。
NGFW側(10.0.0.0/16)のPCからIEでhttp://192.168.0.4/ でAzure側のIISに接続出来たことを確認します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/6856bb62-097d-b0c9-c930-6dd3c2f0439f.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/6a28dbbb-8928-813e-d567-ee0b1edda358.png)

NGFW管理画面からも「FIREWALL」「Live」で該当の通信が正常に通っていることが確認できます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/137436/09414dfb-7bb6-9f77-c468-1e2b1dcf8869.png)

#おわりに
NGFWはAzureとSite to Site接続をMSが確認済みであるため、特に迷うこと無くお試しが出来ました。