カーネルの歴史:オリジナル版Clash → Clash Meta → mihomo

Clashカーネルは設定の読み込み、ルールマッチング、通信の振り分けを担う中核プロセスであり、Clash VergeやClashXといったGUIクライアントは、このカーネルの上に被せた操作画面にすぎません。画面は変わっても、カーネルの系統は2つしかありません。開発が停止したオリジナル版Clashと、コミュニティが引き継いで開発を続けるClash Meta(現mihomo)です。この2つの系統を区別することが、クライアント選び・チュートリアルの読み方・トラブル対応の前提になります。

  • オリジナル版Clash:Dreamacro氏がGo言語で開発し、GPL-3.0でオープンソース化。2023年11月に作者がリポジトリを削除し、プロジェクトは終了。同時期にクローズドソースの強化版Clash Premium(TUN・スクリプトルール搭載)も更新停止となりました。
  • Clash Meta:MetaCubeXチームがオリジナル版の公開コードをもとに開発を継続し、新プロトコル対応・オープンソースTUN・ドメインスニッフィングなどの機能を追加。コミュニティ内では通称「Metaカーネル」と呼ばれます。
  • mihomo:2023年末にClash Metaがmihomoへ改名。バージョン番号はv1.18から連番で継続しており、現在唯一アクティブに開発が続く主流カーネルです。主要な新規クライアントはすべてこのカーネルを内蔵しています。

オリジナル版Clash:更新停止時点の機能ベースライン

オリジナル版Clashは2023年11月時点で開発が止まっており、その機能一覧はClash系カーネル全体の共通の出発点と見ることができます。

  • 対応プロトコル:HTTP、SOCKS5、Shadowsocks、ShadowsocksR、VMess、Trojan、Snellに対応し、インバウンド・アウトバウンドとも揃っています。
  • ルール分岐:DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、GEOSITE、IP-CIDR、GEOIP、SRC-IP-CIDR、DST-PORT、MATCHなどのタイプに対応。ポリシーグループはselect、url-test、fallback、load-balance、relayの5種類。
  • DNSモジュール:nameserver、fallback、enhanced-mode(fake-ip / redir-host)に対応し、ドメインごとに解析経路を振り分け可能。
  • クローズドソースのPremium強化機能:TUNによる全体制御、rule-providersによるルールセット(RULE-SET)、PROCESS-NAMEによるプロセスマッチング、SCRIPTルール。このコードは一度も公開されていません。

開発停止の影響は「新機能が増えない」だけではありません。Hysteria2、TUIC、Realityなど2023年以降に普及したプロトコルは一切利用できず、Goランタイムや暗号化コンポーネントも旧バージョンのまま固定され、セキュリティ上の問題が修正されることもありません。新しいOSへの対応も誰も手がけていません。オリジナル版カーネルの今日的な価値は、長年変更していない古い設定との互換性だけです。

Clash MetaとmihomoコミュニティによるSystematic拡張一覧

mihomoはオリジナル版をベースに体系的な拡張を行っており、追加分は主に4つの方向に集中しています。

プロトコル面

VLESS(XTLS VisionフローコントロールとRealityを含む)、Hysteria、Hysteria2、TUIC v5、WireGuard、SSHアウトバウンドが新たに追加され、新バージョンではAnyTLSなどのプロトコルも順次サポート。Shadowsocks、VMess、Trojanなどの旧プロトコルは完全に保持されており、既存ノードもそのまま利用できます。

TUN面

クローズドソースだったPremiumのTUNをオープンソースで作り直し、stackはsystem、gvisor、mixedの3種類から選択可能。auto-routeによる自動ルーティング、auto-detect-interfaceによる出口ネットワークアダプタの自動選定、dns-hijackによるシステムDNSクエリの引き受けが揃っています。全体制御にクローズドソースコンポーネントはもはや不要です。

スニッフィングとルール面

sniffer(ドメインスニッフィング)は、TLSハンドシェイクのSNIやHTTPリクエストのHostから実際のドメインを復元し、fake-ip環境でIPベースのルールがマッチしない問題を解決します。ルール側にはAND、OR、NOTのロジック組み合わせとSUB-RULES(サブルール)が追加され、rule-providersにはinline記法とバイナリ形式mrsが追加。PROCESS-NAMEによるプロセスマッチングはオープンソース化され、全プラットフォームで対応しています。

DNSとスケジューリング面

DNSにはrespect-rules(分岐ルールに応じた解析経路の決定)、proxy-server-nameserver(プロキシ経由でのノードドメイン解析)、direct-nameserver(直接接続用の解析経路指定)が追加。スケジューリング面ではunified-delayによる統一遅延計測、tcp-concurrentによる並行接続、find-process-modeによるプロセス検出、global-client-fingerprintによるTLSフィンガープリントなどの調整項目を用意。外部制御APIはオリジナル版と互換性があり、各種パネルもそのまま利用できます。

機能比較:オリジナル版Clash vs mihomo

比較項目オリジナル版Clash(Premium含む)Clash Meta / mihomo
メンテナンス状況2023年11月に開発停止アクティブに開発継続中、バージョン更新も継続
オープンソース状況コアはGPL-3.0、TUNなどの強化機能はクローズドソースGPL-3.0で全機能オープンソース
対応プロトコルSS、SSR、VMess、Trojan、Snell、HTTP、SOCKS5オリジナル版の全機能に加え、VLESS/Reality、Hysteria2、TUIC、WireGuardなどに対応
TUNモードクローズドソースのPremiumのみ提供標準搭載でオープンソース、system/gvisor/mixedの3種stack
ドメインスニッフィングなしsniffer標準搭載、TLSとHTTPの両方に対応
ルールセットrule-providersはPremiumのクローズドソース機能プロセスマッチングPROCESS-NAMEはPremiumのみ対応オープンソース化、全プラットフォーム対応
DNSチューニングnameserver、fallback、enhanced-moderespect-rules、proxy-server-nameserver、direct-nameserverを追加
論理ルールなしAND / OR / NOTの組み合わせとSUB-RULES(サブルール)
外部制御APIRESTful API + WebSocketインターフェース互換、パネルの移行もスムーズ

結論はシンプルです。mihomoはオリジナル版Clashの厳密な上位互換であり、設定ファイルの文法も後方互換性があります。オリジナル版で動くサブスクリプションや設定は、mihomoでもすべて動作します。逆は成立しません。VLESS、Hysteria2、オープンソースのTUNスタックを使った設定をオリジナル版カーネルに戻すと、そのままエラーになるか無視されます。

設定の違い:移行時に必ず書き換える項目

オリジナル版からmihomoへ移行する場合、大半の項目はそのまま利用できますが、以下の4点は落とし穴になりやすいので注意が必要です。

  • external-controllerの書き方は変わらない:パネルのアドレスとsecret認証形式は共通です。移行後はまずパネルがカーネルに接続できることを確認してから、他の項目に進みましょう。
  • TUN設定の構造が異なる:オリジナル版PremiumのTUN項目と、mihomoのオープンソースTUNの項目名・階層は異なります。旧設定のtunセクションはmihomoのドキュメントに沿って書き直すのがおすすめです。auto-routeauto-detect-interfaceを有効にすれば、手動でのルーティング設定の大半を省略できます。
  • rule-providersの形式が拡張されている:オリジナル版Premiumはyaml/text形式のルールセットのみ対応でしたが、mihomoはさらにinlineとmrsにも対応しています。サードパーティのルールセットを利用する際は、behaviorとformatの2項目が一致しているか確認してください。
  • fake-ipとスニッフィングの連携:mihomoのデフォルト動作は「先にスニッフィングしてからマッチング」に近い挙動です。旧設定が特定のfake-ip動作に依存している場合は、snifferとfake-ip-filterの組み合わせを確認し、ドメインルールが無視されないよう気をつけましょう。

設定の互換性チェックリスト

サブスクリプションと基本ルールのみの古い設定は、そのままmihomoに読み込んで動作します。TUN、rule-providers、SCRIPTルールを含む設定は、移行前にmihomoのドキュメントと1項目ずつ照らし合わせてください。SCRIPTルールはmihomoではサブルールとスクリプトポリシーグループに置き換わっています。

選び方のポイント:利用シーン別ガイド

新規インストールのユーザー

mihomoカーネルを内蔵したクライアントを直接選び、オリジナル版には手を出さないのが正解です。新プロトコル・新OS対応・新ルールセットはすべてmihomo系統でのみ更新されるため、オリジナル版を選ぶことは初日から今後のメンテナンスを放棄することと同じです。

既存の設定を使い続けたい場合

サブスクリプションにSS、VMess、Trojanなどの旧プロトコルしかなく、設定を長年変更していないなら、一時的にオリジナル版のままでも構いません。ただし早めにmihomoへ移行することをおすすめします。移行コストの大半はTUNとルールセットの2点だけで、一度対応すれば長く恩恵を受けられます。

全体制御(TUN)が必要な場合

ゲームアクセラレーター、UWPアプリ、システムプロキシに従わないアプリなどには、mihomoのオープンソースTUNを選び、stackはmixedにすると互換性と性能のバランスが取れます。クローズドソースのPremium TUNにはもう依存しないようにしましょう。今後修正されることはありません。

サブスクリプションに新プロトコルが含まれる場合

ノードリストにVLESS Reality、Hysteria2、TUICのいずれかが含まれている場合、対応できるのはmihomoのみです。オリジナル版では解析すらできません。これは手持ちのクライアントのカーネルが新しいか古いかを最も手早く判断する方法でもあります。サブスクリプションをインポートして、新プロトコルのノードが表示されるか確認してみてください。

複数クライアントを併用する場合

同一マシンに複数のクライアントを入れている場合は、それぞれのカーネルバージョンを確認しておきましょう。一方のクライアントがシステムプロキシやルーティングを変更した後、旧カーネルベースの別のクライアントが古いロジックで制御を引き継ぐと、ルールが互いに競合してしまいます。

バージョン識別:3秒でカーネルの新旧を見分ける方法

  1. クライアントの「バージョン情報」や「カーネル情報」ページを開き、カーネル名とバージョン番号を確認してください。Clashと表示され、バージョンが2023年時点で止まっているものはオリジナル版です。mihomoまたはClash Metaと表示され、バージョン番号がv1.18以上のものはコミュニティ主流版です。
  2. 対応プロトコル一覧を確認する方法:Hysteria2、VLESS、TUICの選択肢があればmihomo、SS/SSR/VMess/Trojanのみならオリジナル版です。
  3. TUN設定項目を確認する方法:stack、auto-route、dns-hijackといった項目があればmihomoのオープンソースTUN。TUNのオン/オフのみで詳細項目がない場合は、多くがPremiumのクローズドソース実装です。

カーネルの選択を誤った場合の典型的な症状としては、サブスクリプション読み込み後にノードが大量に欠落する、TUNを有効にしても機能しない、ルールのマッチング結果がチュートリアルと合わないといったことが挙げられます。この3つの症状が出た場合は、まずカーネル系統を確認してから設定を調べましょう。