Apple IncludeAllNetworks:それでもVPNを迂回するもの
IncludeAllNetworksは文書化された例外付きで通信をVPN経由にします。キャリアが直接提供するセルラー通信も例外です。迂回を責める前にプロファイルを確認してください。
MDMコンソールでプロファイルを開き、IncludeAllNetworks にチェックが入っているのを見て、その端末のすべてのパケットがトンネルに入ると考えてしまう。Apple自身のスキーマはそう約束していない。この設定は例外付きで通信をVPN経由にするもので、例外には任意のスイッチもあれば、システムが動き続けるために必須のものもある。以下の解説はその文書をプロファイルから外側へたどるので、最初に読むのは設定そのものであり、まだ誰も特定していない端末のキャプチャではない。
混乱の大半はこのうち二つの例外で説明でき、どちらもセルラー通信に関わる。
キャプチャではなく管理プロファイルから始める
パケットログを読む前に、管理VPNプロファイルのスキーマを開いてプロパティの説明を読む。説明が扱っているのは例外付きのルーティングであり、完全なトンネルの保証ではないことに注意する。この一文が、その後見るすべての解釈を決める。
コンソールにいる間に三つを書き留める。設定を運ぶペイロード識別子、端末上の管理OSのリリース、そして実際にインストールされているVPN実装はどれか。あるキーが文書に書かれていることは、第三者のクライアントが自分の設定画面にそれを出しているかどうかを何も語らない。
セルラーの例外を二つの別のケースとして読む
対応する構成では、ExcludeCellularServices はインターネット経由でルーティング可能なセルラーサービスの通信を除外するが、それは IncludeAllNetworks と一緒に有効なときだけである。スキーマはこのカテゴリの例としてWi-Fi Calling、IMS、メッセージ関連サービスを挙げている。これらのフローは設計上トンネルの外に出ることがあり、例外が有効な間はプロファイルをどう見直してもトンネルを通らない。
二つ目のケースは別物で、どのスイッチにも依存しない。一部のキャリアはセルラーサービスをインターネット経由ではなく自社網で直接提供しており、Appleはこのカテゴリを常にトンネルから除外されると文書化している。これは前述の条件付きのインターネット経由ケースではないので、すべての除外チェックを外したプロファイルでも捉えられない。この二つを一つの機能として扱うことが、漏えいをめぐる議論の大半の出発点である。
要件が文字どおり「どのパケットも決してトンネルを出ない」というものであれば、この二つ目のケースの時点でセルラー端末では不可能である。設計レビューの前に知っておく必要があり、後では遅い。
自分のプラットフォームが実際に公開するキーを確認する
スキーマは、必要なネットワーク接続と captive ネットワークの通信、さらにローカルネットワークや端末間通信といった他のカテゴリ向けの個別の制御についても説明している。これらは文書化された構成上の関係であり、自分の端末の観測ではない。管理しているOSのリリースに対して一つずつ確認する。入手可否はリリース間で変わり、黙って無視されるプロファイルキーは、仕事をしているキーとまったく同じに見えるからだ。
この判断のための最小ペイロードは通常こうなっており、セルラーのフラグはテンプレートから継承するのではなく明示する。
<key>IncludeAllNetworks</key><true/>
<key>ExcludeCellularServices</key><true/>
<key>ExcludeLocalNetworks</key><true/>
配布されたプロファイルにキーが欠けていると、端末はそのキーの既定値に戻る。その値はテンプレートの作者が想定していた値とは限らない。テンプレートだけを読むのではなく、配布されたペイロードとテンプレートを比較すること。
見慣れないホスト名が何なのかを突き止める
怪しい名前が現れたら、その観測が実際に何を表しているのかを確定する。システムが要求した名前なのか、応答したリゾルバなのか、接続先なのか、ツールが印字したラベルなのか。キャリアに関係する名前だけでは、起点のプロセスも適用された例外も特定できない。それを迂回の証拠として追いかけるのは、サポートのやり取りが一週間を誤った層で過ごす方法である。
対応している診断機能を使い、プロファイルを所有する管理者と話し、そのうえでフローを意図したポリシーと比較する。期待どおりだったかを教えてくれるのは、ホスト名ではなくこの比較である。
システムを弱めるのではなく要件を解く
キャプチャを静かにするためだけに、説明のないルート証明書を入れたり、システムサービスを止めたりしない。キャプチャを静かにすると証拠が消え、除外はそのまま残る。それは最初の問いより悪い結末だ。準拠規則がプラットフォームの意図的な除外カテゴリを禁じているなら、スキーマの該当節を手に、その衝突を端末とネットワークの所有者へ持っていく。
どの例外が通信を説明したのか、それが適用されるOSのリリース、それを生んだプロファイル値を記録して解説を閉じる。接続アイコンは、OSの通信範囲がどこまで及ぶかについての相容れない二つの前提を調停できない。