まずはカーネル、GUIクライアント、サブスクリプションの3層を区別

「Clash ダウンロード」で検索すると、コマンドラインツール、デスクトップ版インストーラー、スマートフォンアプリが一緒に表示されることがあります。これらは同じ層のものではありません。カーネルはプロキシと通信の振り分けを処理し、GUIクライアントはカーネルの管理・起動を担い、サブスクリプションはノードや設定データを提供します。この3層を分けて考えると、「クライアントを変えれば問題が解決するか」を判断しやすくなります。

  • カーネル:プロキシポートの待ち受け、外部への接続、ルール判定、DNS処理を担います。mihomoはこの層に属し、GUIなしでも単独で動作します。
  • GUIクライアント:サブスクリプションの管理、プロキシグループの選択、システムプロキシの切り替え、バックグラウンドサービスの導入を行い、カーネルのログや接続履歴を表示します。
  • サブスクリプション:ノード一覧だけを提供する場合もあれば、DNS、ルール、プロキシグループを含むYAML設定一式を提供する場合もあります。サブスクリプションサービス自体はカーネルプロジェクトではありません。

たとえば、クライアントの画面に「実行中」と表示されても、何らかのプロセスやサービスが起動したことを示すだけで、サブスクリプション内のノードに接続できるとは限りません。逆に、ブラウザーから 127.0.0.1:7890 経由でインターネットに接続できても、TUNがデバイス全体の通信を処理している証拠にはなりません。まず問題がどの層にあるかを特定してから、何を更新するか決めるほうが、何度も再インストールするより効率的です。

オリジナル版Clash、Premium、Metaからmihomoへの変遷

オリジナル版Clash:設定モデルとルール体系の出発点

Dreamacro/clashは、このエコシステムの重要な出発点です。Goで開発され、オリジナルのオープンソースカーネルはGPL-3.0ライセンスで公開されていました。現在も使われている設定の考え方の多くは、ここから受け継がれています。たとえば proxies、proxy-groups、rulesや、ルールを上から順に照合する仕組みです。2023年11月ごろに元プロジェクトの公開メンテナンスは終了しましたが、過去のクライアントや解説記事がインターネットから消えたわけではありません。

古い解説記事が誤解を招きやすいのはこのためです。HTTPプロキシやルールの順序に関する説明は今も通用する場合がありますが、インストーラー、カーネルの機能、システム権限の設定は当時と同じとは限りません。「Clashはこの項目に対応」と書かれていたら、どのカーネルの、どのビルドを指しているのか確認しましょう。

Clash Premiumはmihomoの「有料上位版」ではない

Clash Premiumは、オリジナルのエコシステムで別途配布されていたクローズドソースのカーネル分岐で、TUNやスクリプトなどの拡張機能を提供していました。Premiumは分岐の名称であり、GUIクライアントの有料プランを意味するものではありません。実装全体が公開されていないため、後発のmihomoを「公開されたPremiumのソースコードを引き継いで更新したもの」と単純に位置づけることはできません。

オープンソース版Clash、Premium、Metaには機能の重なりがありますが、設定項目がすべて同じように使えるわけではありません。特に、古いPremiumのスクリプトルールは、実行ファイルをmihomoに置き換えるだけで動くとは限りません。移行時には、移行先のカーネルが対応するルールやプロキシグループに書き換えてください。

Clash.Metaからmihomoへ:名称変更と機能拡張

Clash.MetaはClashのオープンソースコードをもとに発展したコミュニティ版で、後にmihomoへ改称しました。リポジトリ名は MetaCubeX/mihomo です。そのため、古い資料の「Metaカーネル」やサブスクリプションサービスの「Clash Meta形式」は、別途インストールが必要な別プログラムではなく、現在のmihomoエコシステムを指していることがよくあります。

mihomoはClash形式のYAML設定と制御インターフェースを引き継ぎながら、対応プロトコル、ルール、DNS機能を継続的に拡張しています。ライセンスはGPL-3.0ですが、mihomoを利用するGUIクライアントは異なるライセンスを採用している場合があります。ソフトウェアのライセンスを確認するときは、インストーラーの名称だけで判断せず、フロントエンドとカーネルそれぞれのLICENSEを確認してください。

関係図:矢印の意味をそれぞれ表示
オリジナル版Clashのオープンソースコード
  └─ コミュニティ版として発展 → Clash.Meta
                       └─ プロジェクト名を変更 → mihomo

Clash Premium
  └─ オリジナルのクローズドソースカーネル分岐。mihomoの公開ソースコードの上流ではない

Clash Verge Rev / FlClashなどのGUIクライアント
  └─ パッケージ化して起動し、制御インターフェース経由で管理 → mihomo

Verge、FlClash、Nyanpasuはそれぞれどの層に属する?

これらの名称が指すのは主にGUIクライアントであり、まったく異なる3種類のプロキシプロトコルではありません。同じ系統のカーネルを呼び出すこともありますが、サブスクリプションの統合、バックグラウンドサービス、システムプロキシの設定、更新方針はそれぞれ異なります。ここではプロジェクト間の関係を整理し、画面が似ていることをコードの継承関係の根拠とはみなしません。

プロジェクト名分類選ぶ際の確認ポイント
mihomoプロキシカーネルカーネルのバージョン、設定項目、対象アーキテクチャ。デスクトップ用の管理画面は標準で付属しません
Clash Verge旧デスクトップクライアント元プロジェクトはアーカイブ済み。Clash Verge Revのリリース情報と混同しないでください
Clash Verge RevVergeの系譜を引き継ぐデスクトップクライアントWindows、macOS、Linux向けインストーラーと同梱mihomoのバージョン
FlClashFlutterベースのGUIクライアントデスクトップ版とAndroid版の機能差、および実際に同梱されているカーネル
Clash NyanpasuVergeの系譜に連なるデスクトップクライアント現行リリースで使えるカーネルの選択肢、設定の拡張方法、サービスの動作モード
Clash for Windows旧デスクトップクライアントメンテナンス終了。名称にWindowsが含まれていても、Windows専用だったという意味ではありません
Clash for Android旧Androidクライアントメンテナンス終了。インストールできるというだけで新しい設定に対応していると判断しないでください

Clash VergeとClash Verge Revは区別して確認

「Verge」は略称として使われがちですが、旧Clash Vergeと後継のClash Verge Revは、リリースページが異なります。Revは元プロジェクトの系譜を引き継ぎ、mihomoカーネルを採用しています。古いインストール手順が見つかった場合は、操作画面の画像を見る前に、プロジェクトの正式名称とリリースリポジトリを確認してください。メニュー名が同じでも、バックグラウンドサービスの実装は変更されている可能性があります。

FlClashとFlClashsを同じリリースとして扱わない

FlClashはFlutterでUIを構築しており、デスクトップやAndroidなどに対応しています。ダウンロード一覧にFlClashsも表示されている場合は、別の配布名として、メンテナー、リポジトリ、パッケージ名、説明を個別に確認してください。名前に1文字しか違いがないからといって、更新情報が共通とは限りません。サイト上の表示名、インストール後のアプリ名、上流プロジェクト名が一致しない場合もあります。

Nyanpasuで選べるカーネルは、実際のリリースで確認

Clash NyanpasuもGUI管理クライアントです。リリースの時期によって選べるカーネルが異なる場合があるため、古いスクリーンショットの切り替えメニューを恒常的な機能一覧とみなさないでください。トラブル調査では「クライアントのバージョン」「現在選択中のカーネル」「カーネルのバージョン」を記録しましょう。「Nyanpasuを使っている」という情報だけでは、設定項目を解釈できるか判断できません。

同じサブスクリプションでもクライアントによって動作が違う理由

サブスクリプションの互換性は、単純なオン/オフで決まるものではありません。同じURLを読み込んでも、クライアントごとに異なるリクエストヘッダーを送る場合があり、それに応じてサーバーが異なる内容を返すことがあります。返された内容が同じでも、クライアント側で設定が上書きされ、最終的に異なるバージョンのカーネルで処理されることがあります。比較するときは、サブスクリプション編集欄の元データだけでなく、実際に適用されている設定を確認してください。

  1. 返される形式を確認:Clash形式の完全なYAMLには通常、proxiesやproxy-providersなどの項目が含まれます。ノードリンクの一覧だけでは、完全な設定としてそのまま読み込めるとは限りません。
  2. カーネルの対応状況を確認:古いカーネルが新しいプロトコルや設定項目に対応しているとは限りません。ログに unsupported proxy type のようなエラーが出たら、同じサブスクリプションを何度も更新するのではなく、まずカーネルを確認してください。
  3. ローカル上書きを確認:クライアントが mixed-port、dns、tun、external-controller を上書きする場合があります。元の設定に7890と記載されていても、最終的な待ち受けポートが7890とは限りません。
  4. ルールの参照先を確認:ルール内のプロキシグループ名は、実際に定義された名前と一致している必要があります。MATCH,PROXY の PROXY は参照先の名前であり、どの設定にも自動的に用意される予約済みグループではありません。

コマンドで実行中のカーネルを確認する

インストーラーのファイル名だけで判断しないでください。まずクライアントの「バージョン情報」やカーネル情報の画面でバージョンを確認します。項目名はリリースによって異なります。独立したカーネルファイルを確認する場合は、そのファイルがあるディレクトリで次のコマンドを実行してください。ここではmihomoでよく使われるファイル名を例にしています。実際のファイル名が異なる場合は、手元の名前に置き換えてください。

Windows PowerShell
.\mihomo.exe -v
.\mihomo.exe -t -d . -f .\config.yaml
macOS / Linux
./mihomo -v
./mihomo -t -d . -f ./config.yaml

-v はカーネルのバージョンを表示し、-t は設定を検証します。-d . はカレントディレクトリを作業ディレクトリに指定し、ローカルデータファイルの場所を確認しやすくします。リモートのルールセットなどを含む設定では、検証結果がネットワークやファイルパスの影響を受ける場合もあります。設定テストに合格しても、関連する検査を通過したことを示すだけで、すべてのノードへの接続を保証するものではありません。

クライアントでローカル制御インターフェースが有効になっている場合は、バージョンを取得することもできます。次の例は、制御アドレスが 127.0.0.1:9090 で、制御キーを設定していないローカル環境のみを対象としています。キーを設定している場合は、設定に従ってBearer認証を追加してください。例を実行するためにキーを削除しないでください。

実行中のカーネルのバージョン情報を取得
curl http://127.0.0.1:9090/version

旧クライアントからの移行:設定・権限・通信を3段階で確認

手順1:設定の元データをバックアップし、ディレクトリごと上書きしない

サブスクリプションURL、ローカルルール、プロキシグループの選択記録、上書きスクリプトを保存してください。新しいクライアントでサブスクリプションを読み込み直してから、ローカルの変更を一つずつ移行します。旧アプリのデータディレクトリを新アプリのディレクトリに丸ごと上書きしないでください。データベース構造、パスの規則、スクリプト用インターフェースが異なる可能性があります。YAMLの形式が似ていても、内部データまで互換とは限りません。

手順2:まず通常のプロキシを確認し、その後TUNを有効化

新しいクライアントで実際の mixed-port を確認してください。たとえば7890なら、次のコマンドで通常のHTTPプロキシ経由の接続を確認できます。例のドメイン名はコマンドの使い方を示すためのもので、返されるステータスはネットワーク環境やルールによって異なります。特定の「実測遅延」を示すものではありません。

ローカルプロキシ経由でHTTPSリクエストを送信
curl -I --proxy http://127.0.0.1:7890 https://example.com

通常のプロキシが動作したら、システムプロキシとTUNをテストします。システムプロキシの設定が反映されるのは、主にシステム設定に従うアプリです。TUNは仮想ネットワークインターフェース経由で通信を処理するため、通常はバックグラウンドサービス、管理者権限、またはプラットフォームのVPN許可が必要です。Androidでは一般にシステムのVPNインターフェースを使うため、デスクトップ版とはサービスの導入手順が異なります。

手順3:DNS、UDP、スリープ復帰を確認

  • DNS:通常のWeb閲覧とアプリ内アクセスを比較し、システムの名前解決リクエストが想定どおり処理されているか確認してください。TUNを有効にしても、すべての暗号化DNS通信が自動的に制御されるわけではありません。
  • UDP:音声通話、ゲーム、QUICにはノードとプロトコルの対応も必要です。Webページが開けても、UDPが使えるとは限りません。
  • スリープ復帰:デバイスがスリープから復帰して再接続した後、バックグラウンドのカーネルが動作しているか、システムプロキシのポートで引き続き待ち受けているか確認してください。
  • 終了後の復元:クライアント終了後にシステムプロキシ設定が元に戻ることを確認してください。システムが停止済みの7890ポートを参照したままだと、「ネットワーク全体が切れた」ように見えることがあります。

選び方の結論:名前だけでなくメンテナンスの流れを確認

デスクトップでは、Clash Verge Rev、FlClash、Clash Nyanpasuについて、設定管理の方法、サービスに必要な権限、カーネルの更新方法を比較できます。Androidでは、システムVPNの許可、バックグラウンド動作の制限、現在配布されているパッケージの対応アーキテクチャを重点的に確認してください。iOSではアプリごとに設定の互換範囲を確認し、デスクトップ版mihomoの機能をそのまま利用できると考えないでください。

最終的に記録しておきたいのは、後からたどれる一連の情報です。インストーラーの入手元 → クライアントのリリース → 実際のカーネルバージョン → 最終的に適用された設定。画面だけを変えてもプロトコルの互換性問題が直るとは限らず、カーネルを更新してもシステムプロキシの設定残りが解消するとは限りません。各層を明確にしてログを確認すれば、プロジェクトの系譜は単なる名称の羅列ではなく、トラブル対処に役立つ情報になります。

インストール手順を確認したい場合は全プラットフォーム対応ガイドをご覧ください。TUNやプロキシグループなどの用語に不慣れな方は、先に用語解説を読むと理解しやすくなります。ダウンロード時はOSとCPUアーキテクチャに合ったものを選び、クライアントのメンテナンス状況も確認してください。