sidetech

(元)インフラエンジニアの寄り道メモ。

Cisco Meraki MXのAuto-VPNで「Unfriendly」エラーでVPNが繋がらない場合

気分転換に書きます[E:coldsweats01]

Meraki MXのAuto-VPN機能はほんっとにラクチンで、やる事がないな~なんて思っていたら、特定の条件になった時にエラーが出たので、その対処法をメモしておきます。対象はMeraki MXシリーズ共通です。MX60,MX64,MX80,MX84,MX100等々・・・。

イージーセットアップだからと言って、全ての環境を自動で出来るほど世の中甘くは無かった。でもMerakiはちゃんとマニュアル手段もありますし、ナレッジも詳しく仕様が書かれているので安心です。こんな機械売ったらCiscoの資格が軽くなっちゃうねぇ・・・。でもでもネットワークは基礎理論を知っておかなければ、いくらMerakiが楽とはいえ、ちゃんと使いこなすには基礎はシッカリとです。

さて、今回のケースはVPNの環境条件下ではそこそこ出てくる話で「NAT-Traversal」と言うのがあります。Meraki MXシリーズでは、NAT-Traversalについては、使う環境なのか使わずに済むのか自動的に判断しますが、特定条件下においてはUDPホールパンチングの影響で上手く行かないケースがあります。
Merakiudpnat01
Merakiでは面白い用語でワーニングが出ます。Unfriendlyっていうんですね。
症状として、テクニカルに知りたい方は、

「Troubleshooting VPN Registration for Meraki Auto-VPN」「Automatic NAT Traversal for IPsec Tunneling between Cisco Meraki Peers」を読んでみてください。今回の件の解決の仕方が載ってます。

と、本家に振ってしまうとつれないと思うので、ちゃんと説明図用意しました。
Merakiudpnat02
状態としては、上記の様な構成図の時に、発生しました。まぁ多分Netscreenのファームが古い為かと思います。今回はこの拠点でPPPoE接続だったのですが、PPPoEを使ってのWarmSpareがまだ対応していないらしく、IWANについてもまだ対応していないようだったので、PPPoEルーターとして残したのですが、ちょっと最近の考え方ではない仕様の時代のファームなので、それを考慮してあげないとだめっぽいです。

このエラーの状態はUDPホールパンチングと言う状態が発生しています。Meraki側ではAuto-VPN機能により、まず「VPNレジストリ」に接続して情報を登録するのですが、UDPホールパンチングでは、通信の度にUDPポートが変わってしまう事で起きる為、VPNレジストリに登録されたUDPポートでの待ち受けを維持しない状態となり、繋がらない症状がでてしまいます。

構成図のとおり、不具合が出ているのは、お互いにNAT-Traversal環境という事ですね。ドキュメントを確認すると、このケースの場合はマニュアルで対応しろという事です。

Merakiudpnat03
で、「site-to-site VPN」の項目の中にNAT-Traversalを自動にするか手動にするかの項目があります。これをマニュアルにして、WANアドレスと待ち受けるポートを決めてあげます。これは資料にならってPort40000にしてみます。

これ、普通のVPN機器であれば、明示的にNAT-Travarsalを使うのかどうかを判断する所なので、VPN技術者にとっては難しい話ではないのですが、Meraki MXはノリが違います。どこを弄るとどうなるかと言うのが、結構慣れないとピンと来なかったりします。

で、あとは、上流のPPPoEルーターでPortマスカレードを掛ければいいだけです。
Netscreenの場合は「VIP」を使って、Port40000をどのIPに振るかで、今回はMeraki MXは冗長構成でVirtualIPを使用していますので、そのIPを指定します。
Netscreenvip

しかしNetscreenのVIPは紛らわしい表現で困りますね。

さて、これで、ステータスをチェックしてみると・・・
Merakiudpnat04
エラーが無くなり、「disconnect」だった拠点が「connected」に変わりました。めでたしめでたしです。

私自身はNAT-TraversalでのVPNは嫌いなのですが、環境により出来ないよりはマシと考える様になりました。[E:coldsweats01] 
VPN関係の仕事をしていると結構セグメントアレンジに悩むことが多く、それ以外にもセグメント変更が出来ない環境とかあったり色々します。そういった環境でNAT-Traversalは大変便利です。

Meraki MXで今の所あったらいいなーって思うのはセカンダリIPが持てればな~って思う処ぐらいですかね。

次回気分転換時にはシェーピングのお話を書く予定です。