情シスは何度でも甦るさ。

OracleDB/Ruby好きの情シス部員がお送りします

閉域網で使ってるiPhoneがMDMと通信できなくてハマった話

MDMの指令を無視するiPhone

うちの閉域網に、業務端末としてiPhoneを導入した。
うちの閉域網から、インターネットに出る口は開いているので、一般のios アプリも許可したのは使える構成。

いざ、キャリアから初期設定された端末たちがぞろぞろと納品してきたのだが、社内の細かいキッティングをしようと思いMDMから指令を与えるも、うんともすんとも言わない状態に。

しかし、社内Wifiからだと繋がる不思議

今回閉域網をキャリアのサービスを使っていた。 経路としては、こうなる。

iPhone => (LTE) => キャリアの設備 => うちの閉域網 => インターネット(MDM)

切り分けを行うために、色々試行錯誤をすると、

①社内Wifiにつなぐ → MDMと通信できない
②社内Wifiにつないで、モバイルデータ通信をOffにする → MDMと通信できる

という謎な事象が発生。

①、②も経路は
iPhone => (Wifi) => うちの閉域網 => インターネット(MDM)

となり、当然インターネットに出る経路は同じなのでつながらないはず。
なのに、②の場合なんでモバイルデータ通信を切ってWifiオンリーにしたらMDMに繋がるねん。

ますます、混迷を深める。 切り分けようとして、理由が全く異なる事象にぶち当たってしまったのだろうか。

そもそもMDMiPhoneってどういう通信してるの?

インターネットにあるMDMは、どのようにiPhoneに指示を送っているのだろうか。

ネット上の情報によると、以下の経路でiPhoneに指示が飛ぶ。

MDM => APSN(Apple Push Notificationサービス) => iPhone

で、指示を受けたiPhoneでシステムサービスが起動し、MDMhttpsで通信し、アプリの配信などを行う仕組みだそうだ。

今回のケースでは、MDMからの指示が届いていない模様。

しかし、インターネットから閉域網のiPhoneに向けていきなり通信が行えるはずもない。 ということで調べていくと、iPhoneは通信が可能になると、APSNに対して通信を行い、通信を確立するとAPSNとのセッションを基本的には張りっぱなしにするそうだ。

今回、キャリア側の経路の問題の可能性もあったので、そちらにも確認をお願いしていたが、そちらでは問題がないらしく、どうやらうちの環境に起因している可能性が高そう。

ということで、iPhoneから、MDMへの通信あたりが怪しいということで、調べていくと、見事にiPhoneからインターネットの出口にあるFireWallにて、ポート5223の通信が遮断されているのが、ログから判明。

これだ。

結局のところ

FireWallの設定を変更することで、無事MDMからの指示も届くようになった。

しかし、まだ疑問は残る。なぜ、社内Wifiにつないで、モバイルデータ通信をOffにすると、MDMと通信ができたのか?

FireWallのログを丁寧に調べていくと、どうやらiPhoneは、443のポートでMDMと通信をしていた形跡が出てきた。

iOSの仕様で、「5223 で APNS に接続できなかった場合のフォールバック用」として、443で通信を行うと記載がある。
FireWallも、443のアウトバウンドは許可していたため、そのときだけMDMとの通信に成功していた。

いやでもなんで、モバイルデータ通信OFFが、フォールバックとみなすトリガーなんだよう。

原因は、結構簡単なんだけど、切り分けの調査のために、違う事象が出てきて余計に混乱したというお話でした。

余談

FireWallのログをその後見てると、5223、5224、5228、そして、10006の通信が発生している。

5224は、仕様上使わないってことになってるが、5223と同様にAppleのサーバ向けにあまりに通信してる回数が多かったので、通してみた。

5228は、Androidのプッシュ通知で使用するポートだそうだ。頻度が少ないので拒否にしてるが、実際業務上問題は発生していない(実際は何らかのエラーが起こってる?)

10006も同様。なんの通信なんだこれは。

あと、NTPの123もやりとりしている模様。iPhoneって、NITZ(Network Identify and Time Zone)って3G回線で時間調整してるんじゃなかったの?と思ったけど、NTPでも時刻調整するのね。ってことで、ここはFireWallの通信を許可した。

あと、2195-2196は、全然使ってる様子がない。どういうこっちゃねん。

公開されてる情報と実装が違う気がするのだが、そんなものなのだろうかねぇ。