まずは4種類の権限確認を見分ける

macOSでクライアントのウィンドウが開いても、プロキシに必要なサービスが起動しているとは限りません。初回インストール時の確認は、Gatekeeper、管理者認証、ネットワーク拡張、キーチェーンのいずれかから表示されます。それぞれ目的が異なり、拒否した場合の再設定場所も違います。

Mihomoはコアであり、クライアントは設定画面やシステム連携、権限の要求を担います。TUNの実装はクライアントごとに異なり、特権ヘルパーサービスでコアを起動するものもあれば、Network Extensionを使うものもあります。「TUN」のスイッチがあるだけで、システム設定にネットワーク拡張が表示されるとは限りません。

表示される内容 目的 確認するポイント
開発元を確認できないため開けない アプリの入手元と署名の状態を確認 入手元、システムのセキュリティ警告
ヘルパーツールのインストール、管理者認証が必要 特権サービスのインストールまたは更新 操作を開始したアプリ、管理者アカウント
VPN構成の追加、ネットワーク拡張の許可 システムのネットワークを制御する経路を確立 拡張機能の名称、クライアントの実装
ログインキーチェーン内の項目へのアクセス 保存済みの認証情報を読み取る 要求元のプロセス、項目名、許可範囲

初回起動:インストール先とセキュリティ確認

Macのアーキテクチャを確認し、「アプリケーション」から起動する

  1. Appleメニューから「このMacについて」を開きます。「チップ Apple M…」と表示される場合は、通常Apple Siliconまたはarm64版を選びます。Intelプロセッサの場合はx64版を選択してください。ユニバーサル版はクライアントの案内に従って使用します。
  2. DMG形式のクライアントは、アプリを「アプリケーション」フォルダにドラッグしてから、ディスクイメージを取り出してください。DMG内から起動し続けるのは避けましょう。
  3. 旧バージョンを終了し、「Finder」→「アプリケーション」から起動します。旧版と新版を同時に実行すると、ポートの競合やヘルパーサービスのバージョン不一致が起きることがあります。
  4. 最初は設定を読み込み、コアが起動することだけを確認します。その後、システムプロキシやTUNを一つずつ有効にすると、問題の発生箇所を特定しやすくなります。

通常のブロックとセキュリティ警告を区別する

macOS 13 Ventura、14 Sonoma、15 Sequoiaでは、関連する設定は通常「システム設定」→「プライバシーとセキュリティ」にあります。アプリを開こうとした後、該当ページにブロックの記録が表示されることがあります。入手元が信頼でき、システムに該当する選択肢が表示された場合に限り、案内に従って「このまま開く」を選択してください。ボタン名や場所はmacOSのバージョンにより多少異なります。

「アプリが破損している」という警告は、初回起動時の通常の確認とは異なります。ダウンロードの不完全、署名の異常、パッケージの改変などが原因の場合があります。現在のインストーラーを削除し、クライアントの開発元が案内する配布元から入手し直して、システム要件も確認してください。コンピュータに損害を与える、またはマルウェアが含まれていると明示された場合は、回避せず起動を中止してください。

  • Gatekeeperを無効にする方法を、通常のインストール手順にしないでください。
  • ダウンロードフォルダ全体の隔離属性を一括削除しないでください。
  • 組織管理下のMacでは、デバイス管理ポリシーによって制限されている場合があります。利用可能なクライアントや拡張機能は管理者に確認してください。

ヘルパーサービス:管理者認証と拒否後の再試行

通常のシステムプロキシとTUNでは、必要な権限が異なります。システムプロキシは主に現在のネットワークサービスのプロキシ設定を変更します。TUNでは通常、仮想インターフェースやルーティング、DNSの変更も伴います。これらの操作を常駐ヘルパーサービスが行うクライアントでは、「ヘルパーツールをインストール」や「サービスを更新」といった管理者認証が表示されます。

許可する前に確認する3項目

  • 要求元:直前に操作したクライアント、またはその既知のヘルパープログラムと一致していること。不明なスクリプトプロセスからの要求は許可しないでください。
  • 操作内容:サービスのインストールや更新、ネットワーク設定の変更であることを確認します。プロキシと無関係な操作ではないか注意してください。
  • アカウント:標準ユーザーの場合、通常は管理者アカウントの認証情報が必要です。管理者パスワードはmacOSのシステム認証画面に入力し、サブスクリプションのページやチャットには貼り付けないでください。

先ほど「キャンセル」を押した場合でも、通常はクライアント全体を再インストールする必要はありません。クライアントのサービス管理画面からインストールまたは修復をやり直します。画面上の名称は「サービスモード」「ヘルパーサービス」「サービスをインストール」など、クライアントによって異なります。完了後はクライアントを終了して再起動し、ログを確認してください。

サービスのインストール後もTUNを起動できない

まずログに permission denied、ヘルパーサービスへの接続失敗、ポート競合がないか確認します。クライアントの更新後も古いヘルパーサービスが動作している場合があります。まずはクライアント内蔵のサービス更新または再インストール機能を使ってください。クライアントによってサービス識別子は異なるため、ネット上の汎用コマンドを使って /Library/LaunchDaemons 内のファイルを直接削除しないでください。

macOS 13以降では、「システム設定」→「一般」→「ログイン項目」または「ログイン項目と機能拡張」で、バックグラウンドアクティビティの項目も確認できます。バックグラウンド項目とネットワーク拡張は別の設定です。クライアント名が表示されている場合は、どの機能に対応するのか、クライアントの説明を確認してください。

ネットワーク拡張とVPN構成の許可

ネットワーク拡張やVPN構成を要求するのは、該当するシステム機能を使うクライアントに限られます。特権サービス経由でMihomoのTUNを動かすクライアントでは、この種のダイアログが表示されないこともあります。その場合は、存在しない拡張機能を探し続けず、サービスとコアのログを確認してください。

macOSのバージョン別に設定場所を確認

  • macOS 15 Sequoia:「システム設定」→「一般」→「ログイン項目と機能拡張」を開き、「機能拡張」セクションの「ネットワーク機能拡張」から詳細を表示して、クライアントの項目を確認します。
  • macOS 13 Ventura、14 Sonoma:「システム設定」で「VPN」または「フィルタ」を検索し、ネットワーク関連の構成を確認します。拡張機能がブロックされたという通知が表示された場合は、「プライバシーとセキュリティ」に該当する記録がないかも確認してください。
  • その他のバージョン:システム設定で「ネットワーク機能拡張」「VPN」「フィルタ」を検索してください。拡張機能の種類によって設定ページは異なります。特定のバージョンのメニュー構成を、すべてのバージョンで共通の場所と考えないでください。

「VPN構成の追加を許可」は、クライアントがシステムのネットワーク構成を作成することを許可する操作です。サブスクリプションの読み込み成功や、プロキシノードの利用可能性を示すものではありません。許可後はクライアントに戻り、設定を選択してコアを起動し、接続を確認してください。システムメニューにVPNの状態が表示されても、ルールの適用先や通信の出口を確認したことにはなりません。

許可を拒否した後の再設定手順

  1. クライアントのTUNまたは接続スイッチをオフにし、バックグラウンドでの再試行を止めます。
  2. システム設定で該当する拡張機能が無効になっていないか、ブロックの記録が残っていないか確認します。
  3. クライアントに戻り、接続または拡張機能のインストールを再度実行して、システムの案内に従います。再起動はシステムから明示的に求められた場合に限って行ってください。
  4. 古いVPN構成が複数ある場合は、まずどのアプリのものか確認し、元のクライアントの削除機能で整理します。現在使用中の会社のVPNは削除しないでください。

キーチェーンの確認:パスワード、「許可」、「常に許可」

クライアントは、サブスクリプションの認証情報やアクセストークンなど、機密性の高い設定をキーチェーンに保存する場合があります。保存される内容は実装によって異なります。コアの起動、ウィンドウの表示、キーチェーンへのアクセスは別々の動作です。ダイアログが表示されたら、クライアントが起動中かだけでなく、「どのプロセスが、どの項目にアクセスしようとしているか」を確認してください。

3つのボタンで許可される範囲

  • 拒否:今回のアクセスを拒否します。関連機能が認証情報を読み取れなくなることがありますが、通常、キーチェーン内の項目は削除されません。
  • 許可:現在のアクセス要求を許可します。まず機能が復旧するか試す場合に適しています。次回以降も確認が表示されることがあります。
  • 常に許可:該当項目へのアクセス許可をアプリに保存します。アプリと項目の用途を確認してから使用してください。不明なプロセスには許可しないでください。

ログインキーチェーンのパスワードは、通常、現在のmacOSログインパスワードと同じですが、必ずしもそうとは限りません。管理者によるパスワードのリセット後や、古いキーチェーンを移行して復元した場合は、キーチェーンに以前のパスワードが設定されたままのことがあります。現在のパスワードを何度入力しても失敗する場合は、むやみに再試行せず、この可能性を確認してください。

「キーチェーンアクセス」で該当項目を探す

  1. Command + 空白キーを押し、「キーチェーンアクセス」を検索して開きます。新しいmacOSの「パスワード」アプリでは、キーチェーン管理のすべての機能を代用できません。
  2. 「ログイン」キーチェーンを選び、ダイアログに表示された項目名で検索します。該当する項目だけを確認し、すべて選択して削除しないでください。
  3. 項目の詳細を開き、種類とアクセス制御を確認します。項目の種類によって、編集できる内容は異なります。
  4. クライアントが保存した古い認証情報だと確認できた場合は、まずクライアントで再ログインするか、認証情報を更新してください。項目を個別に削除する場合は、必要なアカウント情報を再取得できることを先に確認します。

クライアント更新後にキーチェーンの許可を再度求められても、必ずしもパスワードが間違っているとは限りません。アプリのパスや署名情報、アクセス制御の条件が変わると、再確認が必要になることがあります。まず更新元とダイアログに表示されたプロセス名を確認し、許可し直すか判断してください。

権限設定後に接続を確認する

権限設定が完了したら、「コアのポート待ち受け → システムプロキシ → TUN」の順に確認します。DNS、ルール、プロキシポートを同時に変更すると、どの変更で復旧したか判断しにくくなります。元の設定を保存し、各手順を実施した時刻をログと照らし合わせて記録してください。

手順1:コアのポートが待ち受け中か確認

以下では、クライアントの設定が mixed-port: 7890 の場合を例にします。7890は例であり、すべてのクライアント共通のポートではありません。画面に別の値が表示されている場合は、コマンド内もその値に置き換えてください。「ターミナル」を開いて実行します:

lsof -nP -iTCP:7890 -sTCP:LISTEN

出力がある場合は、待ち受け中のプロセスが現在のクライアントか確認してください。出力がない場合は、コアが起動しているか、設定の読み込みに成功しているか、別のポートが設定されていないかを確認します。管理者認証を済ませただけでは、コアが待ち受けを開始したとは限りません。

手順2:プロキシを個別にテストし、システム設定を確認

curl -I --connect-timeout 10 --max-time 20 \
  --proxy http://127.0.0.1:7890 https://example.com/

scutil --proxy

1つ目のコマンドはローカルプロキシを明示し、接続タイムアウトを10秒、全体の制限時間を20秒に設定します。これにより、プロキシ自体の問題とシステムプロキシ設定の問題を切り分けられます。HTTP応答を受信した場合、そのリクエストに応答があったことは分かりますが、結果の判断にはステータスコード、クライアントの接続ログ、適用されたルールも確認してください。

2つ目のコマンドでシステムプロキシの状態を確認します。通常のHTTP/HTTPSシステムプロキシを有効にしている場合は、HTTPEnable、HTTPSEnable、サーバー、ポートがクライアントの設定と一致しているか確認してください。PACを使用している場合は、自動プロキシ関連の項目を確認します。TUNによる通信制御では、これらのスイッチが1である必要はありません。値だけを根拠にTUNの失敗と判断しないでください。

手順3:TUNだけを有効にしてログを確認

  • まず、ヘルパーサービスまたは必要な拡張機能が準備できていることを確認してから、TUNを有効にします。
  • スイッチの色だけで判断せず、ログで仮想インターフェース、ルート、DNSの初期化に失敗していないか確認します。
  • 通常のWebサイトとプロキシ経由が必要な接続先が、それぞれ想定したルールに一致しているか確認します。ルールモードでは、リクエストごとに異なる出口が使われる場合があります。
  • クライアントを終了した後、ネットワークとシステムプロキシの状態を再確認し、停止したポートを指すプロキシ設定が残っていないか確認します。

よくある問題を最短で切り分ける手順

権限を拒否した後、確認ダイアログが再表示されない

まず、拒否した要求の種類を特定します。ヘルパーサービスならクライアントから再インストールし、ネットワーク拡張ならシステム設定で状態を確認します。キーチェーンなら認証情報が必要な操作を再度実行してください。「サブスクリプションを再読み込み」は、あらゆる権限問題に使える解決策ではありません。サブスクリプションの内容を変更しても、システムの許可状態は変わりません。

システムプロキシは使えるが、TUNを有効にするとネットにつながらない

まず、利用できる状態のシステムプロキシに戻し、TUNのログ、ほかのVPNとの競合、DNS設定を確認します。システムプロキシが正常でも、TUNに必要なルートや権限が整っているとは限りません。調査中は元に戻せる設定を保ち、ネットワークが切断された状態で修復ツールをダウンロードし続けないでください。

起動するたびにパスワードを求められる

まず、パスワード入力画面がシステム認証かキーチェーンアクセスかを確認します。前者の場合は、ヘルパーサービスが正しくインストールされているか、毎回更新されていないかを確認します。後者の場合は、該当するキーチェーン項目のアクセス制御、アプリを固定の場所から起動しているか、クライアントのコピーが複数残っていないかを確認してください。認証を回避するために、管理者パスワードをスクリプトへ保存しないでください。

開発元への問い合わせ時に伝える情報

  • 「このMacについて」で確認できるmacOSの詳細なバージョンと、Apple SiliconまたはIntelの別。
  • クライアントのバージョンとコアのバージョン。それぞれ別に記録し、混同しないでください。
  • 問題を再現する手順、ダイアログの全文、発生前後数秒の関連ログ。
  • システムプロキシとTUNのどちらを使用しているか、実際の待ち受けポート、ほかのネットワーク制御ツールを同時に実行しているか。

スクリーンショットやログを送る前に、サブスクリプションの完全なURL、アカウントトークン、ノードのパスワードなど、個人情報を隠してください。権限の種類に応じた情報を提示すると、何度も再インストールするより原因を特定しやすくなります。修正の効果を判断するため、設定は一度に一つだけ変更してください。