Meraki MX の目玉機能といえば auto virtual private network (VPN) です。Auto VPN は拠点間 VPN のことを示しますが、上流のデバイスが存在してもその機器の設定を変更しなくても 数クリックで VPN を確立できてしまう、夢のような機能になります。この仕組みが非常に気になりました。普通だったら上流の機器が存在した場合、その機器でポートフォワーディングを設定しなければいけません。Cisco Adaptive Security Appliance (ASA) では間違いなく上流の機器の設定を変更しなければいけません。そんな謎に包まれた Auto VPN ですが、図を駆使しこの Auto VPN という仕組みの理解を深めたいと思います。
ネットワーク構成
初めに、下の図のように本社に MX250 と拠点に MX67 を導入することにします。
拠点側は asymmetric digital subscriber line (ADSL) 回線なので、internet service provider (ISP) が用意したルータを使用しなくてはなりません。つまり、拠点側の MX67 の wide area network (WAN) インターフェースにはプライベート internet protocol (IP) アドレスが設定されていることになります。図にもありますが、ここでは 192.168.0.1 とします。ADSL ルータが持つグローバル IP アドレスは 113.150.73.1 です。本社側はインターネット回線が MX に直接繋がっているので、MX 自身が 58.168.214.1 というグローバル IP アドレスを持ちます。また、VPN レジストリの IP は 209.206.48.28 です。
ステップ 1 : VPN レジストリへ登録
「セキュリティ & SD-WAN」>「サイト間 VPN」より、Auto VPN の設定を有効にすると、その MX は Meraki クラウドの VPN レジストリにパケットを送信します。この時のパケットの種類は UDP、宛先ポートは 9350、送信元ポートは 32768 – 61000 の間の番号を無作為に選びます。
今回の場合では MX250 は送信元ポート50000、MX67 は 38220 です。MX67 がインターネットへ抜ける時、ADSL ルータが network address translation (NAT) を実施します。なので、MX67 が 192.168.0.1 でパケットを送信しても、VPN レジストリでは 113.150.73.1 からパケットが届いたと認識します。VPN レジストリでは各 MX のエントリが作成されます。
ステップ 2 : VPN レジストリが各 MX へレジストリ情報を通知
VPN レジストリで Auto VPN 用のエントリの作成が完了したら、VPN レジストリは各 MX にその他 MX の情報を共有します。MX250 には MX67 の IP アドレスとポートを、MX67 に MX250 の情報を教えます。
Meraki クラウドの VPN レジストリをブローカーとして利用することによって、ネットワーク管理者が IP アドレスやポートの設定を手動で入力しなくても、各 MX は自動的に他の MX の IP アドレスとポートを把握します。
ステップ 3 : VPN トンネルを確立
これで、VPN トンネルを張る準備が整いました。各 MX は VPN レジストリから受け取った情報を元に VPN トンネルの確立を試みます。全てのパターンを把握するため、このシナリオでは本社側からネゴシエーションを開始することにします。
MX250 はステップ 1 で利用した送信元 IP とポートを使用し、MX67 に対してパケットを送信します。この時点では MX250 が送信したパケットは ADSL ルータで落とされるはずです。なぜならば、ADSL ルータは 113.150.73.1:50000 というセッションに対して 58.168.214.1 という IP を把握していないからです。もう少し詳細に説明しますと、MX67 が ステップ 1 でVPN レジストリへ送信したパケットは ADSL ルータ内で下図のようにセッションとして記録されます。
ADSL ルータは113.150.73.1:5000 に対する戻りパケットは 209.206.48.28:9350 からしか許可しません。なので、他の IP アドレスからのパケットは全て落とすはずです。MX250 が送信したパケットの送信元は 58.168.214.1:38220 なので落とされます。この状況を打破するために、MX67 も MX250 に対してパケットを送信し始めます。
こうすることによって、ADSL ルータは 113.150.73.1:50000 に対して 58.168.214.1:38220 も記録し、MX250 からのパケットを許可し始めます。
これで MX250 と MX67 の相互通信が可能になったので、VPN トンネルも確立されます。