サブスクリプションを読み込む
クライアントの設定ページを開き、サブスクリプションの URL を入力欄に貼り付けてダウンロードをクリックします。一覧に新しい項目が表示されたらそれを選択すると、クライアントが設定を再読み込みしてカーネルを起動します。一覧が空のままの場合は、まずブラウザでサブスクリプションの URL を開き、内容がそのまま返ってくるかを確認し、そのうえでクライアントのログにどの種類のエラーが出ているかを見てください。
オープンソースカーネル · 全プラットフォームのクライアントを継続メンテナンス
mihomo カーネルをベースにしたクライアントのインストーラーと設定ガイド。Windows、macOS、Android、iOS、Linux の 5 プラットフォームに対応し、サブスクリプションの読み込み、プロキシモードの切り替え、ルール振り分け、TUN モードまで一通り解説します。
PLATFORM
5 つのプラットフォームにはそれぞれ最適化された GUI クライアントがあり、インストーラー、システム要件、カーネル版のアーカイブはダウンロードページでプラットフォーム別にまとめています。下のカードをクリックすると該当セクションへ移動します。どのクライアントを入れるか迷う場合は、先に選び方ガイドをご覧ください。
Clash Plus、Clash Verge Rev、FlClash などのクライアントに対応。システムプロキシと TUN モードで通信を取り込み、Windows 10 1809 以降の x64 および ARM64 デバイスで動作します。
ダウンロードへApple Silicon 版と Intel 版の 2 種類のインストーラーを用意。メニューバーに常駐して動作し、拡張モードを有効にすると、システムプロキシを参照しないコマンドラインツールや開発環境の通信も取り込めます。
ダウンロードへスマートフォンとタブレットで共通の APK インストーラー。アプリ単位のプロキシと VPN モードに対応し、デバイスの CPU アーキテクチャに合わせて ARM64 版か ARMv7 版を選べば導入できます。
ダウンロードへClash Plus は App Store で公開中。ストアページから直接インストールでき、オンデマンド接続やショートカットとの連携に対応します。公式サイトは clashplus.io です。
ダウンロードへ.deb と .rpm の 2 形式のパッケージを用意し、主要なデスクトップディストリビューションに対応。サーバーやルーター用途ではカーネル版のアーカイブを使い、アーキテクチャに合ったバージョンを選んでください。
ダウンロードへCORE FEATURES
mihomo カーネルの動作は config.yaml で決まります。以下の 6 項目は日常の使用で変更が多く、設定を間違えやすい部分です。それぞれ対応する設定キーと値の指定方法を説明します。
TUN モードはシステム内に仮想ネットワークアダプターを作成し、システムプロキシの設定に従わない通信もまとめて取り込みます。ゲームクライアント、ターミナルのコマンドラインツール、コンテナ環境といった場面に向いています。有効にするとカーネルが L3 の通信を直接処理し、auto-route と auto-detect-interface によってルーティングテーブルが自動的に仮想アダプターを指すため、ゲートウェイを手動で書き換える必要はありません。システムプロキシだけを変更する方式に比べて適用範囲は広く、その代わり管理者または root 権限が必要で、Windows では Wintun ドライバーのインストールも求められます。
rules は各接続をダイレクトにするかプロキシ経由にするかを決めるセクションで、照合は厳密に上から下へ進み、一致した時点で確定します。DOMAIN-SUFFIX を前に置くと、同じドメイン末尾をまとめて分類できます。IP-CIDR は IP アドレスを直接指定したリクエストを処理し、GEOIP で中国本土のアドレス帯を受け止め、最後に MATCH で締めます。ルールの順序を逆にすると、本来ダイレクトにすべき通信がプロキシを経由したり、LAN 内のアドレスが誤って転送されたりします。ルールを変更したらログレベルを debug に上げ、どのルールに一致したかを確認するほうが、設定を何度も試すよりずっと早く解決できます。
Fake-IP モードは、まずドメインに対して 198.18.0.0/16 の範囲内の偽アドレスを返し、実際の名前解決は接続が確立する瞬間まで遅らせます。どの DNS で引くかはカーネルがルールに従って判断します。これにより DNS の往復を 1 回分省略でき、初回アクセスの待ち時間が目に見えて短くなり、ローカル DNS の汚染による解決エラーも回避できます。その代わり、実際の IP アドレスを必要とする一部のプログラムはアドレスを取得できません。fake-ip-filter に LAN のドメイン、NTP、STUN などを追加して除外してください。
サブスクリプションの URL は proxy-providers で読み込み、カーネルが interval で指定した周期で最新のノードリストを自動取得するため、手動で再インポートする必要はありません。ノードを config.yaml に直接書く方式と比べ、provider を使うとノードの更新とルール設定を分離できます。ルールファイルはそのままに、ノードリストだけがサブスクリプションに追随します。複数のサブスクリプションを併用でき、proxy-groups の use フィールドで必要な分だけ参照したり、filter でキーワードに一致するノードだけを取り出したりできます。取得に失敗した場合は直前の有効なリストが保持され、進行中の接続には影響しません。
mixed-port を使うと HTTP と SOCKS5 が同じポートを共有します。ブラウザ、ターミナルツール、エディタのプラグインはすべて 7890 を指定すればよく、2 つのポート番号を覚え分ける必要はありません。既定では 127.0.0.1 のみをリッスンするため、LAN 内の他のデバイスから利用するには allow-lan を有効にし、bind-address を具体的なネットワークインターフェースのアドレスに設定します。あわせて authentication でユーザー名とパスワードを設定し、同じネットワークの機器に勝手に使われないようにしてください。ポートが使用中の場合はログに listen error がそのまま出るので、空いているポートに変更すれば解決します。
proxy-groups は複数のノードを意味のあるグループにまとめます。url-test は遅延をもとに最速のノードを自動選択し、fallback はメインノードが使えないときに順に切り替え、select はユーザーが手動で選び、load-balance はリクエストを複数の出口に分散します。グループ名は rules から直接参照されるため、命名は安定させてください。名前を変えることはルーティングを変えるのと同じです。health-check の interval と tolerance を組み合わせると、速度測定の頻度と切り替えの感度を調整でき、回線が不安定なときにグループが行き来するのを防げます。
QUICKSTART
インストールから実際に通信できるようになるまで、操作は 3 つだけです。各ステップにはクライアント画面の対応する入口があり、プラットフォーム別の詳しい手順はチュートリアルページにまとめています。
クライアントの設定ページを開き、サブスクリプションの URL を入力欄に貼り付けてダウンロードをクリックします。一覧に新しい項目が表示されたらそれを選択すると、クライアントが設定を再読み込みしてカーネルを起動します。一覧が空のままの場合は、まずブラウザでサブスクリプションの URL を開き、内容がそのまま返ってくるかを確認し、そのうえでクライアントのログにどの種類のエラーが出ているかを見てください。
普段はルールモードを選びます。中国本土のドメインと IP はダイレクト、それ以外の通信は rules に従ってプロキシ経由になります。特定のサイトがルールで誤判定されていないか確認したいときは、一時的にグローバルモードに切り替えてすべての通信をプロキシ経由にし、確認が済んだら戻します。グローバルモードではすべてのリクエストがプロキシを通るため、長時間有効にすると通信量が明らかに増えます。
設定でシステムプロキシを有効にすると、ブラウザなどシステムプロキシに従うプログラムはすぐに効果が出ます。コマンドラインツールやゲームクライアントのようにシステムプロキシを読まないプログラムは、TUN モードを有効にしないと取り込めません。有効にしたら任意のサイトにアクセスして接続を確認し、接続ページで一致したルールと出口ノードを見て、振り分けが想定どおりか確認します。
OPEN SOURCE
クライアントの画面とプロキシカーネルは別々のプロジェクトです。この関係を理解しておくと、問題が起きたときにどちらのログを確認すべきか判断できます。
Clash カーネルは Go 言語で書かれ、当初はルール駆動のローカルプロキシプログラムとして登場しました。設定を 1 つの YAML ファイルに集約する設計で、これは現在も受け継がれています。原作者がプロジェクトをアーカイブした後、コミュニティが Clash Meta ブランチで開発を続け、現在の mihomo カーネルになりました。新しいプロトコルの対応や DNS の実装はこのブランチで更新されています。
カーネルと主要な GUI クライアントはオープンソースライセンスで公開され、コードは公開リポジトリで管理されています。ルールセット、サブスクリプション変換ツール、Web コントロールパネルはそれぞれ別のチームがメンテナンスしており、標準の config.yaml と RESTful API を介して連携します。どのプロジェクトも他プロジェクトのリリースサイクルを待たずに、独立して新バージョンを公開できます。
GUI クライアント自体はプロキシプロトコルを実装しておらず、設定の編集、ノードの表示、オン/オフの操作を担当します。実際の接続は mihomo カーネルが確立します。同じ config.yaml を別のクライアントで使っても動作はほぼ同じです。逆に、画面が固まっていてもカーネルは正常に動いていることが多く、問題を調べるときは画面よりカーネルログを見るほうが正確です。
カーネルとクライアントのバージョンはそれぞれ独立して更新されます。一部のクライアントでは内蔵カーネルのバージョンを差し替えられるため、カーネルのアップグレードにアプリ全体の再インストールは不要です。ルールセットと GeoIP データは provider 経由で定期的に取得され、インストーラーには含まれません。そのためルールベースの鮮度は設定内の更新間隔に依存します。間隔を短くすれば、新しいルールをより早く反映できます。
mihomo カーネルのソースコードをクローン
FAQ
以下は初回設定の段階でもっとも多い 4 つの質問です。展開すると原因と対処の順序が確認できます。その他の項目はチュートリアルページにプラットフォーム別で掲載しています。
NOTES
設定中に気になった細かい疑問と調査の記録を、公開日の新しい順に並べています。全件の一覧はノートのアーカイブページにあります。
rules の書き方と照合順序を 1 つずつ解説します。DOMAIN、DOMAIN-SUFFIX、IP-CIDR から GEOIP、MATCH の受け皿まで、上から順に評価される短絡マッチの仕組みとよくある書き間違いを取り上げます。
全文を読む →スマホ、PC、タブレット間で設定を揃える方法:サブスクリプションリンクによる自動同期、自前の設定ホスティング、手動でのエクスポート/インポートという 3 つの方式について、用途、維持コスト、競合時の対処を比較します。
全文を読む →ノードのタイムアウトは、ノード自体が原因とは限りません。サブスクリプションの更新、DNS 解決、ポートの競合、システムプロキシ、ルールの一致、カーネルログ、ネットワーク環境の 7 段階を順に確認し、本当の原因をすばやく特定します。
全文を読む →