はじめに
Azure Virtual WANが2018年9月にGAしていましたが、Barracuda CloudGen Firewall(以下CGFW)の実機F18をお借りできたのでお試しました。
誤解を恐れずにAzure Virtual WANの事を整理すると既存のAzure VPN Gatewayを使いやすくパッケージ化したものです。
AzureにあるVirtual Networkへの接続にはVirtual Network Peeringを使っているのですが、この辺の接続の操作もAzure Virtual WANの中のメニューから1発で設定できるため、オペレータの操作が簡単になります。
オンプレミス側のルータがAzure Virtual WANの対応機器の場合、Azure Virtual WANへの接続設定が自動で行えるという機能があり、Barracuda CGFWはこれに対応しています。
今回は以下のような構成で、オンプレミス側のLANからAzure Virtual WANを利用してAzure仮想ネットワーク上のLinux仮想マシンにつなげてみます。
Azure Virtual Wan事前準備
まずはAzure Virtual Wanの準備と、Azure側の仮想マシン環境を作成します。
Azure Virtual WANリソースの作成
Azureポータルから「+リソースの作成」でフィルタ項目に「wan」と入力して、一覧から「Virtual WAN」を選択して作成します。
名前とリソースグループは適当に選択します。
ハブの作成
Virtual WANリソースのメニューから「ハブ」を選んで作成します。
この際にリージョンの指定を行いますが、本記事執筆時点(2019/2)では以下の制限があります。
- 複数のハブを作成しても相互接続できない
- Azure仮想ネットワークとのピアリングは同一リージョンでないとだめ(グローバルVNETピアリングが使えない)
他にハブ自身にもネットワーク空間を割り当てる必要があるので、アドレス設計は慎重に。
こちらはVPNゲートウェイを内部的に作成するため、完了までに30分くらいかかります。
Azure仮想ネットワーク及び仮想マシンを作成
いつもの手順で仮想ネットワークと仮想マシンを作成します。今回は仮想マシンはCentOS 7.5を利用しました。
仮想ネットワークのアドレス空間は192.168.0.0/24で作成します。オンプレ、Azure Virtual WANのハブのアドレス空間と重複しないように注意します。
Azure仮想ネットワークをハブにピアリング
Virtual WANリソースのメニューから「仮想ネットワーク接続」を選んで作成します。
「+接続の追加」から先に作成した仮想ネットワークをハブに関連付けます。
仮想ネットワークとハブが同一リージョンでないと関連付けできないので注意してください。
VPN接続登録用のアプリケーションIDの準備
オンプレミス上のCGFWの管理画面から直接Azureに接続してVPN接続に必要な各種情報を設定・取得する必要があり、その為にAzureサブスクリプションが紐付いているAzure Active Directory(以下AAD)に新たなアプリケーションIDを用意する必要があります。
新しいアプリケーションの登録
Azureポータル画面からAADを選択し、「アプリの登録」「+新しいアプリケーション登録」をクリックします。
「名前」は適当に(今回はvwanoperator)、「アプリケーションの種類」は「Webアプリ/API」を選択します。
サインオンURLは実際には使いませんのでAAD上の他のアプリケーションと重複しないURLを入力します。
「設定」メニューで表示される「アプリケーションID」は後でCGFWからAzure Virtual Wan接続時に使用するので控えておきます。
サービスプリンシパルの作成
続いて先の画面の「設定」をクリックします。
設定ブレードの「キー」をクリックして、新たなパスワードを作成します。
「説明」のキー名は適当に、「有効期限」もとりあえず1年にしました。
最後に「保存」を押すと、「値」としてアプリケーションIDのパスワードが表示されるので、こちらも控えておきます。
テナントID、サブスクリプションIDの確認
AzureポータルからAAD画面の「プロパティ」をクリックして表示される「ディレクトリID」を控えます。
これは「テナントID(Tenant ID)」とも呼ばれています。
Azureポータルから「サブスクリプション」画面に表示されるサブスクリプション一覧から、Azure Virtual Wanが作成されているサブスクリプションの「サブスクリプションID」を控えておきます。
サブスクリプションにIAMの追加
Azure Virtual Wanが作成されているサブスクリプションに対して、先に作成したアプリケーションIDを「共同作成者」として追加します。
サブスクリプション画面から「アクセス制御(IAM)」をクリック、「+ロールの割当の追加」にて、「役割」に「共同作成者」、「アクセスの割当先」には「Azure ADのユーザ、グループ、サービスプリンシパル」を選択、「選択」欄に先に作成したアプリケーションの名前を入力すると下部に一覧で表示されるので、それを選択後に「保存」をクリックします。
正しく共同作成者の部分に先に追加したアプリケーションが登録されていることを確認します。
オンプレ機器の準備
今回はF18を利用します。詳細手順は省略しますが、オンプレ側の適切なネットワーク配下で内部のルーティング等が正常に設定されており、管理ツール(FirewallAdmin.exe)から設定変更が行える必要があります。
この先の説明では、管理ツールの具体的な使用方法は割愛します。各種設定追加・変更の操作について基本的な事は知っている前提となります。
CGFWは2019/2/1時点で最新の以下のファームウェアを使用しました。必要に応じてファームウェアのアップデート(+Hotfixの適用)を行ってください。
Firmware Version : 7.2.3-161
- Hotfix 896
- Hotfix 897
CGFW側のインターネット接続設定
こちら、詳細は省略しますが、適切な手順でインターネット接続を行います。
私はF18のp4ポートにフレッツ光のONUを接続して、PPPoEによる接続を行っています。
WAN側のグローバルIPアドレスは固定化されている必要があります。お使いのプロバイダのプランにて固定IPオプションなどがあればそれを有効化します。
[CONTROL]->[Network]にてインターネットへの接続が正常に行われていることを確認します。
CGFW側のVPN設定
クライアントPCからFirewallAdminのexeファイルを実行して、CGFWの管理画面にログインします。
[CONFIGURATION]->[Service Properties - VPN(VPN Service)]画面にて、「Enable Service」が有効になっていない場合は「Yes」に変更します。
[CONFIGURATION]->[VPN Settings - VPN(vpn)]->「Click here for Server Settings」画面内の[Advanced]タブにて、「Use IPSec Dynamic IPs」を「Yes」にします。こちらはPPPoEなどでインターネット接続している場合には必須の設定です。
もし「Start IKEv2」がNoのままの場合は「Yes」に変更します。
Azure Virtual WanへのVPN接続自動設定
ここからがAzure Virtual Wanの肝となる機能のひとつである、Site to Site VPNの接続とそれに関連するBGPによるルーティング設定の自動化となります。
CGFWからAzure Virtual Wanへの接続要求
[CONTROL]->[BOX]->[Connect to Virtual Wan]メニューを開き、Tenant ID(ディレクトリID)、SUbscription ID、User ID(アプリケーションID)、Password(アプリケーションパスワード)欄に先に控えた各種内容を入力します。
「Virtual Wan Name」にはAzure側で作成したAzure Virtual Wanの名前を入力します。こちらの名前は大文字小文字区別しますので正確に入力します。
最後に「Connect」をクリックして、接続開始です。、
Azure側に(存在しない場合には)Configファイルやり取り用のストレージアカウントが作成され、Azure側から接続情報のjsonファイルが作成されるのを待ちます。
VPNサイトをハブに関連付け
Azureポータル上のAzure Virtual Wanの画面にて「VPNサイト」をクリックすると、一覧に先に登録したCGFWが表示されるので、選択後「+新しいハブの関連付け」をクリックします。
「ハブ」に先に作成したAzure Virtual Wanのハブを選択、PSKは省略して大丈夫です。
最後に「関連付けの追加」をクリックします。
CGFW側の完了確認
CGFWの管理画面に戻り、[CONTROL]->[BOX]->[Check Connection Status]メニューを開くとログが更新されています。
InfoレベルでSite to Site VPN及びBGP関連がSuccessと出力されていることを確認します。
(なんだかConfigファイルをストレージアカウントから削除できないとエラーも出ていますが、特に弊害なさそうなので今回はスルーします)
VPN設定確認
[VPN]->[Site-to-Site]で確認すると、Azure Virtual Wanに2本接続が作成されていることが確認できました。
無論Azureポータル上からもVPN接続状態が「接続済み」になります。
[CONFIGURATION]->[Site to Site - VPN(vpn)]画面から「IPsec IKEv2 Tunnels」のタブを開くと自動設定されたVPN設定の一覧が表示されるので、いずれか一つの設定を確認します。
「Network Settings」内の「Interface Index」の値を控えておきます。
これはCGFW側に複数のVPN接続設定が存在する場合に不定となる値っぽいのですが、この後にCGFWのFirewallルール追加する際に必要となります。
BGPの設定確認
[CONFIGURATION]->[OSPF/RIP/BGP Settings - VWAN-BGP(OSPF-RIP-BGP-Service)]から「Operational Setup」画面を確認すると、ちゃんとBGPのサービスが有効になっています。
「BGP Router Setup」画面にて、BGP Router Configurationの「Networks」にオンプレミス側のCIDRを必要なだけ(疎通させたいセグメント)追加します。
こちらを追加することで、オンプレミス側のルーティング情報をBGP経由でAzure Virtual Wan側に広告させることができます(逆にこちらを指定しないとSite to Site VPN接続が正常でも疎通できません)。
Azure Virtual Wanからのルーティング情報は[CONTROL]->[Network]にて「BGP」タブから確認することができます。
ちゃんと経路交換ができているっぽいですね。
CGFWのFirewallルール追加
Firewall Objectの作成
先に「IPsec IKEv2 Tunnels」にて「Network Settings」内の「Interface Index」の値を確認しましたが、こちらが「1」の場合、CGFWの論理インタフェース名は「vpnr1」となるようです。
オンプレミスからはこのvpnr1宛の通信に関してのみ許可するFirewallルールを作成したいので、まずはFirewall Objectを作成します。
[CONFIGURATION]->[Forwarding Rules - NGFW(Firewall)]からFirewall Objectsの「Network」を開き、新たなオブジェクトを作成します。
Firewallルールの有効化
[CONFIGURATION]->[Forwarding Rules - NGFW(Firewall)]からAccess Ruleを開き、デフォルトの「LAN-2-VPN-SITE」を編集します。
「Deactivate Rule」のチェックを外し、「Destination」には先に作成したvpnr1 0.0.0.0/0を指定したFirewall Objectを指定します。
接続確認
予めAzure側(192.168.0.0/24)上にLinux Serverをデプロイして、Apacheをインストールしておきました。
$ sudo yum install httpd –y
$ sudo systemctl start httpd.service
オンプレミス側のPCのブラウザからでhttp://192.168.0.4/ でAzure側のApacheに接続出来たことを確認します。
CGFW管理画面からも[FIREWALL]->[Live]で該当の通信が正常に通っていることが確認できます。
おわりに
Azure Virtual Wanの自動設定ですが、事前にCGFの基本設定(インターネット接続など)が済んでいれば、面倒なSite to Site VPN接続パラメータの入力、更に難解なBGPの設定が自動で行われるためかなり簡略化することができました。
今回はなかなか簡単に個人では利用できない物理CGFWを使う機会があり、検証としては有益でした。