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

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

macOS でシステムプロキシは正常でも、TUN に権限不足やサービスモードの異常が表示される場合は、まずアプリの配置場所とバージョンを確認します。次に公式の順序でサービスを再インストールし、システムプロキシへ戻す復旧手段も残してください。

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

システムプロキシは利用できるのに TUN が失敗する場合、通常は権限経路に問題があります

本稿では、macOS 上の明確な一種類の問題だけを扱います。同じ Profile と固定ノードで、システムプロキシ経由なら Web ページへアクセスできる一方、TUN を有効にするとすぐ無効に戻る、サービスモードの異常が表示される、またはログに operation not permitted が現れるケースです。この比較から、少なくともサブスクリプションとノードには基本的な可用性があると判断できます。

TUN は仮想ネットワークインターフェースを作成し、ルートを調整して DNS を処理するため、システムプロキシより高い権限が必要です。システムプロキシも利用できない場合や、プロキシページにノードがまったくない場合は、先にサブスクリプション、ノード、カーネルの起動を修正してください。特権サービスを繰り返しインストールしないでください。

まず症状に応じて調査の入口を選ぶ

症状優先して確認すること当面は行わないこと
TUN のスイッチがすぐに無効へ戻り、ログに operation not permitted と表示される実行モードとサービス権限DNS またはサブスクリプションを変更する
サービスモードが未有効、またはインストール失敗と表示されるアプリケーションの場所、バージョン、以前のサービス設定ディレクトリ全体を削除する
TUN は有効なままだが、すべての Web サイトでタイムアウトするDNS、ルート、別の VPN との競合管理者パスワードを繰り返し入力する
システムプロキシと TUN のどちらでも通信できないProfile、ノード、カーネルログ問題を macOS の権限だけに起因すると決めつける
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、ダウンロードフォルダー、一時コピーから直接実行し続けることは推奨しません。

メニューバーの Clash Verge Rev を完全に終了し、Clash Verge.app を「アプリケーション」へドラッグしてから、そのフォルダーから開きます。現在のバージョンが v2.5.2 より古い場合は、プロジェクトの Release から Apple Silicon または Intel に対応する安定版インストーラーをダウンロードしてください。以前のアプリケーションが動作している間に上書きインストールしないでください。

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

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

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

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

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

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

    M シリーズは Apple Silicon、Intel Mac は Intel を選択します。既存の Profile は比較用に残してください。

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

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

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

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

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

configure tun interface: operation not permitted

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

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

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

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

権限経路は正常に通っています。DNS、ルール、ノード、別の VPN とのルーティング競合を調べてください。

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

この状態をロールバック用の基準として維持し、サービスだけを修正します。サブスクリプションは作り直さないでください。

複数のバージョンをまたいでアップグレードした場合は、公式の順序でサービスを再インストールする

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

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

先にパスを確認し、その後で公式のアンインストールツールとインストールツールを実行する
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 を記載します。

  4. 利用可能なモードへ戻す

    公式の修正または管理者の対応が終わるまではシステムプロキシを使用し、不明なスクリプトを追加し続けないでください。

五項目を確認し、TUN が実際に復旧したことを証明する

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

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

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

参考資料