NT-02.1ネットワーク拡張の権限を手動で許可する必要がある理由
Clash 系クライアント(Clash Verge や Clash Plus など mihomo カーネルを採用したアプリを含む)がシステムレベルの通信を制御するには、macOS が提供する NetworkExtension フレームワークに依存している。このフレームワークは macOS Catalina 以降、旧来のカーネル拡張(kext)を段階的に置き換えたもので、ユーザー空間で動作するためカーネル空間よりも安全境界が明確になった一方、新しいクライアントを導入するたびにシステムがユーザーへ明示的な確認を求めるという代償がある。これはクライアントの不具合ではなく、システム側の設計仕様である。
具体的には、クライアント起動時に「システム拡張がブロックされました」と表示されたり、設定でプロキシモードや TUN モードを有効化しても反応がなく、ボタンを押しても何も起こらないといった現象が挙げられる。これらの根本原因はほぼ一つに絞られる。ネットワーク拡張がシステム設定でまだ明示的に許可されていないということだ。システムはネットワーク層を制御しようとする拡張に対してデフォルトで慎重な姿勢を取るため、クライアント自体に問題がなくても、許可の手順を一度踏まなければ機能しない。
macOS Ventura(13)以降、ネットワーク拡張のスイッチは「セキュリティとプライバシー」から「プライバシーとセキュリティ」内の独立した項目へ移動している。旧バージョン向けの記事にあるメニュー階層は多くが古くなっているため、以下の手順に従えばよく、過去のスクリーンショットを参照する必要はない。
NT-02.2システム設定でネットワーク拡張を段階的に許可する
ネットワーク拡張の許可には2つの経路がある。ポップアップが最初に表示された時点でその場で許可するケースと、ポップアップを見逃したり閉じてしまった後に手動で許可を追加するケースだ。実際の操作では通知音などに紛れてポップアップをタップし損ねることも多いため、両方の手順を把握しておく必要がある。
- クライアントを開き、プロキシモード(または TUN モード)を有効化しようとすると、「ネットワーク拡張」という文言を含む通知が表示される。通知をタップするか、システム設定を開く。
- 「システム設定」→「プライバシーとセキュリティ」に進み、画面の下部にある「ネットワーク拡張」の項目を探す(バージョンによっては「ログイン項目と拡張機能」内にある場合もある)。
- 項目を開くと、インストール済みクライアントの拡張名がチェックボックスとともに表示される。該当クライアントのスイッチをオンにして許可状態にする。
- この後、システムがログインパスワードの入力または Touch ID による確認を求める確認ダイアログを再度表示することが多い。これは本人確認のためのものでクライアント側の動作ではないため、通常どおり入力すればよい。
- クライアントに戻ってプロキシまたは TUN モードを再度有効化すると、正常に機能し、ステータスバーやメイン画面に接続中または接続済みと表示される。
「プライバシーとセキュリティ」画面に「ネットワーク拡張」の項目自体が見当たらない場合、クライアントの拡張登録が完了していない可能性が高い。まずクライアントを(ウィンドウを閉じるだけでなく)完全に終了させ、再度起動して登録処理を発生させたうえで、設定項目が表示されるか再確認する。
| 現象 | 考えられる原因 | 対処方法 |
|---|---|---|
| 設定にネットワーク拡張の項目が見つからない | 拡張の登録が完了していない | クライアントを完全終了してから再起動する |
| スイッチをオンにしても接続できない | システムに以前の拒否状態がキャッシュされている | スイッチをオフ→クライアント再起動→スイッチを再度オン |
| パスワード認証後に反応がない | 認証がタイムアウトしたか、システムプロセスが更新されていない | 確認ダイアログで長く待たず、スイッチを再度タップする |
NT-02.3キーチェーンのポップアップが繰り返し表示される場合の対処
もう一つよく詰まるポイントが、キーチェーン(Keychain)の権限ポップアップが繰り返し表示される現象だ。よく見られるのは「“キーチェーンアクセス”に機密情報の利用を許可しますか?」といった証明書アクセスの確認である。この種のポップアップはネットワーク拡張の権限とは別の仕組みで、クライアントが本機の証明書や設定用の鍵を読み書きする際にシステムが発行するセキュリティ確認であり、許可されていないプロセスが機密情報を読み取るのを防ぐことが目的だ。
通常はポップアップが表示された時点で「許可」ではなく「常に許可」を選択すれば、システムがその許可を記憶し、次回以降は再表示されなくなる。クライアント起動のたびに同じキーチェーンの要求が繰り返し表示される場合、原因は次の2つのいずれかであることが多い。
- 「許可」を選択しており、その場のセッションのみ許可された状態になっているため、次回起動時に新規の要求として扱われている。
- キーチェーン内に同名だが署名情報が一致しない古い項目が残っている(クライアントをアンインストールして再インストールした後によく発生)ため、システムがどちらを信頼すべきか判断できず、毎回確認を求めてくる。
後者に該当する場合、標準アプリの「キーチェーンアクセス」を開き、検索欄にクライアント名や関連する証明書名のキーワードを入力して、同名の項目が複数存在しないか確認する。古いバージョンの残留物と判断できたら余分な項目を削除し、クライアントを再起動して、新たに表示される許可要求で「常に許可」を選択すればポップアップの繰り返しは解消される。
キーチェーンの項目を削除する前に、その項目が現在調査中のクライアントに関連していることを必ず確認する。システムや他のアプリが依存している証明書を誤って削除しないよう注意すること。用途が判断できない項目は削除せず残しておき、明らかに重複していて古いバージョンのタイムスタンプを持つ項目のみを対処すること。
NT-02.4ネットワーク拡張と TUN モードの関係
macOS がこの種の権限に対して特に慎重な理由は、ネットワーク拡張フレームワークこそが TUN モードの実装基盤であることにある。TUN モードはシステム内に仮想ネットワークインターフェースを構築し、本来システムプロキシ設定を経由しないコマンドラインツールや一部のサンドボックスアプリの通信もまとめて制御下に置く。この「グローバルな通信経路を丸ごと制御する」能力に何の制限もなければ、悪意あるプログラムが通信の傍受や改ざんに悪用する可能性がある。そのため、この機能を要求するすべてのプロセスに対してシステムはユーザーによる明示的な確認を必須としており、その許可状態はアプリの署名と紐づけられる。署名が変わる(インストールパッケージの入手元が変わるなど)と許可状態は無効になり、手順を再度やり直す必要が生じる。
この仕組みを理解しておけば、TUN モードのスイッチを押しても反応がないという状況に遭遇しても、クライアント自体の不具合をまず疑う必要はない。最初に確認すべきは常に「プライバシーとセキュリティ」内のネットワーク拡張のオン/オフ状態であり、これが最もよくある、かつ見落とされやすいポイントである。
NT-02.5よくあるエラーと切り分けの考え方
権限のポップアップ自体以外にも、許可完了後に発生し得る細かなケースがいくつかある。以下に代表的な例を挙げるので、照らし合わせて確認してほしい。
- 拡張がシステムにブロックされていると表示され、設定のスイッチがグレー表示でタップできない:多くの場合 macOS の整合性保護機能が働いている。一度 Mac を再起動すると拡張の登録状態が再読み込みされるので、再起動後に設定でスイッチが操作可能になっているか確認する。
- パスワード入力後に画面が固まって動かない:数秒待つ。システム拡張の読み込みには多少の遅延があるためだ。30 秒以上経っても変化がない場合は、クライアントのプロセスを終了させてから再起動する。
- 複数の Clash 系クライアントを切り替えて使うと権限同士が競合する:同時に有効化するネットワーク拡張は1つのクライアントに限定する。クライアントを切り替える前に、前のクライアントの設定でスイッチをオフにし、仮想ネットワークインターフェースが同時に占有されないようにする。
権限関連の問題はほとんどの場合クライアントの再インストールなしで解決できる。上記の手順に沿って設定状態を一つずつ確認すれば、数分で解決できるはずだ。ネットワーク拡張の許可とキーチェーン項目の整理を済ませても問題が続く場合は、インストールパッケージ自体が壊れている可能性を考え、対応プラットフォーム用のファイルを再度ダウンロードするとよい。