Meraki MX を DC 冗長環境で使用した時のハブ間ループについて

Meraki MX の Auto VPN を データセンター (DC) 冗長環境 (データセンター間 L2 延伸している構成) で使用すると、各データセンターに設置していてハブとして動作している MX 間でループが発生します。具体的に、下図のように DC1 と DC2 が 10.0.0.0/8 というサブネットが割り振られていた場合、DC1 と DC2 に設置されている MX は 拠点 (Branch) に設置されている MX にこのサブネットを通知しますが、デフォルトの設定だと互いにもサブネットを通知してしまいます。

topology.png

これがループ発生の原因です。防ぐためには Meraki のサポートにハブ間の Virtual Private Network (VPN) トンネルを無効にする依頼等が必要になりますが、Auto VPN を使用時になぜこのようなことが発生してしまうのか考察したいと思います。

検証環境

図での検証環境を整えるのは簡単だと思いますが、同一オーガナイゼーション配下の MX が同一のサブネットを通知するためには、下記のいずれかのモードではぶの MX を運用する必要があります。

  • 「ルーティングモード」 + Virtual Local Area Network (LAN) 無効
  • 「パススルーまたは VPN コンセントレータ」

これらの設定は「セキュリティ & SD-WAN」> 「アドレスと VLAN」から設定可能です。もし、MX を「ルーティングモード」で  VLAN を有効にし、「セキュリティ & SD-WAN」>「サイト間 VPN」で 10.0.0.0/24 を「VPN の利用」を両方の MX で「yes」にした場合、下記のようなエラーが発生します。

error.png

「ルーティングモード」と VLAN が有効な MX では、他の MX で「VPN の利用」を「yes」と設定しているサブネットと同一のサブネットを通知させることはできません。

MX をいずれかのモードで設定後、「セキュリティ & SD-WAN」>「サイト間 VPN」では DC のサブネットを設定します。今回は「パススルーまたは VPN コンセントレータ」で MX を設定しました。

dc_vpn_configuration.png

Branch は「スポーク」として動作させれば問題ありません。ハブのプライオリティは DC1 の方を高くしておきます。

事象の詳細

冒頭でも説明しましたが、ハブはハブ同士でもルートの情報を交換するので、DC1 のMX のルートテーブルには DC2 の MX から通知された 10.0.0.0/8 というサブネットが載ります。

dc1_route_table.png

ここで注意していただきたいのが、DC1 の MX のルートテーブルには DC2 の MX から通知された 10.0.0.0/8 しか載っていないことです。「ローカルネットワーク」として登録した 10.0.0.0/8 はルートテーブルには載っていません。DC2 の MX も同様に、ルートテーブルには載っているのは DC1 から通知された 10.0.0.0/8 のみです。

それでは、Branch にいるクライアントから 10.0.0.0/8 宛にパケットを送信した場合、Branch の MX はハブのプライオリティが一番高い DC1 の MX へパケットを転送します。

step_1.png

パケットを受信した DC1 の MX は、自身のルートテーブルと照らし合わせ 10.0.0.0/8 のネクストホップは DC2 の MX だと判断します。なので、DC2 の MX へパケットを転送します。

step_2.png

DC2 の MX も同様に、自身のルートテーブルと照らし合わせ 10.0.0.0/8 のネクストホップは DC1 の MX だと判断し、受信したパケットを DC1 の MX へ転送します。step_3

DC1 の MX は前と全く同じ動作をし、受信したパケットを DC2 の MX へ転送します。転送されたパケットは Time To Live (TTL) が 0 になるまでループします。

step_4.png

回避策

「パススルーまたは VPN コンセントレータ」として動作させている場合は、ハブ間で VPN トンネルを確立させない設定を実施する必要があります。これはユーザが Graphical User Interface (GUI) から設定できるものではないので、サポートに依頼してください。これが一番簡単な方法だと思います。

また、MX のルーティングの特徴を利用して回避可能だと考えています。

  1. 直接接続 (MX に設定された VLAN)
  2. クライアント VPN
  3. スタティックルート
  4. Auto VPN のルート
  5. Non-Meraki VPN ピアのルート
  6. NAT

MX のルートプライオリティは上記の通りですが、注目しなければいけないのはスタティックルートが Auto VPN のルートよりもプライオリティが高いということです。このスタティックルートをうまく駆使することによってループを回避できます。

 

 

Leave a comment

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