Meraki MR IPSKで一つのSSIDに複数のPSKを設定

今回はIPSKについてまとめたいと思います。
IPSKとはIdentity PSKの略で、一つのSSIDに対して複数のPSKの設定を行うことができるようにする機能です。
これまでは一つのSSIDに対して一つのPSKしか設定できなかったため、複数のWifiグループを設定したい場合はそれぞれに異なるSSIDを設定するしかありませんでした。
一般的な無線アクセスポイントでは複数のSSIDが設定できるので、そういった設定をしている企業も多いかと思いますが、SSIDを複数設定するとビーコンの送信回数が増え、結果としてアクセスポイントのパフォーマンスが落ちてしまうという悩みがあります。
そこでこのIPSKを使うことによって一つのSSIDで複数のPSKを設定することによってSSIDの数を減らすことができるということになります。

https://documentation.meraki.com/@api/deki/files/20673/WPN_UNDER_HOOD_1.png?revision=1&size=bestfit&width=773&height=342

Merakiの設定

1.Group Policyの設定

Merakiの設定は例の如く簡単です。
まずはGroup Policyの設定を行います。
IPSKの設定時にGroup Policyがそれぞれに必要になりますのであらかじめ作成しておきます。
ネットワーク全体 > 設定 > グループポリシー」へ移動します。
今回は2つのIPSKを設定する予定なので「GP for IPSK1」と「GP for IPSK2」を作成しました。
それぞれのGroup Policyの中身は今回の検証ではDefaultのままとしました。

Group Policyに関してはまた後で触れます。

2.iPSKの設定

ワイヤレス > 設定 > アクセス制御」へ移動します。
セキュリティ設定にて「RADIUSを使用しないIdentity PSK」を設定します。

IPSKの設定を行います。
適当な名前とPSK、そして上で作成したGroup Policyの割り当てを行います。

今回は2つのIPSKを設定しました。

3.WPNについて

ここまでの設定では単に一つのSSIDに複数のPSKの設定が出来ただけとなります。
IPSK1でもIPSK2でもどちらで設定したとしても同じSSIDでアソシエーションしていることになるので、(基本的には)同じサブネットに属しお互いに通信可能な状態となっています。
そこでWPNを有効にすることによって、それぞれのIPSK間の通信を制限することが可能にすることができます。
まずはWPNを無効にした状態で通信確認を行いたいと思います。

IPSK1に設定したPCから、IPSK2に設定したiPhoneに対して通信を行ってみます。

異なるIPSKがされた端末間ですが、WPN設定を行っていないので特に問題なく通信は可能となります。

次にWPNを有効化とします。

今度は通信が不可となったことが確認できました。

これによりIPSK設定をする場合はWPNの設定が重要であることが分かったと思います。

WPNの機能の詳細

WPNの機能に関して少し深掘りしたいと思います。
WPNはIPSK間の通信をBlockとするのは上記の通信確認でわかりましたが、MRの先の有線端末との通信はどのようになるのでしょうか?
同一セグメントにあるRaspberry Piに対してPingを行ってみます。

結果としては通信不可となりました。
下記Merakiドキュメントを見てみると、同一セグメントへの通信はDefault Gateway以外にはできなくなることが確認できます。

documentation.meraki.com

ですので、同じセグメント以外への通信に関しては制限はないのでもちろん8.8.8.8へのPingは成功します。

APを跨る同一IPSK通信

一般的な企業無線LAN環境においては複数の無線アクセスポイントで構成されると思います。
無線アクセスポイントを跨いだ同一IPSK内で通信が確立できるのでしょうか?
上記のMerakiドキュメントでは、MR間はオリジナルのパケットをUDPでカプセリングしてWPN IDを入れて送信されると書かれています。

https://documentation.meraki.com/@api/deki/files/20674/Screenshot_at_May_31_14-06-55.png?revision=1

ですので、対向のMRはUDPの中に埋め込まれているWPN IDをみて通信の許可・非許可を判断しているということになります。
実際に同じIPSKの設定をした端末間で通信を行わせてみます。

Pingによる疎通が可能となったことが確認されました。
念の為PacketCaptureも取得しておきます。
端末感のPingと思われるUDPパケットhが確認できました。

Source、Dest共に6080番のUDPパケットとして通信が行われるようです。

Group Policyについて

上記のMeraki設定の通り、IPSKの設定を行うためにGroup Policyの割り当ては必須となります。
しかし、それぞれのIPSKで異なるGroup Policyを割り当てる必要は必ずしもなく、同じGroup  Policyを割り当ててもなんの問題もありません。
しかし、Group PolicyをそれぞれのIPSKに割り当てるメリットをいくつか考えたいと思います。

1. Meraki Dashboardでクライアントを識別可能になる

IPSKで複数のPSKを設定して利用している場合、クライアントがどのPSKを利用しているのかが分かりません。

クライアントページではSSID単位でアソシエートしているクライアントの表示は可能ですが、どのPSKを使っているのかが一目では分からないのです。

Group PolicyをIPSK毎に設定することにより、どのIPSKを利用しているのかを確認することが可能になります。
クライアントページで「ポリシー」を該当のGroup Policyでフィルタリングすることによって特定のIPSKを使っているクライアントの一覧の表示が可能になります。

2. IPSK毎にVLANを変更する

もう一つのGroup Policyを適用するメリットとしては、それぞれのIPSKに対して異なるVLANのアサインが可能になることです。
WPNによってIPSK間の通信をBlockすることは可能ですが、同一のサブネットで運用するのを好まないケースもあります。
IPサブネットが同一なので上流のNetwork機器でACL設定がしにくくなるためです。
Group Policy毎にVLANを上書きすることによってIPSK単位に利用するサブネットを分けることが可能になります。

しかし、この設定には欠点もあり、IPSK毎にIPサブネットが異なってしまうのでWPNとして持っているIPSKを超える通信のBlockを行うことはできず、上流のL3デバイスACLを設定する必要が出てきます。

まとめ

IPSKおよびWPNを使うことによって一つのSSIDで複数のPSKを設定しグルーピングできることが確認できました。
しかし、PSKは漏洩してしまうとなんの意味も無いものになってしまいます。
次回はRADIUSを使ってMABとIPSKを組み合わせる方法をまとめたいと思います。