今回は久しぶりにAuto-VPNに関しての情報をまとめておきます。
Meraki MXでSite-to-Site VPNを実現するAuto-VPN機能は他の全てのMerakiの機能と同様にとても簡単に実現することが出来るようになっています。
また、Auto-VPNはNAT越しの接続もサポートとなっていますが、Auto-VPNの機能として注意すべきポイントがありますのでそれを中心に記事にしておきたいと思います。
VPN Registry
Auto-VPN機能を有効にしたMXはMeraki Cloud内にあるVPN Registryに自分自身の情報を登録します。
VPN RegistryはPrimary、Secondaryで冗長化されており、MXは両方に登録を完了させる必要があります。

VPN Registlyとの通信要件
・Dest Port : 9350 - 9381
・Dest IP : 209.206.48.0/20、158.115.128.0/19、216.157.128.0/20
・Src Port : 32768 - 61000
MXはAuto-VPNが有効になった際にSite-to-Site VPNにて利用するIPsecのSrc Portを(Defaultでは)自動的に設定します。
IPsecで利用するPort#は32768 - 61000の間で利用します。
MXはこのSrc Portを利用してPrimary、Secondary VPN Registrlyに登録を行います。
これにより、VPN RegistlyはAuto-VPNに参加する全てのMXのPort#の情報を入手することが出来るのです。

VPN Registlyのメッセージに関しては公開されていないのですが、Meraki Documentでは同一のSrc IP、Port#でMXはVPN Registlyと通信することと書かれています。

VPN Registlyはメッセージの中身もチェックしているのでしょうが、重要なのはメッセージ自体のSrc IP、Port#が重要になるということです。
NAT配下にMXを配置した場合
ここからが本記事のメイントピックとなるMXをNAT配下に設置した場合の注意点に入っていきます。
上記の通り、VPN RegistlyはMXのPublic IPとSrc Port#を管理するためにVPN Registlyメッセージ本体のSrc IP、Port#を利用するということになります。
NAT越しでMXがVPN Registlyと通信を行う場合は、当たり前ではありますがSrc IPが変わってしまいますし、場合によってはSrc Port#も変わってしまうかもしれません。
冗長化されたVPN Registlyそれぞれに同じSrc IP、Port#でNAT変換された場合には問題はないのですが、異なるものに変更となった場合にはNAT Type Unfriendlyな状態となりAuto-VPN通信は成立しないことになります。

厳密にはVPN Registlyに登録された情報を元にIPsec通信を行いますので、MX間のIPsec通信を含めて同じSrc IP、Port#にNAT変換されることが大前提になります。

この図では黄色で示すIPsec通信は1本だけですが、HUBに設定されたMXにおいては全てのMX間のIPsec通信が集中することにな理ますので注意が必要です。
NAT Type Unfriendlyを回避する方法
NATを行うデバイスによってはNAT Type Unfriendlyを回避できない場合があります。
その場合には、MXでAuto-VPNで利用するPort#を固定設定し、NATデバイスにてPort Forwardingにすることによって回避することができます。

「セキュリティ&SE-WAN > 設定 > サイト間VPN」へ移動します。
「NATトラバーサル」を自動から手動:ポート転送へ変更します。
「パブリックIPとポート」を設定します。
パブリックIPはNAT変換される(Public)Global IPを、Port#はAuto-VPN通信で許可される32768 - 61000のレンジで好きな数値を設定します。

NATデバイスでPort Forwardingの設定を行います。
参考としてNATデバイスがMXだった場合のサンプル設定を掲載しておきます。

これにより必ずMXからのUDP Src Port#50000の通信は、50000番を引き継ぎつつ同じGlobal IPでNAT変換されますので、VPN Registlyへの登録および実際のIPsec通信を完了させることが出来ることになるのです。
回避できないパターン
上記の通り、NATデバイスでPort Forwardingの設定を行うことによりNAT Type Unfriendlyとなることを回避することが出来るのですが、必ずNATデバイスの設定変更を伴います。
例えば、NATデバイスを管理している部署が異なるとか、会社のポリシーとしてPort Forwardingが許可されないといった場合には対処できないことになります。
また、NATを行うデバイスがキャリア側に存在する場合も回避不能になります。
Global IPが付与されずPrivate IPのみが付与されるようなInternetサービスが存在したりします。
そのような場合にはSP側でCGNATが行われてInternet通信が行われることになりますが、このような環境においてはPort Forwardingはユーザ自身では行えないことになりますので注意が必要です。
まとめ
Meraki Auto-VPNをNAT越しに行う要件はよく耳にします。NATを行うデバイスの環境によっては回避不能なこともありますので注意した上で設計することが重要です。
また、今回はMX間通しのAuto-VPNの事例を紹介しましたが、Meraki Access PointをInternet越しにIPsecで通信させるテレワーカーVPNも同じ仕組みになっていますので合わせて注意が必要です。
テレワーカーVPNでは使用するポートの固定ができないので回避策も存在しません。