まずは4種類の許可を区別:アプリの起動、補助サービス、ネットワーク拡張機能、キーチェーン
macOS向けClashクライアントの通信制御方式は一つではありません。GUIがmihomoコアを呼び出すものもあれば、特権ヘルパーやNetwork Extensionを利用するものもあります。他のクライアントの許可画面を参考にする前に、使用中のソフト名、バージョン、動作モードを確認し、同じ手順が必要か判断してください。
まずAppleメニューから「このMacについて」を開き、macOSのバージョンとチップの種類を確認します。次にクライアントの「バージョン情報」でアプリのバージョンを確認し、コア情報の画面があればmihomoのバージョンも記録します。Apple Silicon用とIntel用のインストーラーは、それぞれ対応するアーキテクチャを選んでください。アーキテクチャの選択ミスは通常、起動互換性の問題であり、ネットワーク拡張機能を承認しても解決しません。
| 警告または機能 | 関係する権限 | 対応するタイミング |
|---|---|---|
| 開発元を検証できない、アプリが壊れている | Gatekeeper、署名、ダウンロード時の隔離属性 | アプリを初めて開く前 |
| ヘルパーツールのインストール、管理者認証の要求 | 特権ヘルパーまたはサービスモード | クライアントがサービスのインストールを明示的に求めたとき |
| システム拡張機能の承認、VPN構成の追加 | システム拡張機能、ネットワーク拡張機能、VPN構成 | 該当する機能を初めて有効にするとき |
| キーチェーン内の項目へのアクセス | 指定された認証情報の読み取り許可 | アプリが保存済みの認証情報を読み込むとき |
初回起動:「開発元を検証できません」と「壊れている」警告を別々に対処
まずインストール先と入手元を確認
- 起動中の古いインスタンスを終了し、ディスクイメージ内のアプリを「アプリケーション」フォルダにドラッグしてインストールします。インストールイメージから直接起動し続けないでください。
- インストールイメージを取り出してから「アプリケーション」フォルダ内のアプリを開きます。以降の許可設定が、一時的にマウントされた場所にあるコピーを参照するのを防げます。
- ダウンロード元、アプリ名、プロセッサのアーキテクチャを確認してください。システムがマルウェアを検出したと明示した場合は起動を中止し、入手元を改めて確認します。
「開発元を検証できません」などの警告が表示された場合、macOS 13 Ventura、14 Sonoma以降では通常、「システム設定」→「プライバシーとセキュリティ」のセキュリティ欄に、直近でブロックされたアプリを「このまま開く」ためのボタンが表示されます。macOS 12 Montereyでは「システム環境設定」→「セキュリティとプライバシー」→「一般」が該当します。関連するブロックが発生し、システムが例外を許可する場合にのみボタンが表示されます。
macOS 15 Sequoiaでは、一部の未署名または未公証のソフトウェアの起動手順が変更されています。古い手順にあるControlキーを押しながら「開く」をクリックする方法だけに頼らず、現在のシステム警告からセキュリティ設定を開き、アプリを確認してから許可してください。組織が管理するMacでは例外設定が制限されている場合があるため、デバイス管理者に相談してください。
「壊れている」という警告は、通常の権限設定では解決しません
この警告は、パッケージの破損、署名の無効化、ダウンロード時の隔離処理などが原因で表示されることがあります。まず現在のアプリを削除し、使用中のシステムに対応した配布パッケージを入手し直してください。システム全体のセキュリティチェックを先に無効化してはいけません。さらに調査する場合は、以下のコマンドの先頭部分をターミナルに入力し、「アプリケーション」フォルダにある実際のアプリをターミナルへドラッグしてパスを補完してから、1行ずつ実行します。
spctl --assess --type execute --verbose=4
codesign --verify --deep --strict --verbose=2
xattr -l
上記の各コマンドにはアプリのパスが必要です。3行をまとめて貼り付けても、診断コマンドとしては実行できません。1行目はシステムによる実行可否の評価、2行目は既存の署名、3行目は拡張属性を確認します。com.apple.quarantineが表示されても、隔離属性が付いていることを示すだけで、アプリが有害とも安全とも証明できません。署名の検証に成功しても、システム公証済みであることを意味しません。
ネットワーク拡張機能の承認:macOSのバージョン別に設定場所を確認
まずクライアントで拡張機能が必要な機能を一度実行し、システムの通知を確認します。システム拡張機能は通常、アプリが有効化リクエストを送信して初めて承認待ちになります。「アプリケーション」フォルダにコピーしただけでは、承認項目が作成されないことがあります。承認前に開発元名とクライアントのリリースノートを照合し、通知が表示されたタイミングだけで送信元を判断しないでください。
| macOSのバージョン | 主な確認場所 | 確認すること |
|---|---|---|
| 12 Monterey | システム環境設定 → セキュリティとプライバシー → 一般 | システムソフトウェアがブロックされた通知があれば、ロックを解除して開発元を確認し、許可します |
| 13 Ventura / 14 Sonoma | システム設定 → プライバシーとセキュリティ | セキュリティ欄に拡張機能の承認通知がないか確認します |
| 15 Sequoia | システム設定 → 一般 → ログイン項目と機能拡張 → ネットワーク機能拡張 | 詳細を開き、該当アプリのネットワーク拡張機能を確認して有効にします |
設定場所は拡張機能のパッケージ形式やシステムのマイナーバージョンによっても異なります。「VPN構成を追加」という通知が出た場合は、申請元アプリ名を確認してから許可するか決めてください。VPN構成はシステムの「VPN」または「ネットワーク」関連の画面で確認できます。VPN構成の許可とシステム拡張機能の承認は別の設定です。また、コンテンツフィルタはTUNトンネルと同じものではありません。
- クライアントを起動したまま、拡張機能が必要なネットワーク機能をアプリ内で有効にします。
- システムの案内に従って設定画面を開き、該当する開発元または拡張機能を承認し、必要な認証を完了します。
- クライアントに戻り、該当機能をいったんオフにしてから再度オンにします。Macの再起動はシステムから明示的に求められた場合に限って行ってください。
- 承認待ちの項目がない場合は、クライアントのログ、拡張機能のインストール手順、サービスの状態を確認します。まだ申請されていない権限を探して何度も操作しないでください。
systemextensionsctl listを実行すると、システム拡張機能の仕組みで登録された項目と状態を確認できます。ただし、これはネットワーク関連コンポーネントすべての一覧ではありません。形式によってはNetwork Extensionが表示されないことがあり、特権サービス方式のTUNも、項目の有無だけでは正常に動作しているか判断できません。
キーチェーンの確認画面:要求元プロセス、項目名、パスワードの種類を確認
キーチェーンアクセスの確認画面では、通常、アクセスを要求しているプロセスと、読み込もうとしている項目の2点を確認できます。項目には、サブスクリプションの認証情報、プロキシ認証情報、アプリ独自のアクセストークンなどが保存される場合があります。用途はクライアントの実装によって異なります。詳細を展開して内容を確認してから、「許可」または「常に許可」を選んでください。
3つの操作の違い
- 拒否:今回の要求には認証情報を渡しません。アプリから再ログインや認証情報の再入力を求められたり、認証情報の読み込み失敗が表示されたりする場合があります。
- 許可:今回のアクセスを承認します。次回以降も確認を求められる場合があります。
- 常に許可:この項目へのアクセスを、現在のアプリ識別情報に対して許可します。要求元を確認済みで、継続的な読み取りが必要な場合に適しています。
「ログイン」キーチェーンのロック解除を求められた場合、通常必要なのは現在のユーザーアカウントのログインパスワードであり、サブスクリプションのパスワードやApple Accountのパスワードではありません。別の方法でログインパスワードをリセットした場合、キーチェーンのパスワードが古いままのことがあります。新しいパスワードを繰り返し入力しても、古いキーチェーンのロックは解除できない場合があります。
確認画面が繰り返し表示される場合の切り分け
- Finderで「移動」→「ユーティリティ」→「キーチェーンアクセス」を選択します。Spotlight検索から開くこともできます。
- 「ログイン」キーチェーンを選び、確認画面に表示された項目名で検索します。関係のないパスワードをまとめて削除しないでください。
- 該当する項目を開き、「アクセス制御」でアクセスを許可されているアプリを確認します。項目によって編集できる項目が異なるため、実際の画面に従ってください。
- 同じアプリが2か所にインストールされていないか、アップデート後に署名IDが変わっていないか確認します。インストール場所を1か所に決めてから、もう一度アクセスを要求してください。
デフォルトキーチェーンをリセットすると、他の保存済み認証情報にも影響するため、最初のトラブルシューティング手段にしないでください。クライアント専用の項目を削除する必要がある場合は、対応する認証情報を再入力できることと項目名を先に確認します。削除後はクライアントに保存し直させ、確認画面を回避するために他のアプリのアクセス制御を変更しないでください。
TUNの許可:まずシステムプロキシを確認し、その後に仮想インターフェースを有効化
システムプロキシは、macOSのプロキシ設定に従うアプリにHTTPやHTTPSなどのプロキシ接続先を提供します。一方、TUNは仮想ネットワークインターフェースとルーティングを使って通信を制御します。ターミナルのツールがシステムプロキシを利用するかどうかはツール次第です。そのため、「ブラウザではつながるが、コマンドラインではつながらない」というだけでは、権限不足とは判断できません。
まずTUNをオフにし、ローカルプロキシの待ち受けとルールを確認してから、ルーティング制御を設定することをおすすめします。以下では例として127.0.0.1:7890を使いますが、実際にはクライアントに表示されているHTTPまたはmixedポートを指定してください。7890がすべてのクライアントの既定値というわけではありません。
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/
lsofに待ち受けが表示された場合は、そのプロセスが使用中のクライアントに属するか確認します。何も表示されない場合は、まずコアの起動状態と実際のポートを確認してください。scutil --proxy:現在有効なシステムプロキシの情報を確認します。TUNのルーティングが構成済みであることを証明するコマンドではありません。curlがレスポンスヘッダーを返した場合、この明示的なプロキシリクエストに応答があったことを示します。リクエストの成否を判断するには、ステータスコードとクライアントの接続履歴も確認してください。
サービスと実行時設定を確認
クライアントがmihomoの特権サービスを使う場合は、設定画面のサービスインストール項目から管理者認証を完了してからTUNを有効にします。メニュー名は「サービスモード」「ヘルパーサービス」「サービスをインストール」など、バージョンによって異なります。実際の画面で確認し、GUI全体を管理者権限で常時起動しないでください。
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
これはTUN関連の設定項目であり、単独で動作する完全な設定ではありません。stackで指定できる値や動作は、使用中のコアバージョンに従ってください。また、これらの設定はシステム権限の代わりにはなりません。クライアントが起動時にサブスクリプション内の同名フィールドを上書きすることもあるため、ダウンロードしたYAMLだけでなく、最終的に適用された設定を確認してください。
有効化後は、ifconfigでインターフェース、netstat -rn -f inetでIPv4ルート、scutil --dnsでリゾルバの状態を確認できます。macOS自身や他のVPNもutunインターフェースを作成するため、utun0などの番号が一つ見つかっただけでは、現在のクライアントのものとは断定できません。有効化前後の変化、クライアントのログ、実際の接続履歴を照らし合わせてください。
許可後も通信できない場合:症状から確認範囲を絞り込む
| 確認できる症状 | 優先して確認する項目 | 次の手順 |
|---|---|---|
| 画面は開くが、ローカルポートが待ち受けていない | コアの起動ログ、設定の解析エラー、ポートの競合 | 起動エラーを修正してから設定を再読み込み |
| 明示的なプロキシは使えるが、ブラウザがプロキシを経由しない | システムプロキシの状態、ブラウザ独自のプロキシ設定 | 現在のネットワークサービスとブラウザ拡張機能の設定を確認 |
| システムプロキシは使えるが、TUNを有効にできない | 特権サービス、拡張機能の状態、インターフェースやルートのエラー | クライアントの実装方式に応じて必要な権限を設定 |
| TUNを有効にするとドメインに接続できない | DNS設定、名前解決のログ、他のVPNのDNS設定 | ネットワーク制御コンポーネントを一つだけ有効にして再テスト |
| アップデート後、キーチェーンの確認が繰り返し表示される | アプリのコピー、署名ID、項目のアクセス制御 | 要求元を確認してから該当項目へのアクセスを再許可 |
サブスクリプションのインポート成功は、クライアントが設定を取得したことを示すだけです。ノード認証、DNS、ルールセットの選択、システムルーティングがすべて正常とは限りません。接続画面で対象ドメインに適用されたルールと出口を確認してください。DIRECTに一致する場合は、システム拡張機能をさらに承認するのではなく、まずルールの順序を確認します。
競合を切り分ける際は、他のVPN、コンテンツフィルタ、パケットキャプチャツールを一時停止し、対象のクライアントだけを有効にします。変更は一度に一つにし、変更前後のログの時刻を記録してください。アプリの再インストール、キーチェーンの削除、DNSの変更を同時に行うと、接続が復旧してもどの操作が有効だったか判断できません。
アップデートとアンインストール:サービスの状態を確認し、元に戻せるようネットワーク設定を保護
- アップデート前:クライアントとコアのバージョン、現在の動作モードを記録します。上書きで変更内容が失われないよう、残しておきたいローカルルールを保存してください。
- アップデート後:まずアプリを開き、サービスの更新が必要か確認します。新たな許可要求が表示された場合に限り、内容を確認して再承認してください。
- アンインストール前:クライアントでTUNとシステムプロキシをオフにし、内蔵の項目からヘルパーサービスをアンインストールするか拡張機能を無効にしてから、アプリを終了します。
- アンインストール後:macOS 13以降では「システム設定」→「ネットワーク」→現在のネットワークサービス→「詳細」→「プロキシ」で設定が残っていないか確認できます。macOS 12では「システム環境設定」→「ネットワーク」→現在のサービス→「詳細」→「プロキシ」を確認してください。
他のVPNの構成を削除しないでください。また、127.0.0.1が表示されたからといって、すべての設定を一律に消さないでください。そのアドレスとポートがアンインストールしたクライアントによって設定されたものか、先に確認します。職場のネットワークには管理者が設定したプロキシがある場合があります。管理対象デバイスの設定は、管理者に確認してください。
確認を終えたら、次の4点を個別に説明できる状態が目安です。アプリが正常に起動するか、現在のモードで拡張機能が必要か、キーチェーンの要求が確認済みのアプリから来ているか、プロキシまたはTUNの通信が想定したルールに一致しているか。パスワードの再入力や再起動を繰り返すより、この4点を分けて確認するほうが原因を特定しやすくなります。