Mac VPNクライアント:Network ExtensionとSystem Extension
Network Extensionは機能で、System Extensionsは配信の仕組みです。両者を分けて考え、macOSの承認手順と読むべきログを選びましょう。
Appleの二つの用語が同じものを指すかのように使われ、その混同が人を間違った設定パネルへ導きます。Network Extensionは機能を表します。VPNトンネル、プロキシ、フィルタを実装するためのサポートされた方法です。System Extensionsはユーザー空間の拡張機能の配信と承認の仕組みを表します。現代のMac VPNクライアントは通常どちらも必要とするため、どちらか一方のラベルだけでは症状を説明できません。二つを分けることで、どの部品を調べ、どの承認手順を待つべきかが分かります。
二つの問い、一つのラベルではない
どのようにインストールされるかを問う前に、その部品が何をするのかを問いましょう。機能はどのプロバイダクラスが存在するか、つまりどのコードがパケットを扱うかを決めます。配信の仕組みは、バイナリがどう届き、どう承認され、状態がどこに記録されるかを決めます。製品は古いリリースでシステム拡張を配信せずにパケットトンネルを実装できますし、トンネル以外を実装するシステム拡張を配信することもあります。
カーネル拡張は人が混同する三つ目の用語です。特権ネットワークコードを動かす古い方法で、別の承認が必要で、Appleは何年も前から開発者をそこから遠ざけています。カーネル拡張の承認手順を現代のクライアントに当てはめると、決して現れないダイアログに時間を浪費します。
使用しているmacOSバージョンについてベンダーの展開ノートを読みましょう 以前のリリースのフォーラム投稿ではなく。アーキテクチャは何度も変わり、手順はすぐ古くなります。カーネル拡張の承認に触れるノートは、製品の別の時代を説明しています。
Network Extensionが提供するもの
このフレームワークは一般的なネットワーク作業のためのプロバイダ種別を提供します。VPNトラフィック用のパケットトンネル、アプリごとのフロー用のアプリプロキシ、トラフィックを検査するコンテンツフィルタ、リゾルバの挙動のためのDNSプロキシ処理です。プロバイダ種別が拡張機能にできることを決め、二つのプロバイダを配信するクライアントは二つの異なる仕事をしている可能性があります。
これは診断で重要です。同じ接続の症状がトンネル、フィルタ、DNSプロキシのどれからも来るからです。ウェブサイトをブロックするのはフィルタの判断、プライベートサブネットに届かないのは通常トンネルの判断、誤ったアドレスを解決するのは通常リゾルバの判断です。プロバイダ種別を名指しすれば、どのログを読む前に対象を絞れます。
フレームワーク自体はプライバシー姿勢を示しません。ユーザー空間の拡張機能にも権限、設定、運営者が存在するため、アーキテクチャは信頼の信号ではなく実装の詳細として扱いましょう。エンドポイントを誰が運営し、何を収集する設定なのかを尋ねてください。
System Extensionsが変えるもの
この仕組みは特権コードをカーネルからユーザー空間へ移し、OSが同意を求める方法を変えます。有効化はインストールとは別の手順で、ユーザーまたはMDMプロファイルが許可する必要があります。インストールされるが有効化されないクライアント Applicationsフォルダに存在して見えても、接続には何もしません。
状態はアプリではなくシステムが記録するため、問い合わせることができます。以下のコマンドはシステムが認識している拡張機能とその有効化状態を一覧します。
systemextensionsctl list
scutil --nc list
最初のコマンドは部品がインストールされ有効化されているかを答え、二つ目はシステムが保持するVPN設定を一覧します。これは別の問いで、接続プロファイルが壊れているのではなく欠けている場合に重要なことが多いものです。
症状ごとにどちらを調べるか
設定パネルを開く前に症状を層に合わせましょう。設定が欠けていればプロファイルの問い、インストール済みだが無効な部品は配信の問い、トラフィックを通せない有効な部品は機能の問いです。
| Symptom | First place to look |
|---|---|
| No VPN entry at all | Configuration profile or scutil list |
| Client installed, nothing happens | Extension activation state |
| Tunnel up, private host unreachable | Tunnel provider routes and policy |
| One app blocked, others fine | Filter or app proxy provider |
最後の二行ではログストリームが共通の証拠です。ネットワーク拡張のサブシステムを読めばどのプロバイダがフローを扱ったか分かり、フィルタの判断はトンネルの失敗とは違って見えます。ユーザーが両方をVPNの不調と表現しても同じです。
log show --last 10m --predicate 'process == "nesessionmanager"'
メニューバーにアイコンがあるからといって拡張機能が有効とは結論づけないでください。アイコンは有効化の失敗後も残り、古いアイコンはサポートへの連絡が誤った場所から始まる最も一般的な理由の一つです。代わりに有効化状態を読みましょう。システムが記録しているのはそれです。
承認、MDM、カーネル拡張の神話
管理されたMacでは承認手順はMDMプロファイルに属し、System SettingsでAllowをクリックしたユーザーも更新されていないポリシーによって止められることがあります。ユーザーに何かをクリックさせる前に、そのフリートでどの仕組みが拡張機能を承認するのかをデスクトップチームに尋ねてください。
管理されていないMacでは承認のプロンプトは一度だけ表示され、拡張機能を再インストールするまで拒否が永続することがあります。その挙動は、OSアップグレード前は動作していたクライアントが今は決して確立しない接続を報告するマシンを説明します。
導入するクライアントについて、プロバイダ種別、有効化状態、承認の仕組みを書き留めてください。この三つの事実は、機能か配信かという議論を再び開くことなく、Mac VPNに関する今後の質問のほとんどに答えます。