まず4種類の権限要求を見分ける

macOS向けのClashクライアントは、どれも同じ仕組みではありません。Clash Verge RevやClashX Metaなどは、画面構成やコアの起動方法、権限の扱いが異なります。mihomoコアを使っていても、Appleのネットワーク拡張で通信を制御するとは限りません。ダイアログに表示されたアプリ名、開発元、要求されている操作を確認してから対処しましょう。

初回起動の許可、ネットワーク拡張の承認、特権ヘルパーサービス、キーチェーンへのアクセスは、それぞれ別の仕組みです。アプリの起動を許可しても、ヘルパーサービスのインストールが許可されたわけではありません。サービスをインストールできても、システムプロキシが有効になるとは限りません。すべての警告を「Clashの権限不足」とひとまとめにしないでください。

表示される警告・現象該当する仕組みまず確認すること
開発元を確認できない/開けないGatekeeperによる起動時のチェック入手元、署名、「プライバシーとセキュリティ」の設定
VPN構成の追加またはネットワーク拡張の許可を求められるVPN構成、Network Extension、システム拡張要求元と拡張機能の種類
ヘルパーツールのインストール時に管理者パスワードを求められる特権サービスのインストール現在のクライアントから開始したインストール操作か
「ログイン」キーチェーン内の項目へのアクセスを求められる保護された認証情報へのアクセスキーチェーン項目の名前とアクセス元のプロセス

初回起動がブロックされる場合:入手元とインストール先を確認

アプリケーションフォルダに移動してから起動する

  1. Appleメニューの「このMacについて」でチップの種類を確認します。Appleシリコン搭載MacにはApple Siliconまたはarm64版、Intel搭載Macにはx64版のインストーラを選んでください。
  2. ダウンロードしたディスクイメージを開き、アプリを「アプリケーション」(/Applications)にドラッグします。ディスクイメージ内で起動しているアプリを終了し、インストール先のアプリを起動してください。
  3. 起動がブロックされた場合は、まずダウンロード元とアプリ名を確認します。入手元が信頼でき、開発元の確認だけが理由でブロックされたアプリに限り、「システム設定」でそのアプリの例外を設定してください。

macOS Ventura 13、Sonoma 14、Sequoia 15では、「システム設定」→「プライバシーとセキュリティ」の下部にあるセキュリティ関連の通知を確認します。条件を満たす場合は「このまま開く」が表示されます。macOS Monterey 12以前では、「システム環境設定」→「セキュリティとプライバシー」→「一般」を開きます。表示される文言はOSのバージョンにより異なる場合があります。

一部の旧バージョンでは、FinderでアプリをControlキーを押しながらクリックし、「開く」を選べます。macOS Sequoia 15では、Gatekeeperの一部チェックを回避する手順が変更されています。右クリックからの起動がすべてのバージョンで有効とは限りません。

ネットワーク拡張とTUNは別の設定

TUNは仮想ネットワークインターフェースの仕組みです。クライアントによっては特権サービスでコアを起動し、インターフェースやルートを設定します。一方、AppleのNetwork Extensionを使って通信を制御する実装もあります。「VPN構成を追加」や「システム拡張を許可」という表示が出るかどうかは、クライアントの実装によって異なります。「TUN」という名称だけでは判断できません。

そのため、Clash Verge RevでTUNを有効にしてもVPN構成のダイアログが表示されないからといって、インストール失敗とは限りません。別のクライアントでVPN構成の許可を求められても、同じサービス導入手順が必要とは限りません。各クライアントの設定ガイドと起動ログを確認してください。

表示された要求に応じて設定を確認

「システム設定」の項目は、macOSのバージョンやインストール済みコンポーネントによって変わります。見つからない場合は、設定内の検索欄で「VPN」や「拡張機能」を検索してください。要求履歴も該当コンポーネントもないなら、権限を補うために別のソフトを追加する必要はありません。

読み取り専用コマンドで状態を確認

sw_vers
systemextensionsctl list
ifconfig -l
scutil --nc list

sw_versでmacOSのバージョンを確認できます。systemextensionsctl listは登録済みのシステム拡張を表示しますが、すべてのアプリ拡張や特権サービスを網羅するわけではありません。ifconfig -lではインターフェース名を確認でき、scutil --nc listはシステムに登録されたネットワーク接続サービスの確認に役立ちます。

utunインターフェースが表示されても、システムにトンネルインターフェースがあることしか分かりません。iCloudの機能や別のVPN、ネットワークツールも作成する場合があります。「utunが表示された」ことだけを、ClashのTUNが通信を正常に制御している証拠にしないでください。

サービスモードの導入:管理者の許可が必要な理由

通常のユーザープロセスでは、システムレベルのルート操作をすべて実行できるとは限りません。一部のクライアントは特権ヘルパーサービスを使って必要な操作を行い、画面アプリを常に管理者権限で動かさずに済むようにしています。Clash Verge Revでは、サービスモードがTUNによる通信制御に関係します。ただし、サービスのインストール項目の名称や場所はバージョンによって変わるため、現在のバージョンの設定で「サービスモード」やサービス状態を確認してください。

  1. システムプロキシやルートを変更する他のクライアントを終了し、複数のプログラムがネットワーク設定を同時に復元・上書きしないようにします。
  2. サービスのインストールまたは修復は、使用中のクライアント内から実行し、システムの確認画面に表示されたアプリ名も確認してください。
  3. 管理者の許可が必要な場合は、このMacの管理者アカウントの認証情報を入力します。Apple Accountのパスワードやサブスクリプションサービスのパスワードではありません。
  4. インストール後、クライアントに戻ってサービスの状態を確認し、その後でTUNを個別に有効にします。ログに権限不足、インターフェース作成失敗、ルート追加失敗がないか確認してください。

サービスをインストールした後も権限エラーが出る場合は、クライアント本体とヘルパーサービスが同じインストール由来か確認します。古いアプリを直接上書きしたり、複数のコピーを残したりすると、画面アプリだけが更新され、サービスは古いままになることがあります。まずクライアント内のサービス修復機能、またはアンインストール後の再インストールを利用してください。出所の分からないシステムファイルを手作業で削除しないでください。

キーチェーンの警告:まず対象の項目を確認

「アプリケーションがキーチェーンに保存された機密情報を使用しようとしています」という表示は、プロセスが保護された項目へのアクセスを求めていることを示します。対象は、クライアントに保存した認証情報やプロキシ認証など、実装によって異なります。サブスクリプションURLの読み込みに必須の手順ではなく、警告が出ただけで要求が妥当とも限りません。

管理者パスワードとキーチェーンのパスワードを区別する

macOSの復旧機能や管理者によるパスワードリセットを使った場合、「ログイン」キーチェーンには古いパスワードが残っていることがあります。新しいログインパスワードでデスクトップに入れても、元のキーチェーンを解除できるとは限りません。Appleのキーチェーン復旧手順に従い、関係のないサブスクリプションのパスワードを繰り返し試さないでください。

「キーチェーンアクセス」で要求内容を確認

  1. Spotlightで「キーチェーンアクセス」を検索して開きます。新しいmacOSの「パスワード」アプリでは、すべてのキーチェーン項目を管理できるわけではありません。
  2. 「ログイン」キーチェーンを選び、ダイアログに表示された項目名で検索します。推測で複数の項目を削除しないでください。
  3. 該当する項目の情報を開き、名前、種類、確認できるアクセス制御情報を調べます。アクセスを求めているプロセスが、現在インストールされているクライアントのものか確認してください。
  4. 今回のアクセスが妥当だと確認できたら、まず「許可」を選んで一度だけアクセスを認めます。アプリの身元と継続利用の必要性を確認してから、「常に許可」を検討してください。

アプリの更新後に再度確認を求められても、必ずしもパスワードが間違っているわけではありません。アプリの署名やパス、キーチェーン項目のアクセス制御条件が変わると、再確認が必要になることがあります。起動のたびに表示される場合は、項目名と要求元のプロセスを記録し、「ダウンロード」フォルダと「アプリケーション」の両方から同時に起動していないか確認してください。

プロキシと関係のない機密項目へのアクセスを求められたら、まず「拒否」を選び、その機能がどこから要求されたか確認してください。デフォルトのキーチェーンをリセットすると、保存済みのパスワードを使えなくなることがあります。一般的な最初の対処としてリセットしないでください。

許可後の確認:ポート、システムプロキシ、ルートを個別に確認

権限を許可したことは、システムが特定の操作を認めたことを意味するだけです。通信できるか確認するには、コアの起動、設定の読み込み、ルールとプロキシグループの有効性も調べる必要があります。まずTUNを無効にしてシステムプロキシだけを検証し、利用できることを確認してから、TUNが必要なアプリをテストしてください。

手順1:実際の待ち受けポートを確認

以下の例では、現在の設定で混合プロキシポートが7890だと仮定しています。これは設定例であり、すべてのクライアントの既定値ではありません。設定画面に別のポートが表示されている場合は、コマンド内の数字も変更してください。

mixed-port: 7890
allow-lan: false
mode: rule

これは設定の一部にすぎず、ノード、プロキシグループ、ルールを含む完全なProfileの代わりにはなりません。例を使うためにサブスクリプション設定を上書きしないでください。mixed-portはHTTPとSOCKSのプロキシ接続を受け付けます。外部コントローラーのポートは用途が異なります。設定で9090を使っていても、ブラウザのプロキシポートに指定しないでください。

lsof -nP -iTCP:7890 -sTCP:LISTEN
scutil --proxy
curl --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 20 -I https://example.com

1つ目のコマンドで待ち受けプロセスを確認し、2つ目で現在のシステムプロキシ状態を表示します。3つ目は指定したプロキシポートを使ってページにリクエストを送ります。接続先からHTTP応答があれば、そのプロキシリクエストが通ったことは確認できますが、すべてのサイト、UDP通信、アプリが経由したことまでは分かりません。

手順2:システムプロキシのポートが一致しているか確認

macOS Ventura 13以降では、「システム設定」→「ネットワーク」→現在のネットワークサービス→「詳細」→「プロキシ」を開きます。クライアントの設定にあるアドレスとポートを照合してください。ローカルプロキシでよく使われるアドレスは127.0.0.1です。Wi-FiとEthernetは別々のネットワークサービスです。接続先を切り替えた場合は、実際に使っているサービスを再確認してください。

システムプロキシがアプリに適用されるかどうかは、そのアプリがシステム設定に従うかによります。ターミナルのプログラムもシステムプロキシを自動で読み込むとは限らないため、上記のcurlコマンドではプロキシを明示しています。ターミナルのコマンドが直接接続しただけで、ネットワーク拡張の許可に失敗したと判断しないでください。

手順3:TUNとDNSを続けて確認

TUNを有効にしたら、これまでシステムプロキシに従わなかったアプリからリクエストを送り、クライアントの接続履歴とログを同時に確認します。接続が現在のコアに届いたことを確かめてから、適用されたルールとプロキシグループを調べてください。

ログにDNSタイムアウトが表示される場合は、DNSの待ち受け設定やルート、ほかのネットワークツールとの競合を確認してください。キーチェーンの許可を繰り返しても解決しません。fake-ipを使う設定では、ドメイン名の解決が想定した経路を通っているかも確認します。仮想インターフェースがあるだけでは、DNSやルールによる振り分けが正常とは限りません。

警告が繰り返し表示される/通信できない場合の切り戻し手順

  1. 状況を記録:macOSのバージョン、クライアント名とバージョン、ダイアログの文面、エラーが起きたタイミング(起動、サービスのインストール、TUNの有効化)を記録します。スクリーンショットを共有する前に、サブスクリプションURL、トークン、アカウント情報を隠してください。
  2. 使用中のクライアントでTUNを無効化:クライアントがルートを正常に復元できるように終了し、ネットワークが復旧するか確認します。
  3. システムプロキシを無効化:現在のネットワークサービスの「プロキシ」画面を確認します。アプリが異常終了してローカルプロキシの設定だけが残り、待ち受けプロセスが停止していると、ブラウザのリクエストが応答のないポートに送られることがあります。
  4. 競合するコンポーネントを1つずつ停止:ほかのVPNを一時的に切断し、必要に応じて確認済みのフィルタを無効にしてから、プロキシクライアントを1つだけ起動してテストします。ネットワーク設定を一度にすべて削除しないでください。
  5. 該当するコンポーネントを個別に修復:サービスのエラーにはサービス修復機能、キーチェーンのエラーには対象項目の確認、システム拡張のエラーには該当する許可履歴の確認で対処します。動作するProfileを残したまま設定を調整してください。

クライアントを変更する前に、古いクライアントのシステムプロキシとTUNを無効にし、付属のサービス削除機能でヘルパーコンポーネントを処理します。アプリのアイコンをゴミ箱に移動しただけでは、システム拡張、VPN構成、バックグラウンドサービスが残ることがあります。一方、所属先を確認できないコンポーネントも削除しないでください。