まず切り分け:起動ブロック、ネットワークの許可、キーチェーンは別の問題

Mac向けのClash系クライアントは通常、GUI、プロキシコア、必要に応じてインストールするバックグラウンド補助サービスで構成されています。クライアントによってはネットワーク拡張も使用します。「壊れている」という警告はアプリの起動チェック時に表示され、ネットワーク拡張の許可は通信の制御に、キーチェーンのダイアログは認証情報の読み取りに関係します。それぞれ対処する場所が異なるため、管理者パスワードを何度も入力しても一度には解決しません。

表示される症状まず確認すること避けること
「壊れているため開けません」入手元、ダウンロードの完全性、署名、隔離属性システムのセキュリティチェックを無効にしない
「開発元を検証できません」「プライバシーとセキュリティ」にあるアプリの許可項目サブスクリプションの問題と決めつけない
GUIは開くが、TUNを起動できないコアのログ、サービスモード、ネットワーク拡張の権限キーチェーンの項目を先に削除しない
キーチェーンへのアクセスを何度も求められる要求元の名前、項目名、ログインキーチェーンの状態見覚えのないプログラムに「常に許可」を選ばない

作業を始める前に、macOSのバージョン、クライアント名とバージョン、コア名、エラーメッセージの全文を記録してください。以下のシステム設定の手順はmacOS 13、14、15を基準にしています。ほかのバージョンでは項目名が異なる場合があるため、実際の画面を確認してください。「Clashが開かない」とだけ記録しても、アプリがブロックされたのか、コアの起動に失敗したのかを区別できません。

インストール前にAppleシリコン、Intel、アプリの保存場所を確認

まずCPUアーキテクチャに合うものを選び、その後で権限を設定

  1. Appleメニューから「このMacについて」を開きます。「チップ Apple Mシリーズ」と表示される場合は、arm64またはaarch64のインストーラーを選びます。Intelプロセッサと表示される場合は、x64またはx86_64を選んでください。
  2. Universalと記載されたアプリには通常、両方のアーキテクチャが含まれますが、クライアントが要求するmacOSの最低バージョンも確認してください。対応するmacOSのバージョンはリリースごとに異なり、「Clash」という名前だけでは判断できません。
  3. ディスクイメージを開き、アプリを「アプリケーション」フォルダにドラッグします。ディスクイメージを取り出したら、「アプリケーション」から起動してください。ダウンロードフォルダや圧縮ファイル、マウントしたインストーラーから常時実行するのは避けてください。
  4. システムプロキシ、ルーティング、DNSの設定が複数のプログラムによって同時に変更されないよう、ほかのプロキシクライアントを終了してください。

「アプリケーション」→「ユーティリティ」→「ターミナル」から、読み取り専用の次のコマンドを実行し、macOSのバージョンと現在のターミナルのアーキテクチャを記録することもできます。

sw_vers -productVersion
uname -m

Appleシリコン上でネイティブ起動したターミナルでは通常arm64、Intelでは通常x86_64と表示されます。ターミナルがRosettaで変換実行されている場合、結果は変換後の環境を示すことがあります。最終的には「このMacについて」の表示を基準にしてください。AppleシリコンでIntelアプリを動かすにはRosettaが必要な場合がありますが、Rosettaをインストールしても、署名の破損やネットワーク権限の不足は解決しません。

「壊れているため開けません」と表示されたら、入手元を確認してから隔離属性に対処

手順1:信頼できる配布元からインストーラーを入手し直す

アプリを終了し、プロジェクトの開発元が公開しているリリースページからインストーラーを再ダウンロードしてください。出所のわからない再パッケージ版は使わないでください。システムに「コンピュータに損害を与える可能性があります」と明示された場合や、マルウェアが検出された場合は、起動を中止してください。通常の開発元未確認の警告に対する許可手順を流用してはいけません。

「壊れている」という警告は、ファイル転送の中断だけが原因とは限りません。署名の異常、アプリの内容の改変、Gatekeeperの評価結果が原因の場合もあります。隔離属性を削除してもアプリ自体は修復されず、プログラムの信頼性が証明されるわけでもありません。

手順2:システムに許可するための項目があるか確認

アプリを一度起動してから、Appleメニュー→「システム設定」→「プライバシーとセキュリティ」を開き、「セキュリティ」欄までスクロールします。該当アプリの「このまま開く」が表示された場合は、アプリ名と入手元を確認してから、画面の指示に従って認証してください。すべてのブロックでこのボタンが表示されるとは限りません。項目がない場合、Gatekeeperを全体的に無効にして強制起動するのは避けてください。

手順3:信頼できることを確認したアプリに限り、隔離属性を確認

以下のコマンドは、アプリが/Applications/Clash Verge.appにインストールされている場合の例です。アプリ名が異なる場合は、まずFinderで実際のパスを確認するか、アプリをターミナルにドラッグしてパスを入力してください。パスが一致しないコマンドをそのまま実行しないでください。

xattr -p com.apple.quarantine "/Applications/Clash Verge.app"
spctl --assess --type execute --verbose=4 "/Applications/Clash Verge.app"
codesign --verify --deep --strict --verbose=2 "/Applications/Clash Verge.app"

xattrは隔離属性を確認するコマンドです。属性が存在しないという表示は、その属性が設定されていないことを示すだけです。spctlはシステムによる起動時の評価、codesignは署名の完全性を確認します。後者2つの結果は、リリース情報と合わせて判断してください。署名チェックに合格しても配布元の信頼性が証明されるわけではなく、評価に失敗したからといって「隔離属性を削除すればよい」とは限りません。

xattr -d com.apple.quarantine "/Applications/Clash Verge.app"

このコマンドは、指定したアプリケーションバンドル自体の隔離属性だけを削除します。ディレクトリ全体を再帰的に処理したり、システム全体のセキュリティ設定を変更したりするものではありません。実行後も問題が解決しない場合は、リリース情報と署名結果を再確認してください。「アプリケーション」フォルダ全体に操作範囲を広げたり、むやみに管理者権限を付けたりしないでください。

ネットワーク拡張の許可場所:まずクライアントが実際に使用しているか確認

Clashはクライアントやコアのエコシステムを指す一般的な呼び名であり、すべてのアプリが同じmacOSのネットワーク機能を使うわけではありません。Network Extensionを使うクライアントもあれば、mihomoを使うGUIクライアントのように、特権ヘルパーサービスでTUNインターフェースを作成するものもあります。システム設定にネットワーク拡張のスイッチが見つからなくても、インストール失敗とは限りません。

ネットワーク拡張を使用するクライアント

  1. クライアントでVPN、ネットワーク制御、TUNに関する機能を有効にし、システムの許可要求を表示させます。この仕組みを実際に使用するクライアントの場合にのみ、該当する確認画面が表示されます。
  2. macOS 15では、「システム設定」→「一般」→「ログイン項目と機能拡張」→「ネットワーク機能拡張」を開き、該当する開発元またはアプリが許可されているか確認します。
  3. macOS 13、14でシステムソフトウェアがブロックされたという通知が表示された場合は、「システム設定」→「プライバシーとセキュリティ」に関連する通知がないか確認してください。VPN構成は「システム設定」→「VPN」でも確認できます。拡張機能の種類によって設定場所は異なります。
  4. 開発元の名前を確認してから許可してください。再起動が必要なのは、システムから明示的に要求された場合だけです。クライアントに戻って機能を再度有効にし、ログに権限エラーが残っていないか確認してください。

「VPN構成の追加を許可」と「システム拡張を許可」は、まったく同じ権限ではありません。Clash TUNを使うために、起動セキュリティを下げたり、SIPを無効にしたり、不明なカーネル拡張をインストールしたりしないでください。一般的な最新のユーザー空間プロキシでは、通常これらの操作はインストールの前提になりません。

組織管理のデバイスでは自分で許可できない場合があります

スイッチを変更できない場合や、組織によって管理されていると表示される場合は、「システム設定」でデバイス管理の情報を確認してください。MDMポリシーによってVPN、システム拡張、バックグラウンドサービスが制限されていることがあります。この制限はデバイス管理者に対応を依頼してください。クライアントを何度再インストールしても、管理ポリシーは回避できません。

サービスモードのインストール:管理者パスワードとキーチェーンのパスワード要求は別

mihomoを使うデスクトップクライアントでは、TUN、ルーティング、関連するネットワーク設定を行うために、サービスモードで特権ヘルパープログラムを実行する場合があります。サービスモードのインストールに成功しても、TUNが有効になったわけではありません。クライアントが該当操作を行うために必要な権限を追加するものです。

  1. アプリが「アプリケーション」フォルダにあることを確認し、そこから起動します。
  2. クライアントの「設定」で「サービスモード」「サービスをインストール」「サービスを修復」などの項目を探してください。たとえばClash Verge Revでは、通常「設定」→「サービスモード」に関連項目があります。ボタン名はインストールしたバージョンによって異なります。
  3. システムから管理者の許可を求められたら、アプリ名を確認してください。入力するのは、そのMacで管理者権限を持つアカウントのパスワードです。サブスクリプションのパスワードやApple Accountのパスワードではありません。
  4. インストール後、サービスの状態を確認してからTUNを有効にします。クライアントのログを開き、権限不足、コアの起動失敗、アドレスの競合などのエラーが残っていないか確認してください。

アップデート後、起動するたびにサービスの再インストールを求められる場合は、まず古いインスタンスを終了し、クライアントに備わっているサービスのアンインストール機能と再インストール機能を使ってください。不明な手順を参考に、/Library/LaunchDaemons内のファイルを手動で削除しないでください。ほかのソフトウェアのサービスを誤って削除すると、別の問題が発生します。

サービスのインストール失敗は、古いヘルパープログラム、アプリの保存場所の変更、管理ポリシーが原因の場合もあります。パスワードを何度も入力するのではなく、失敗した時刻とエラーログを記録してください。TUNを無効にしても通常のシステムプロキシは使える場合があるため、特権サービスの問題とサブスクリプションやノードの問題を切り分けられます。

キーチェーンのダイアログ:要求元を確認してから許可を判断

「アプリがキーチェーンに保存されている機密情報を使用しようとしています」という表示は、プログラムが保存済みの認証情報やアプリのキーを読み取ろうとしていることを示します。要求される内容はクライアントの実装によって異なり、すべてのClashクライアントで表示されるわけではありません。バックグラウンドサービスのインストール時に行う管理者認証とは別の手続きです。

ダイアログが表示されたら、次の順に確認

  • 要求元を確認:直前に起動したクライアント、または識別できる関連コンポーネントである必要があります。見覚えのない名前やパスが表示されたら、まず「拒否」を選び、入手元を確認してください。
  • 項目名を確認:現在のアプリや使用中の機能に関連した項目である必要があります。無関係なブラウザー、メール、ほかのアプリの認証情報へのアクセスは、すぐに許可しないでください。
  • パスワードの種類を確認:通常、ログインキーチェーンにはMacのログインパスワードを使います。アカウントのパスワードをリセットした場合、キーチェーンには以前のパスワードが設定されたままのことがあります。
  • まずは1回だけ許可:機能が復旧したことを確認してから、必要に応じて「常に許可」を選ぶか判断してください。すべてのアプリを、機密情報を含む項目のアクセスリストに追加しないでください。

パスワードが正しいのに何度も表示される場合

Spotlightで「キーチェーンアクセス」を検索し、「ログイン」キーチェーンを選択して、現在のクライアントに関連する項目を探してください。キーチェーンがロックされている場合は、ロックを解除してから再度試します。クライアントのアップデート後に問題が起きた場合は、署名の識別情報や項目のアクセス制御が変わった可能性があります。まず、そのバージョンのリリース情報を確認してください。

用途が明確で、再ログインまたは設定の再インポートができる場合に限り、現在のアプリに関連する項目を個別に削除することを検討してください。削除前に、エクスポート可能な設定をバックアップしてください。デフォルトキーチェーン全体のリセットを最初に行うと、ほかのアプリに保存されたパスワードにも影響します。

許可設定後、システムプロキシとTUNを2段階で確認

システムプロキシとTUNを同時に有効にして、どちらが機能したのか推測するのは避けてください。まずシステムプロキシをテストし、次に無効にしてTUNをテストします。各テストで変更する条件を1つに絞ると、実際の問題箇所を特定できます。

第1段階:システムプロキシのポートを確認

クライアントで、実際に設定されている混合プロキシポートを確認してください。以下ではローカルの127.0.0.1:7890を例にしています。クライアントに別のポートが表示されている場合は、実際の値に置き換えてください。システムプロキシを有効にしてから、ターミナルで次を実行します。

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

scutil --proxyでシステムプロキシの設定を確認し、lsofでポートが待ち受け状態かどうかを調べます。最後のコマンドはHTTPプロキシ経由で明示的にリクエストを送信します。HTTPレスポンスが返れば、そのリクエスト経路で応答があったことは確認できますが、すべてのアプリがシステムプロキシを参照するとは限りません。ターミナルのツールも、macOSのGUIで設定したプロキシを自動的に使用するとは限りません。

第2段階:TUNだけを個別に確認

  1. システムプロキシを一時的に無効にし、現在テストに使っているターミナルで個別に設定したプロキシ環境変数を解除します。
  2. TUNを有効にし、インターフェースの作成、ルーティング、DNSの初期化結果をログで確認します。
  3. --proxyを指定しないリクエストを再度実行し、クライアントの接続履歴で宛先、適用ルール、出口ポリシーを確認します。
unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
curl -I --connect-timeout 10 --max-time 20 https://example.com

このunsetコマンドの影響は、現在のターミナルセッションに限られます。一般のWebページは直接接続でも開ける場合があるため、「ページが開いた」だけではTUNが有効になった証拠にはなりません。接続履歴もあわせて確認してください。システムにutunインターフェースが存在していても、それがClashによって作成されたとは限りません。ほかのVPNやシステム機能も同じインターフェースを作成する場合があります。

TUNを有効にして一部のドメインに接続できなくなった場合は、DNS、ルール、ほかのVPNとの競合を確認してください。権限の問題は通常、起動時に明確なエラーとして表示されます。特定のWebサイトだけタイムアウトする場合は、ノード、適用ルール、名前解決の結果を調べます。アプリの隔離属性を再度処理する必要はありません。

よくある質問と復旧手順

アプリが開くようになったのに、管理者パスワードが必要なのはなぜですか?

起動チェックを通過したことが示すのは、macOSがアプリの実行を許可したということだけです。特権ヘルパーサービスのインストールは別の操作で、管理者の許可が必要な場合があります。まず、ダイアログがサービスのインストール中に表示されたのか、キーチェーンの読み取り中に表示されたのかを確認し、状況に応じたパスワードを入力してください。

「ネットワーク機能拡張」が見つかりません。インストーラーを間違えたのでしょうか?

必ずしもそうとは限りません。クライアントがネットワーク拡張とヘルパーサービスのどちらを使用しているか確認してください。mihomoと特権サービスを使ってTUNを実現するクライアントには、独立したネットワーク拡張の項目がない場合があります。アーキテクチャの問題は、インストーラー名、システム情報、起動エラーを確認して判断してください。

Clashを終了したらネットワークにつながらなくなりました。まず何を戻せばよいですか?

まずクライアントに戻り、TUNとシステムプロキシを無効にしてから、通常の手順で終了してください。アプリを起動できない場合は、「システム設定」→「ネットワーク」→現在のネットワークサービス→「詳細」→「プロキシ」を開き、停止済みのローカルポートを指すHTTP、HTTPS、SOCKSプロキシが残っていないか確認します。そのクライアントが設定したと確認できた項目だけを解除してください。企業のプロキシ設定はむやみに削除しないでください。

「信頼できるインストーラー→適切なアーキテクチャ→起動の許可→サービスまたは拡張機能の許可→キーチェーン→ネットワークテスト」の順に対処してください。各手順の後にテストを行い、具体的なエラーを記録しましょう。これにより無用な再操作を減らし、サポートを求める際にもどの段階で止まったのか正確に伝えられます。