なぜ Clash Meta は mihomo へと進化したのか

Clash Meta を長く使ってきたユーザーであれば、2023年末から2024年初頭にかけての大きな変化に気づいたはずです。オリジナルの Clash プロジェクトがアーカイブ化・メンテナンス停止を宣言し、コミュニティ主導で開発されてきた Clash Meta は活発な改良を重ねた末、2024年に mihomo という新しい名称で正式リリースされました。これは単なるリネームではなく、コアアーキテクチャ全体の抜本的な刷新を意味しています。

  • コードベースが独立リポジトリへ移行し、旧 Clash との依存関係を完全に切り離した
  • YAML 設定フォーマットは後方互換性を保ちつつ、多くの新フィールドが追加された
  • DNS モジュールが再設計され、DoH3・QUIC などの新プロトコルに対応
  • ルールエンジンに rule-set 外部ルールセットが導入され、パフォーマンスが大幅向上
  • TUN モード(Mixed Port)の安定性が著しく改善され、IPv6 にも正式対応

旧 Clash.Meta(v1.x 系)の設定ファイルをお使いの方にとって、mihomo への移行はバイナリをそのまま差し替えるほど簡単ではありません。一部の設定フィールドは廃止・変更されており、そのまま置き換えるとプロキシが正常に動作しなかったり、起動に失敗したりする可能性があります。本ガイドでは、移行時に確認・修正すべきポイントを体系的に整理して解説します。

移行作業を始める前に

既存設定のバックアップ

何か変更を加える前に、まず config.yaml とカスタムルールファイルを必ずバックアップしてください。mihomo の設定ファイルはデフォルトで以下のパスに保存されています:

  • Windows:%USERPROFILE%\.config\mihomo\config.yaml
  • macOS / Linux:~/.config/mihomo/config.yaml
アップグレード前に設定ファイルを必ず安全な場所へコピーしておきましょう。移行で問題が発生した場合、いつでも旧設定に戻して元のコアに切り替えることができます。

現在のコアバージョンを確認する

ターミナルで以下のコマンドを実行して、現在の Clash / Clash.Meta のバージョンを確認してください:

# For old Clash / Clash.Meta binary
./clash -v

# For mihomo binary
./mihomo -v

出力に mihomo という文字列が含まれていれば、すでに新しいコアを使用しています。その場合は移行手順をスキップして、新機能の有効化セクションから読み進めていただけます。

設定ファイルの互換性チェック

mihomo は大半のケースで旧 Clash.Meta の YAML フォーマットとの後方互換性を保っていますが、以下のフィールドについては重点的に確認が必要です。

廃止・変更されたフィールド一覧

旧フィールド / 旧値 mihomo での書き方 備考
clash-for-android フィールドグループ 削除済み 旧 CFA 専用設定。mihomo はネイティブで無視します
external-controller: 0.0.0.0:9090 互換維持、127.0.0.1:9090 推奨 全インターフェースへのバインドはセキュリティリスクあり
dns.enhanced-mode: redir-host dns.enhanced-mode: fake-ip または normal redir-host モードは廃止済み
proxy-groupstype: fallback 引き続き使用可。type: url-test + lazy: true への移行推奨 動作に微妙な差異あり。動作確認を推奨
rules に大量のドメインルールを直書き rule-providers 外部ルールセットへ移行 インラインルールが多いほど起動が遅くなります

TUN 設定の変更点

TUN モードを使用していた場合、旧バージョンと mihomo の間には設定の書き方に大きな違いがあります。旧 Clash.Meta での設定例:

# Old Clash.Meta TUN config
tun:
  enable: true
  stack: system
  dns-hijack:
    - 198.18.0.2:53
  auto-route: true
  auto-detect-interface: true

mihomo での推奨設定(より多くの機能を有効化する場合):

# mihomo recommended TUN config
tun:
  enable: true
  stack: mixed         # mixed mode offers best compatibility
  dns-hijack:
    - any:53           # intercept all DNS queries
  auto-route: true
  auto-detect-interface: true
  strict-route: true   # prevent traffic bypassing TUN
stack: mixed を優先的に使用することをおすすめしますsystem スタックの安定性と gvisor スタックの互換性を兼ね備えており、mihomo が現在デフォルトで推奨するスタックモードです。

DNS 設定の変更点

mihomo の DNS モジュールはより多くのアップストリームタイプに対応し、nameserver-policy フィールドの優先度ロジックも若干変更されています。確認のポイントを以下に整理します:

  • enhanced-mode: redir-host に関連する設定をすべて削除し、fake-ip に変更する
  • fake-ip-filter を使用している場合、NTP・ゲーム・P2P など fake-ip に適さないドメインがリストに含まれているか確認する
  • nameserver には信頼性の高い DNS を設定する(例:Google の 8.8.8.8、Cloudflare の 1.1.1.1、または DoH 対応の DNS)
# Recommended DNS section for mihomo
dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "+.lan"
    - "+.local"
    - "time.*.com"
    - "ntp.*.com"
  nameserver:
    - 8.8.8.8
    - 1.1.1.1
  fallback:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query
  fallback-filter:
    geoip: true
    geoip-code: JP

geoip-code はお使いの環境に合わせて変更してください。日本国内からアクセスする場合は JP を設定することで、国内向けトラフィックの直接接続判定が正確になります。

mihomo の新機能を活用する

外部ルールセット:rule-providers

rule-providers は mihomo の新機能の中で最も実用性が高いものの一つです。外部 URL やローカルファイルからルールリストを動的に読み込める仕組みで、旧バージョンのように rules フィールドへ数百〜数千件のルールをインライン記述していた場合と比べて、パフォーマンスが劇的に改善されます。起動時間は数秒からミリ秒単位へ短縮され、メモリ消費量も大幅に削減されます。

# Define external rule providers
rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400
  cn-direct:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
    path: ./ruleset/cncidr.yaml
    interval: 86400

# Reference rule providers in rules section
rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,cn-direct,DIRECT
  - MATCH,Proxy

Sub-Rules:サブルールグループ

mihomo では sub-rules フィールドが追加され、ルールのグループネストが可能になりました。メインのルールリストが肥大化するのを防ぎながら、より精細なトラフィック分岐ロジックを構築できます。たとえば、まず地域別にグループ分けしてから、さらにアプリ種別で細分化するといった多段構成が実現でき、ルールファイル全体の可読性・保守性が大幅に向上します。

GeoSite / GeoIP データベースの更新

mihomo はデフォルトで GeoIP2GeoSite データベースを使用します。これらを長期間更新していないと、ルールのマッチング精度が低下することがあります。設定ファイルに以下を追加することで自動更新を有効にできます:

geodata-mode: true
geox-url:
  geoip: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
  geosite: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
  mmdb: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb"

よくある移行エラーと対処法

起動時に cannot unmarshal エラーが出る

このエラーは主に、YAML フィールドの型不一致や廃止済みフィールドの残存が原因です。対処手順は以下の通りです:

  1. エラーメッセージに記載されている line X, column Y の場所を丁寧に確認する
  2. 本ガイドの廃止フィールド一覧と照合し、該当フィールドを削除または置き換える
  3. オンラインの YAML バリデーターツールを使って構文エラーを排除する

DNS ループ / 全トラフィック接続不能

TUN モードを有効にした後、dns-hijackfake-ip-filter が正しく設定されていないと、DNS クエリがプロキシ自身に横取りされてループが発生する場合があります。以下の手順で確認してください:

  • dns.enable: true が有効になっていることを確認する
  • mihomo の External Controller アドレス(例:127.0.0.1)をダイレクト接続リストに追加する
  • fake-ip-filter+.local+.lan を追加する
問題が解決しない場合は、一時的に enhanced-modenormal に変更して再起動し、fake-ip 関連の問題かどうかを切り分けてから段階的に調査することをおすすめします。

TUN モードで権限エラーが出る

Linux / macOS では、TUN デバイスの作成に管理者権限が必要です。それぞれの環境向けの推奨対処法を以下に示します:

  • macOS:mihomo に対応したクライアントアプリを使用する(権限申請フローが組み込まれているため、手動で sudo を実行する必要はありません)
  • Linux:mihomo バイナリに cap_net_admin ケイパビリティを付与する: sudo setcap cap_net_admin=ep /usr/local/bin/mihomo
  • Windows:管理者として実行するか、自動昇格をサポートする GUI クライアントを使用する

Rule Provider の取得がタイムアウトする

mihomo を初めて起動する際、rule-providers はリモートからルールファイルをダウンロードする必要があります。ネットワーク環境が不安定な場合、起動タイムアウトが発生することがあります。以下の方法で対処できます:

  1. rule-providerspath でローカルパスを指定しておき、ルールファイルを事前に手動でダウンロードしておく
  2. ルール URL を jsDelivr CDN 経由のものに変更する(接続が安定している場合に有効)
  3. timeout の値を適宜増やす(デフォルトは 5 秒、最大 30 秒程度まで調整可能)

移行後の動作確認

設定の修正が完了して mihomo を再起動したら、以下の手順で移行が正常に完了したかどうかを確認することをおすすめします:

  1. mihomo の Web UI(デフォルト:http://127.0.0.1:9090/ui)にアクセスし、コアバージョンが mihomo と表示されていることを確認する
  2. 「プロキシ」ページですべてのノードが正常に読み込まれているか確認する
  3. レイテンシテスト(Latency Test)を実行し、各ノードへの疎通が正常かどうか確認する
  4. TUN モードを有効にして海外サイトにアクセスし、トラフィックがプロキシ経由になっていることを確認する
  5. 国内サイト(Yahoo! Japan など)にアクセスし、直接接続になっていることを確認してルール分岐の動作を検証する

以上のすべてのステップをクリアできれば、移行は無事完了です。現在、最も完成度が高く、活発にメンテナンスされている Clash 系コアが動作しています。

コアのアップグレード後はクライアントアプリも見直そう

コアの移行を完了させた後も、古い GUI クライアントをそのまま使い続けているユーザーは少なくありません。しかしそれでは、mihomo の新機能を十分に活かせないケースが多々あります。旧バージョンのクライアントでよく見られる問題点を挙げると:

  • rule-providers のビジュアル管理に非対応で、YAML を手動編集するしかない
  • TUN モードの切り替えが煩雑で、場合によってはシステムサービスの再起動が必要
  • コアバージョンが固定されており、mihomo のバグ修正アップデートに自動追従できない
  • UI が古く、ノードレイテンシのリアルタイムグラフやトラフィック統計などのモダンな機能が欠けている
  • サブスクリプション管理が大まかで、ノードグループ単位の自動速度テスト・最適選択ができない

これらの問題を感じているなら、mihomo と深く統合されたモダンなクライアントへの乗り換えを検討する価値があります。Clash クライアントは mihomo コアと組み合わせて使うことを前提に設計されており、ワンクリックのコアアップグレード・ビジュアルなルール管理・TUN モードのグラフィカル設定など、YAML を手動で編集しなくてもこのガイドで紹介したすべての操作を完結させることができます。

Clash クライアントを無料でダウンロードする → Windows・macOS・Android・iOS・Linux の全プラットフォームに対応しており、ダウンロードから初期設定完了まで 10 分以内で完了します。