2021.2.1

MDMの導入で意識しておきたい社内ネットワーク設定

以前に書いたMDMとは何か 〜今さら聞けないMDMの基礎〜の投稿で、MDMがどのように動作するかを簡単にご紹介しました。


(APNsが重要な役割を担う。APNsは Apple Push Notification service の略)

この図の通り、

  1. MDM上の操作でAPNsにPUSH通知要求が送られ
  2. APNsからiOS端末にMDM専用のPUSH通知が飛び
  3. iOS端末はMDMから命令を取得して実行結果を返す

ということでした。本稿では、この一連の流れにおけるTCP/IP通信について深堀りし、企業がMDMを導入するに際して気をつけたいネットワーク設定について解説します。

 

MDM+APNs+iOSのTCP/IP通信トライアングル

まず最初に、MDMを取り巻くTCP/IP通信の全体像を示します。


(矢印の方向は接続を確立しに行く方向。APNs〜iOS端末間の矢印が直感とは逆向きであることに注意)

NO 接続・通信 使用ポート 意識する必要性 説明
1 MDM 〜 APNs TCP/443
(TCP/2197)
オンプレ型のMDM MDM用のPUSH通知要求がAPNsに送られる
2 APNs 〜 iOS端末 TCP/5223 全てのMDM APNsからiOSにMDMの処理を開始せよと通知が送られる
3 iOS端末 〜 MDM TCP/443 全てのMDM iOS端末によるMDM命令の取得と実施結果の送信

以下それぞれの接続と通信内容について解説していきます。

 

1. MDM〜APNs間の通信

MDMが端末に命令を送ろうとするとき、MDMはまずAPNsに対して「iOS端末にPUSHを送ってくれ」と依頼します。(このときiOS端末を識別するプッシュトークンと呼ばれる情報を一緒に送りますが詳細は割愛します)


(iOS端末にMDMが「直接」命令を送りつけるのではない)

この際、MDMからAPNsへの通知要求に使われるのがTCP/443です。図で括弧付きで書いているTCP/2197は、TCP/443を使うのが難しい場合に代替で使用するポートです。Apple公式ドキュメント Communicating with APNs には以下の記載があります。

You can alternatively use port 2197 when communicating with APNs. 
You might do this, for example, to allow APNs traffic through your firewall
but to block other HTTPS traffic.

なお、従来はこの通知要求にTCP/2195(とTCP/2196)を使用していましたが、現在は非推奨となっており2021年3月からはサポート外となります。(参考 : Apple 製のデバイスで Apple プッシュ通知が届かない場合の「関連情報」の欄)

MDMからAPNsへの通知要求に関連するTCPポートを改めてまとめると

TCPポート番号 説明
TCP/443 通知要求で原則的に使用する
TCP/2197 TCP/443が使用できない時に使う
TCP/2195
TCP/2196
現在使用は推奨されていない
(TCP/2196は通知用というより、通知に失敗したiOS端末情報をAPNsから取得する為の通信用ポート)

となります。基本的にMDMからAPNsへの通知要求はTCP/443という理解で問題ないでしょう。

既にお気づきと思いますが、導入しようとするMDMサービスがSaaS型のものであればこれらのTCPポート情報を気にする必要はありません。MDM〜APNs間の通信は、MDMサービスを開発・保守・運用するMDMベンダーが気にすべきポイントだからです。

ただしかし上図のように、社内設置するオンプレミス型MDMを導入する場合は、イントラネットからAPNsに向けてTCP/443を許可してあげる必要があります。もしTCP/443を許可できないならTCP/2197を許可する必要がありますね。詳しくは導入するMDMのベンダー担当者に問い合わせて下さい。

なおAPNsのIP範囲は 17.0.0.0/8 です。TCP/443またはTCP/2197の通信を外向きに許可する宛先情報として指定しておきましょう。

 

2. APNs〜iOS端末間の通信

MDMを導入したのに正しく動作しない…という時は、多くの場合、APNsからiOS端末に通知が届いていないことが原因です。

APNsはMDMからのPUSH通知要求を受けてiOS端末にPUSH通知を送るのでした。では、そのPUSH通知はネットワーク的にはどのようにiOS端末に届くのでしょうか。

APNsからiOS端末に接続要求をして接続できてから送る?それとも、iOS端末がAPNsをポーリング(自分宛の通知がないかどうかをひたすら問い合わせ続けること)する?

実は起動直後のiOSは、APNsに対しTCP/5223で永続的な接続を確立しにいきます。MDMから通知要求を受け取ったAPNsは、そのピアにPUSH通知用データを送り、iOS端末側には即座に伝わります。前述したような、APNsからいちいちiOS端末に接続しにいったり、iOSがAPNsにポーリングするのでは、安定した通知にはならないですね。ですから、TCP/5223はPUSH通知の根幹であり、MDMの要(かなめ)なのです。

閉域網を使っていたりVPNを経由する環境では、多くの場合、社内・グループ内のネットワーク設定の調整が必要になるでしょう。ネットワーク 17.0.0.0/8 にあるAPNsに接続確立できるよう 外向き TCP/5223 を許可するようにして下さい。

万が一 /8 という広範囲での許可が難しい場合、Apple の公式ドキュメントを参考に以下のレンジを全て指定すると良いでしょう。(参考 : Apple 製のデバイスで Apple プッシュ通知が届かない場合)

  • 17.249.0.0/16
  • 17.252.0.0/16
  • 17.57.144.0/22
  • 17.188.128.0/18
  • 17.188.20.0/23

なお Apple公式ドキュメントによると、TCP/5223を通せない場合にTCP/443をフォールバックとして使うことになっていますが、iOS端末とAPNsの間に通信を一度復号して中身を監視するようなプロキシがあると巧く動作しません。

またこのフォールバック用 TCP/443 が使われるのは、セルラーモデル端末でモバイル通信をOFFにしている時ということが知られています。「TCP/5223 がダメなら自動で TCP/443 を使ってくれる、だからTCP/443さえ許可すれば良い…」という意味ではありませんので注意して下さい。

結局のところMDMの導入では、イントラネットからAPNsに対して外向きTCP/5223を通すのが無難ということになります。

 

3. iOS端末〜MDM間のネットワーク疎通

さて、APNsからPUSH通知を受け取ったiOS端末では、mdmdというプロセスが動き始めます。


(Apple Configurator2 のコンソール画面で mdmd の動作を確認できる)

mdmdは、命令をMDMに問い合わせたり、命令実行の結果をMDMに伝えたり、更に次の命令を受け取ったりします。この通信に使用されるのが、iOS端末からMDMに対するTCP/443です。


(命令の取得と直前の命令実行結果の送出を1リクエスト内で同時に行う)

もし社内ネットワークから外向きTCP/443を制限している場合、MDMサービスのIPに対する外向きTCP/443は最低でも許可する必要があります。またオンプレ型MDMの場合は、MDMサーバにTCP/443で接続できるようローカルネットワークのルータやスイッチ、VLANの設定等を確認する必要があります。

 

以上、MDMの導入で気をつけておきたいネットワーク設定について紹介しました。最後に参考となる Apple 公式ドキュメントへのリンクを一覧しておきます。

ちなみにネット上にある情報の一部には、本稿で説明したMDMに関係する全ポート(TCP/443,2195,2196,2197,5223)を許可するよう記述しているものもあります。が、やみくもに許可するのは企業内ネットワークのポリシーとして不適切ですので、本稿を参考に必要最低限の設定にして下さい。

iOSアプリ開発で悩んだ時に、いつでも相談できる安心感

課題に直面する度に、ネットを検索して彷徨って、断片的な知識でオペレーションすることを繰り返していませんか?

B2C/B2Bの両分野で国内随一の知見と御支援実績を誇る弊社を、いつでも相談できる貴社の相談窓口として頂くことができます。

本サイトに裏付けられた情報の幅広さと深さで、貴社のお悩みを解決いたします。

本サイトはACNメンバーの(株)フィードテイラーが運営するエンタープライズiOS情報サイトです

最近の投稿