Meraki MX Auto VPN の仕組み

Meraki MX の目玉機能といえば auto virtual private network (VPN) です。Auto VPN は拠点間 VPN のことを示しますが、上流のデバイスが存在してもその機器の設定を変更しなくても 数クリックで VPN を確立できてしまう、夢のような機能になります。この仕組みが非常に気になりました。普通だったら上流の機器が存在した場合、その機器でポートフォワーディングを設定しなければいけません。Cisco Adaptive Security Appliance (ASA) では間違いなく上流の機器の設定を変更しなければいけません。そんな謎に包まれた Auto VPN ですが、図を駆使しこの Auto VPN という仕組みの理解を深めたいと思います。

ネットワーク構成

初めに、下の図のように本社に MX250 と拠点に MX67 を導入することにします。

vpn_registery_topology

拠点側は 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 の間の番号を無作為に選びます。

vpn_registry_packets

今回の場合では MX250 は送信元ポート50000、MX67 は 38220 です。MX67 がインターネットへ抜ける時、ADSL ルータが network address translation (NAT) を実施します。なので、MX67 が 192.168.0.1 でパケットを送信しても、VPN レジストリでは 113.150.73.1 からパケットが届いたと認識します。VPN レジストリでは各 MX のエントリが作成されます。

vpn_registry_entry.png

ステップ 2 : VPN レジストリが各 MX へレジストリ情報を通知

VPN レジストリで Auto VPN 用のエントリの作成が完了したら、VPN レジストリは各 MX にその他 MX の情報を共有します。MX250 には MX67 の IP アドレスとポートを、MX67 に MX250 の情報を教えます。

vpn_registry_send_back_information

Meraki クラウドの VPN レジストリをブローカーとして利用することによって、ネットワーク管理者が IP アドレスやポートの設定を手動で入力しなくても、各 MX は自動的に他の MX の IP アドレスとポートを把握します。

ステップ 3 : VPN トンネルを確立

これで、VPN トンネルを張る準備が整いました。各 MX は VPN レジストリから受け取った情報を元に VPN トンネルの確立を試みます。全てのパターンを把握するため、このシナリオでは本社側からネゴシエーションを開始することにします。

vpn_connection_stage_1.png

MX250 はステップ 1 で利用した送信元 IP とポートを使用し、MX67 に対してパケットを送信します。この時点では MX250 が送信したパケットは ADSL ルータで落とされるはずです。なぜならば、ADSL ルータは 113.150.73.1:50000 というセッションに対して 58.168.214.1 という IP を把握していないからです。もう少し詳細に説明しますと、MX67 が ステップ 1 でVPN レジストリへ送信したパケットは ADSL ルータ内で下図のようにセッションとして記録されます。

adsl_session_table.png

ADSL ルータは113.150.73.1:5000 に対する戻りパケットは 209.206.48.28:9350 からしか許可しません。なので、他の IP アドレスからのパケットは全て落とすはずです。MX250 が送信したパケットの送信元は 58.168.214.1:38220 なので落とされます。この状況を打破するために、MX67 も MX250 に対してパケットを送信し始めます。

mx67_sends_packet_to_mx250.png

こうすることによって、ADSL ルータは 113.150.73.1:50000 に対して 58.168.214.1:38220 も記録し、MX250 からのパケットを許可し始めます。

adsl_session_table_2.png

mx250_sends_packet_to_mx67_again.png

これで MX250 と MX67 の相互通信が可能になったので、VPN トンネルも確立されます。

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.