まずは3つに分類:コア・クライアント・設定
Clashのデスクトップ版を検索すると、Clash、Clash Meta、mihomo、Clash Verge Rev、Clash for Windowsといった名前が並びます。しかし、これらは同じ階層のものではありません。通信を処理するコア、ウィンドウやトレイメニューを提供するクライアント、設定形式の呼び名など、それぞれ役割が異なります。まず違いを把握すれば、何をダウンロードするか、問題発生時にどこを確認すべきか判断しやすくなります。
- コア:設定を読み込み、ローカルのプロキシポートを待ち受け、DNS解決、ルール判定、プロキシグループによる経路選択、プロトコル接続を実行します。GUIがなくても、コマンドラインから動作させられます。
- GUIクライアント:サブスクリプションのインポート、設定の切り替え、システムプロキシのオン・オフ、コアプロセスの管理、ログ表示、一部の権限を必要とするシステム連携を担います。
- 設定とサブスクリプション:ノード、プロキシグループ、振り分けルール、DNSパラメーターをコアに渡します。サブスクリプションは設定やノード情報を取得する方法の一つで、クライアントそのものでも、特定のコアを意味するものでもありません。
たとえば、ブラウザーがリクエストをローカルの127.0.0.1:7890に送ると、受け取ってルールに従って転送するのがコアです。ウィンドウの「システムプロキシ」スイッチをクリックしたとき、OSのプロキシ設定を変更するのはクライアントです。7890はよく使われる設定例にすぎません。実際のポートは、起動中のクライアントの設定を確認してください。
プロジェクトの系譜:オリジナルClash、Clash Meta、mihomo
オリジナルClashとPremiumの違い
オリジナルClashは通常、Dreamacro/ClashプロジェクトのGo製プロキシコアを指します。YAML設定、プロキシグループ、ルールリスト、制御APIなどの利用慣習が定着し、これらのインターフェースに対応したクライアントは広く「Clashクライアント」と呼ばれるようになりました。オリジナルプロジェクトは2023年11月に公開メンテナンスを終了しています。古いバージョン番号を、現在も更新中の製品ラインと混同しないようにしましょう。
過去にはClash Premiumも存在しました。オープンソース版と機能が完全に同じではなく、PremiumではTUNやルールプロバイダーなどの拡張機能が提供されていました。古いチュートリアルに「Premiumのみ対応」と書かれている場合は、当時のコアを踏まえて判断してください。その記述から現在のmihomoが非対応だと断定することも、旧版Clashが必ず対応していると考えることもできません。
Clash Metaはmihomoとして発展
Clash Metaは、Clashの技術を引き継いで機能を拡張したコアの派生プロジェクトです。その後、mihomoの名称で開発が続いており、リポジトリ名はMetaCubeX/mihomoです。そのため、多くのチュートリアルで「Metaコア」と「mihomoコア」は同じ進化の系譜を指し、2つのプロキシプログラムを同時にインストールする必要はありません。
mihomoはClashの設定方式を数多く引き継ぎながら、プロトコル、DNS、ルール、TUNなどの機能を追加・変更しています。ただし、互換性があるからといって、あらゆる設定を異なるコア間でそのまま使えるわけではありません。新しいフィールドを旧コアが認識できない場合や、特定のプロトコル・ルールの動作が特定バージョンでしか実装されていない場合があります。判断には、対象コアのドキュメント、リリースノート、起動ログを確認してください。設定ファイル名に「Clash」とあるかどうかだけでは判断できません。
オリジナルClash ── 派生・拡張の系譜 ── Clash Meta → mihomo
↑
Clash Verge Revが呼び出す
オリジナルClash Verge ── クライアントの継続開発ブランチ ── Clash Verge Rev
この系譜図が示すのは、コードと機能の流れです。Clash Verge RevはClash Vergeのクライアント系譜を引き継いでおり、mihomoの名前を変えてウィンドウを追加したものではありません。mihomoとクライアントは、それぞれ独立したバージョンとリリースサイクルを持っています。
Clash Verge RevやClash for Windowsなど、クライアントの違い
| 名称 | 位置づけ | 選ぶ際の確認ポイント |
|---|---|---|
| オリジナルClash | プロキシコア | 過去の設定との互換性、元プロジェクトのメンテナンス終了 |
| mihomo / Clash Meta | プロキシコア | コアのバージョン、プロトコル、設定フィールドの対応状況 |
| Clash Verge Rev | GUIクライアント | OSとアーキテクチャ、同梱mihomoのバージョン、サービスとTUNの設定 |
| Clash for Windows | 旧型GUIクライアント | メンテナンス終了。古いチュートリアルの画面は、現在のすべてのクライアントに当てはまるわけではありません。 |
| FlClash、Clash Nyanpasuなど | その他のGUIクライアント | 各プロジェクトの対応OS、コアの統合方法、リリース履歴 |
Clash Verge RevはClash Vergeのクライアント路線を引き継ぎ、mihomoでプロキシ通信を処理します。主な利点はデスクトップでの管理性です。コア設定、プロキシグループの選択、システム連携を一つのウィンドウに集約できます。無料・オープンソース・マルチプラットフォームはプロジェクトの特徴ですが、OSのバージョン、CPUアーキテクチャ、必要な機能は別途確認してください。
Clash for Windowsは、すでにメンテナンスが終了した旧型クライアントです。名称にWindowsとありますが、過去のリリースはWindows以外も対象としていました。また、Clash for WindowsはClashのデスクトップ版全般を指す名称ではありません。古いチュートリアルにあるGeneral、Profiles、Proxiesの各画面は、それぞれおおむね一般設定、設定管理、プロキシポリシーに相当します。他のクライアントにも同じメニューがあるとは限りません。
クライアントのバージョンとコアのバージョンは別
問題を調べる際は、少なくともクライアント名とバージョン、コア名とバージョン、OSとアーキテクチャの3点を記録してください。まず「設定」から「バージョン情報」などを確認し、次にコアの設定や起動ログを見ます。メニュー名はディストリビューションによって異なります。「Clashを更新した」だけでは、画面を更新したのか、コアを更新したのか、サブスクリプションを再取得しただけなのか判断できません。
サブスクリプションの互換性は、最終的にコアへ渡る設定で決まる
「Clashサブスクリプション」は、完全なYAML設定を返す場合もあれば、ノード一覧だけの場合や、リンク切れでログインページが返る場合もあります。クライアントにリンクを保存できても、コアが内容を受け付けたとは限りません。完全な設定には通常、proxies、proxy-groups、rulesなどのフィールドが含まれます。一方、proxy-providersでノードプロバイダーファイルを参照する場合は、完全な設定と同じ構造をすべて備えている必要はありません。
- まずサブスクリプションの出力形式を確認します。提供元が複数の形式に対応している場合は、使用するコアと互換性のあるものを選びます。ブラウザーにBase64テキストやHTMLページが表示されても、そのまま完全なYAML設定として扱わないでください。
- 次にプロトコルとフィールドを確認します。サブスクリプションに新しいプロトコル、DNSフィールド、mihomo拡張ルールが含まれていると、旧版コアでは解析エラーになることがあります。接続時になって初めて失敗する場合もあります。
- 最後にクライアントによる統合後の設定を確認します。クライアントの上書き設定、設定のマージ、スクリプトによって、ポート、DNS、ルールが変更されることがあります。サブスクリプションの内容が正しくても、実際に動作する設定が同じとは限りません。
unsupported proxy typeのようなエラーが表示された場合は、まずノードの種類とコアの対応状況を確認します。YAMLの解析エラーなら、インデントと内容の形式を確認してください。むやみにクライアントを切り替えても、同じ誤った設定を別の画面から読み込むだけかもしれません。
ポート、システムプロキシ、TUNの担当範囲
最小構成でローカル接続の入口を確認
以下は設定項目の関係を示すための最小構成です。リモートプロキシノードは含まず、すべての通信が直接接続されます。サブスクリプションの代わりになるプロキシ設定ではなく、現在使用中の設定を上書きして使うことも推奨しません。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
rules:
- MATCH,DIRECT
mixed-port: 7890:コアが同じポートでHTTPとSOCKSのプロキシ接続を受け付けます。接続先は通常、127.0.0.1:7890と指定します。allow-lan: false:LAN内の他のデバイスにプロキシの入口を公開しません。「ローカルアプリからのプロキシ利用を許可する」設定とは別のものです。mode: rule:ルールに従って経路を選択します。モードを切り替えても、リモートノードが自動で追加されるわけではありません。MATCH,DIRECT:どのルールにも一致しない通信を直接接続します。実際のサブスクリプションでは、一部の通信をプロキシグループに割り当て、グループからノードを選ぶ構成が一般的です。
システムプロキシを有効にしても、すべてのアプリが接続されるわけではない
クライアントで「システムプロキシ」を有効にすると、通常はシステムのHTTPプロキシの接続先がコアの入口に設定されます。この入口を使うのは、システムプロキシ設定に従うアプリだけです。独自にネットワーク接続を管理するプログラム、一部のゲーム、特定のUDP通信は、この設定に従わないことがあります。ポートが待ち受け中であること、システムプロキシが有効であること、特定のプログラムがプロキシを通っていることは、それぞれ個別に確認が必要です。
TUNモードでは、コアが仮想ネットワークインターフェースやルーティング設定と連携して通信を取り込み、クライアントが権限、サービス、オン・オフを管理します。管理者権限やサービスコンポーネントのインストールが必要な場合があります。TUNは「グローバルモード」の別名ではありません。TUNは通信をコアへ取り込む方法を決め、ルールモードやグローバルモードは取り込んだ通信の経路を決めます。それぞれ別に設定できます。
TUNの問題が発生したら、クライアントのサービス状態、コアの起動ログ、DNSとルーティング設定をあわせて確認してください。同じ名前のコアファイルに置き換えるだけでは、権限や仮想ネットワークアダプターの問題は解決しないことがあります。かえってクライアントとコアの互換性を損なうおそれもあります。
用途に合う選択と移行:4つの手順で確認
- まずOSとアーキテクチャを確認します。Windowsではx64とARM64、macOSではAppleシリコンとIntelを区別します。先にシステム情報で確認し、適切なインストーラーを選びましょう。ファイル名にWindowsやmacOSと書かれているだけで判断しないでください。
- 次に使い方を決めます。トレイ、設定管理、システムプロキシの切り替えが必要ならGUIクライアントを選びます。サーバーや既存のプロセス管理環境で使う場合に限り、mihomoを直接実行する方法を検討してください。
- メンテナンス状況と依存関係を確認します。クライアントの最近のリリースノートと、統合されているコアの情報を確認し、必要なプロトコル、TUN、DNSに対応しているかを重点的に調べます。新しいクライアントでも、コアが常に自動で最新になるとは限りません。
- 移行時は一度に1つだけ有効にします。元の設定をバックアップし、旧クライアントを終了してシステムプロキシとTUNを無効にしてから、新しいクライアントを起動します。ポートやルーティングの競合を防げます。
インポート後に通信経路を確認する方法
まず設定画面で使用する設定を有効にし、次にプロキシ画面でプロキシグループの選択を確認します。最後に、ログにポート競合や解析エラーがないか確認してください。実際のmixed-portが7890なら、Windowsではターミナルから次のコマンドを実行し、HTTPプロキシの入口を明示できます。
curl.exe --proxy http://127.0.0.1:7890 --connect-timeout 10 -I https://example.com
このコマンドはブラウザーがシステムプロキシを参照するかどうかに左右されませんが、接続先サイトに到達できる必要があります。レスポンスヘッダーが返ってきても、指定した入口経由でリクエストが完了したと分かるだけで、リモートノードを利用した証明にはなりません。クライアントの接続画面で、接続先ドメイン、適用ルール、選択されたプロキシ経路も確認してください。ローカルポートに接続できない場合は、サブスクリプションをすぐ変更せず、まずポートとコアの状態を確認しましょう。
選び方は2点にまとめられます。デスクトップで日常的に使うなら、クライアントのシステム連携とメンテナンス状況を重視します。設定機能やネットワークの動作は、実際に稼働しているコアで決まります。「画面の名称」と「コアの対応機能」を分けて記録しておけば、チュートリアルの参照、アップグレード、トラブル対処がスムーズになります。設定項目をさらに確認する場合は、当サイトの設定の応用をご覧ください。初めて使う場合は、使い方ガイドに沿ってインポートとシステムプロキシの設定を行ってください。