接続トラブルシューティング · Clash 技術ブログ

Clash Verge Rev で macOS の TUN を有効にできない場合の修正方法

macOS のシステムプロキシは正常でも TUN に権限やサービスのエラーが出る場合は、アプリの場所、バージョン、補助サービスを確認します。公式の操作でサービスを再インストールし、許可と実通信を検証します。失敗が続く場合は TUN を無効にしてシステムプロキシを使います。

  • Clash Verge Rev
  • macOS
  • TUN
  • サービスモード
目次

macOSのTUNは仮想アダプターの作成にバックグラウンドサービスを使うため、ブラウザーでプロキシ経由の接続ができても有効にできないことがあります。使えるシステムプロキシを残し、アプリの起動場所と最初のエラーを確認して、サービスの権限を調べる必要があるか判断します。

システムプロキシは使えるのに TUN を有効にできない

macOS で同じ Profile と固定したノードを使うと、システムプロキシではページを開けるのに、TUN は有効にしてもすぐ解除されたり、サービスモードの異常や operation not permitted が出たりする場合があります。この比較から、サブスクリプションとノードには少なくとも基本的な接続能力があると判断できます。

システムプロキシが使えると確認してから、TUNの仮想アダプター作成、経路変更、DNSの処理に必要な権限を調べます。システムプロキシも使えない場合やプロキシ画面にノードがない場合は、サブスクリプション、ノード、コア起動のエラーを確認し、特権サービスを繰り返しインストールしないでください。

macOS で TUN を有効にする際の権限経路
  1. Clash Verge Revスイッチの状態を保存し、実行時設定を生成する
  2. 特権サービス管理された権限で Mihomo を起動する
  3. TUN とルート仮想ネットワークインターフェースを作成し、対象トラフィックを処理する
  4. DNS と実際の接続名前解決、ルール照合、送信を完了する

operation not permitted は通常、特権サービスから TUN までの区間で発生します。TUN は有効でも Web ページがタイムアウトする場合は、DNS、ルール、出口を続けて確認してください。

安定版へアップグレードし、「アプリケーション」フォルダーから起動する

Clash Verge Rev v2.5.2 の公式リリースノートには macOS の修正があります。App Translocation(システムによって実行場所が一時的に変わる状態)では、サービスのインストールや起動に異常が出る場合があります。新しいバージョンで対処されていても、DMG、ダウンロードフォルダー、一時コピーから継続して直接実行するのは避けてください。

バージョンと起動場所だけを変更する

  1. 現在の状態を記録する

    クライアントのバージョン、Mac のチップ、サービスモードの状態、ログ内の最初のエラーを記録します。

  2. TUN とクライアントを終了する

    システムネットワークが復旧したことを確認してからメニューバーのプロセスを終了し、インストール中に以前のサービスがルートを切り替えないようにします。

  3. チップに適合する安定版をインストールする

    現在のバージョンが v2.5.2 より古い場合は、プロジェクトの Release からチップに合う正式パッケージを入手します。M シリーズは Apple Silicon、Intel Mac は Intel を選びます。旧アプリを終了してから Clash Verge.app を「アプリケーション」にドラッグし、元の Profile は残してください。

  4. 「アプリケーション」から開き直す

    当面は DNS、オーバーライド、ノードを変更せず、サービスの状態と以前のエラーが消えたかだけを確認します。

最初の TUN エラーから、権限の問題か通信障害かを判別できます

再起動後は TUN を一度だけ有効にし、ログの先頭から、今回の操作で表示された最初の error を探します。スイッチが無効へ戻る場合と Web ページがタイムアウトする場合は、同じ種類の失敗ではありません。前者はネットワークインターフェースの作成前に起きることが多く、後者はインターフェースがすでに存在し、問題が DNS、ルート、上流接続へ進んだ可能性を示します。

公式の macOS FAQ によると、TUN の有効化中はクライアントがシステム DNS を一時的に変更し、無効にすると復元されます。修正前に元の DNS を記録してください。TUN を無効にしても設定が戻らない場合は、まずシステムのネットワーク設定で元の値を復元してから、テストを続けます。

configure tun interface: operation not permitted

カーネルが TUN の作成に必要な権限を取得できていません。サービスモードと以前のサービスの残存を確認してください。

サービスのインストールボタンでエラーが発生し、ログがカーネル起動まで進んでいない

アプリケーションが /Applications にあることを確認し、セキュリティソフトウェアまたはデバイス管理ポリシーが特権サービスを遮断していないか調べます。

TUN は有効なままで、接続ページにリクエストが表示されるものの、すべて timeout になる

TUN の作成に必要な権限は得られています。DNS、ルール、ノード、ほかの VPN とのルーティング競合を調べてください。

TUN を無効にした後もシステムプロキシは正常に機能する

接続を復旧できるよう、動作するシステムプロキシを残してください。修正するのはサービスだけにし、サブスクリプションは作り直さないでください。

v2.4.5をまたいで更新した後もサービスが失敗する場合、どう再インストールする?

v2.4.5 の公式リリースノートでは、macOS と Linux でサービスの IPC 権限が強化され、一部の既存環境では以前の TUN サービスをアンインストールしてから新しいサービスをインストールする必要があると案内されました。このバージョンをまたいでアップグレードし、画面上での再試行にも失敗する場合は、リリースノートに記載された macOS 用ツールを使用できます。

実行前に、アプリケーションが実際に /Applications/Clash Verge.app にあり、クライアントを終了済みであることを確認してください。以下では、まずツールの存在を確認します。パスが異なる場合や確認に失敗した場合は中止し、コマンドをダウンロードフォルダーへ向けるように変更しないでください。

会社所有または管理下のMacでは、以下の管理者コマンドを実行する前に、このサービスのインストールと実行が許可されているか管理者に確認してください。許可がなければここで止め、サービスの再インストールで管理ポリシーを回避しないでください。

先にパスを確認し、その後で公式のアンインストールツールとインストールツールを実行する
APP="/Applications/Clash Verge.app"
test -x "$APP/Contents/Resources/resources/clash-verge-service-uninstall" &&
test -x "$APP/Contents/Resources/resources/clash-verge-service-install" &&
sudo "$APP/Contents/Resources/resources/clash-verge-service-uninstall" &&
sudo "$APP/Contents/Resources/resources/clash-verge-service-install"

二つの test コマンドが何も出力せず、成功を返した場合に限って、管理者パスワードの入力へ進みます。完了後にクライアントを開き直し、サービスモードが有効か確認してから、元の Profile で一度テストしてください。フォーラムから同名の service ファイルをダウンロードしたり、launchd ディレクトリの不明な項目を手動で削除したりしないでください。

会社の Mac のバックグラウンドサービスと管理者ポリシー

公式の macOS FAQ では、一部のクラッシュとサービスのインストール失敗について、セキュリティソフトウェアによるサービスの遮断が原因として挙げられています。個人所有のコンピューターでは、「システム設定 → 一般 → ログイン項目と機能拡張」にある Clash Verge Rev 関連のバックグラウンド項目を確認できます。管理対象のコンピューターでは、サービスが許可されているか管理者に確認してもらってください。

ログインのたびに osascript による変更要求が表示される場合は、関連するバックグラウンド項目が無効になっていないか、先に確認してください。エンドポイント保護の恒久的な無効化、デバイス管理の削除、アプリケーション全体に対する隔離属性の再帰的な消去は行わないでください。一つの権限問題を、より大きなセキュリティリスクへ広げることになります。

管理対象の環境で確認が必要なこと

  • クライアントをプロジェクトの公式 Release から取得し、ファイルがチップのアーキテクチャに適合している
  • アプリケーションをユーザーの一時ディレクトリではなく /Applications にインストールしている
  • 管理者が Clash Verge Rev サービスのインストールと実行を明示的に許可している
  • セキュリティソフトウェアが、アプリケーション、Mihomo カーネル、サービスツールを隔離していない
  • 別の VPN または TUN クライアントを同時に実行して、ルートを競合させていない

修正が完了しない場合は、システムプロキシへ戻して利用を続ける

サービスを再インストールしても同じ権限エラーが出る場合は、許可を繰り返すのをやめます。TUN を無効にし、システムの DNS が修復前に記録した値に戻ったことを確認して、システムプロキシと元のノードでアクセスしてください。基本的な通信を保ち、故障した状態が経路を占有し続けるのを避けられます。公式修正や管理者の対応までは、正体不明のスクリプトを追加しないでください。

TUN を無効にしても通信できない場合は、Clash Verge Rev を終了し、macOS のネットワーク設定でプロキシを無効にするか、元の DNS に戻します。ネットワークサービスの削除、Mac 全体のネットワーク設定の初期化、Profile の消去はしないでください。これらのデータを消してもサービスの権限は補えません。

問題を報告する前に、再現可能な証拠を残す

  1. 機密情報を除去したログをエクスポートする

    TUN を有効にする前後の数十行を残し、サブスクリプション URL、ノードのアドレス、UUID、パスワードを伏せてください。

  2. 環境を記録する

    macOS のバージョン、Apple Silicon または Intel、クライアントのバージョン、インストール先を記載します。

  3. 最小限の再現手順を記録する

    システムプロキシが正常か、TUN スイッチがどう動作するか、サービスモードの状態、最初の error を記載します。

TUN の通信、終了時の復元、再ログインを確認する

TUN のスイッチが青のままでも、画面に状態が保存されたことしか証明できません。システムプロキシに依存しないリクエストでも比較し、TUN を無効にした後にルートと DNS が正常に戻ることを確認してください。

完全な検証チェックリスト

  • サービスモードが有効と表示され、ログに operation not permitted が現れない
  • システムプロキシを無効にして TUN だけを有効にすると、ブラウザとターミナルのリクエストが接続ページへ入る
  • 接続記録に想定したルールと出口が表示され、すべてが DIRECT になったり、timeout が続いたりしない
  • TUN を無効にすると、システム DNS と通常の直接接続が復旧し、Mac の再起動は不要
  • システムへ一度ログインし直した後もサービスを利用でき、異常な権限要求を繰り返さない

参考資料