mihomoClash Meta
mihomo は現在活発に開発が続くオープンソースのプロキシカーネルで、旧称は Clash Meta。オリジナル版 Clash に VLESS、Hysteria2、TUIC などのプロトコルを追加し、ルールセットや DNS 強化など多数の改良をもたらした。本サイトで紹介する Clash Plus、Clash Verge Rev、FlClash などのクライアントはいずれもこれをカーネルとして採用している。
カーネル、プロトコル、分岐、サブスクリプション——Clash に初めて触れると必ず見慣れない用語にぶつかる。23の頻出用語を6分類の棚に並べ、各項目を2〜3文で「何を指すか・どこで使うか」まで整理した。調べたらすぐ作業に戻れる。
ページの表示順に並んでいる。用語をクリックすると対応する解説カードに直接ジャンプする。
まずは役割の違いを整理:通信転送を担うカーネル、画面操作を担うクライアント、そしてそれらをつなぐインターフェース。
mihomo は現在活発に開発が続くオープンソースのプロキシカーネルで、旧称は Clash Meta。オリジナル版 Clash に VLESS、Hysteria2、TUIC などのプロトコルを追加し、ルールセットや DNS 強化など多数の改良をもたらした。本サイトで紹介する Clash Plus、Clash Verge Rev、FlClash などのクライアントはいずれもこれをカーネルとして採用している。
オリジナル版 Clash は Dreamacro によって開発され、ルール分岐というスタイルの先駆けとなったが、2023年に開発が停止した。YAML 設定・ポリシーグループ・ルール逐次マッチという使い方を定め、以降のカーネルやクライアントもこれを踏襲している。これから導入する場合は mihomo カーネル採用のクライアントを選べば問題ない。
GUI クライアントはカーネルの外側に被せるグラフィカルインターフェースのプログラムで、サブスクリプションの読み込み、ノード切り替え、システムプロキシのオン/オフなど日常操作を担う。カーネルは通信転送、インターフェースは操作性という役割分担がはっきりしている。Clash Verge Rev、ClashX Meta、Clash for Windows はいずれもこのカテゴリに属する。
外部コントローラーはカーネルが公開する一連の HTTP インターフェースで、インターフェース側が状態取得、ノード切り替え、接続ログの確認を行うために使う。設定ファイルでは external-controller フィールドで待受アドレスを指定し、デフォルトはローカルの 9090 ポート、secret フィールドでアクセスキーを設定する。待受アドレスをローカル以外のネットワーク帯に変更する際は必ずキーを設定すること。
ノードとサーバー間の通信方式:暗号化、偽装、伝送効率を左右するプロトコル。
Shadowsocks は最も早くから普及した軽量な暗号化プロキシプロトコルで、設定はアドレス・ポート・パスワード・暗号化方式の4項目だけとオーバーヘッドが小さく、実装数も多い。Clash の設定では ss タイプのノードとして表示される。派生系の SSR は現在ではほとんど使われず、新しいサブスクリプションでは見かけることが少ない。
VMess は V2Ray プロジェクトの主力プロトコルで、UUID でユーザーを識別し、WebSocket や gRPC など複数の伝送方式に対応する。設定では vmess タイプのノードとして表示され、uuid・alterId・network といったフィールドが一般的。老舗の海外プロキシサービスのサブスクリプションで最もよく見かけるプロトコルの一つ。
VLESS は V2Ray が後に投入した軽量プロトコルで、VMess にあった内蔵暗号化を取り除き、セキュリティ層を TLS や REALITY に委ねることでハンドシェイクの負荷を減らしている。オリジナル版 Clash では対応しておらず、mihomo など新世代カーネルが必要。設定では vless タイプのノードとして表示され、flow や reality-opts フィールドと組み合わせて使うことが多い。
Trojan はプロキシ通信を通常の HTTPS アクセスに偽装するプロトコルで、ドメイン証明書による TLS ハンドシェイクに依存し検知耐性が高い。設定では trojan タイプのノードとして表示され、パスワードと sni が主要フィールドとなる。クライアントのシステム時刻がずれていると証明書の検証に失敗するため、繋がらない場合はまず時刻を確認する。
Hysteria2 は QUIC をベースにしたプロトコルで、UDP で伝送するため、パケットロスや高遅延の回線で速度面の優位性が大きい。対応は mihomo など新世代カーネルに限られ、設定では hysteria2 タイプとして表示される。一部のブロードバンド環境では UDP に制限がかかるため、速度が出ない場合は TCP 系プロトコルと比較してみるとよい。
どの通信をどの経路に流すか、これらの概念が組み合わさって決まる。
ルール分岐は Clash の中核となる仕組みで、ドメイン名・IP・プロセス名などの条件によって通信ごとに使うノードや直接接続を振り分ける。rules セクションは上から順にマッチし、該当した時点で処理を終える。最後の行は通常 MATCH で受け止める。カスタムルールは汎用ルールより前に置かないと、永遠に適用されない。
ポリシーグループはノードの論理的なグループで、クライアントのプロキシ画面に並ぶドロップダウンがこれにあたる。よく使われるタイプは select(手動選択)、url-test(自動テストで最適選択)、fallback(フェイルオーバー)、load-balance(負荷分散)。ルールがマッチするのはグループ名で、実際に使うノードはグループが決定する。ノードを切り替えるとは通常グループ内の選択を変えることを指す。
GeoIP は IP の国・地域を判定するためのデータベースで、ルール中の GEOIP,CN という記述はこれを参照している。mihomo では mmdb 形式のデータファイルが使われ、クライアントには通常標準搭載され、オンライン更新にも対応する。データベースが古くなっても通信自体は切れないが、国内外の判定精度が落ちる可能性があるため、定期的に更新するとよい。
ルールセットは数百から数千のドメインや IP のルールを1つの独立したファイルにまとめ、メイン設定から必要に応じて参照する仕組みで、rule-providers フィールドに対応する。すべてを rules セクションに書き込むのと比べてサイズが小さく、単独で更新でき、読み込みも速い。mihomo は classical・domain・ipcidr の3種の書式に対応する。
ノードはどこから来るのか、設定はどう書くのか——日常のメンテナンスで避けられない4つの用語。
サブスクリプションリンクはサービス提供者が発行するアドレスで、クライアントがアクセスすることで整った状態のノードと分岐設定を一括で取得できる。これは一回限りのファイルではなく設定の取得元であり、クライアント側で自動更新の間隔を設定しておけばノード一覧を常に最新に保てる。リンクにはアクセス用の認証情報が含まれるため、公開したりスクリーンショットで共有したりしないこと。
ノードは通信を転送できるプロキシサーバーの1台を指し、設定ファイルの proxies セクションの1エントリに対応し、プロトコルタイプ・アドレス・ポート・認証情報が記載される。よく言う「ノードを切り替える」とは、ポリシーグループ内で別のエントリを選ぶことを指す。ノードの速さはサービス提供者の回線品質に依存し、クライアント自体とはあまり関係がない。
YAML は Clash の設定ファイルで使われるテキスト形式で、インデントによって階層を表現し、コロンの後には半角スペースを1つ入れる必要がある。サブスクリプションでダウンロードされる設定も、手動で編集するカスタム設定もこの形式。設定編集で最も多いエラー原因はインデントのずれや Tab キーの混在で、YAML のシンタックスハイライトに対応したエディタを使うと失敗が減る。
サブスクリプション変換はサブスクリプションの内容を別のクライアント形式に書き換えるオンラインサービスで、例えば V2Ray 形式を Clash 設定に変換する。変換にはサブスクリプションリンクを第三者サーバーに送信する必要があり、認証情報漏洩のリスクがある。主要な Clash クライアントは一般的なサブスクリプション形式を直接解析できるため、通常は変換の必要はない。
速度測定の数値を読み解いたり、ネットワークトラブルを調査する際によく使われる基礎用語。
レイテンシは自分のパソコンからノードを経由して戻ってくるまでの往復時間で、クライアントではミリ秒単位で表示される。測定されるのは主に TCP ハンドシェイクや小さなリクエストの応答時間であり、接続の応答速度を示すもので、ダウンロード帯域幅とは別物。日常のブラウジングは帯域幅、ゲームや音声通話はレイテンシを重視すべきで、数値の低さよりブレのない安定性が重要。
DNS リークとは、ドメイン名解析のリクエストがプロキシ経路を通らず、ローカルの ISP の DNS へ直接送られてしまう状態を指す。アクセス記録や解析結果が干渉を受ける可能性がある。設定の dns セクションで解析処理を引き受け、fake-ip や nameserver の指定と組み合わせることで、ドメイン名の問い合わせをプロキシ経路に取り込める。調査時はクライアントのログで DNS の送信先を確認するのが最も分かりやすい。
UDP 転送はゲーム、音声通話、QUIC など非 TCP 通信もプロキシ経由で伝送できるようにする仕組みで、ノード情報側で udp を有効化し、サーバー側も対応している必要があり、両方が揃わないと機能しない。オフにすると UDP 通信はプロキシを経由せず直接接続され、UDP に依存するアプリの動作が想定と異なる場合がある。
クライアントが通信を引き受ける方式にはいくつかの種類があり、それぞれ適用範囲とコストが異なる。
システムプロキシモードはクライアントのローカルポートを OS のプロキシ設定に書き込む方式で、この設定に対応するソフトウェアは自動的に Clash を経由するようになる。ブラウザや多くのデスクトップソフトはそのまま使えるが、一部の CLI ツールやゲームはこの設定を認識しない。クライアントを終了する前にシステムプロキシのスイッチをオフにしておかないと、無効なプロキシ設定が残り通信できなくなる。
TUN モードは仮想ネットワークカードを通じてマシン全体の通信を引き受ける方式で、ソフトウェアがプロキシ設定に対応しているかどうかに依存しない。CLI、ゲーム、UWP アプリなどシステムプロキシが及ばない範囲もカバーできるが、代償として管理者権限でネットワークカードのドライバをインストールする必要がある。mihomo カーネルには TUN サポートが標準搭載されており、クライアントの設定画面から有効にできる。
Fake-IP は拡張モードにおける DNS 戦略の一つで、ドメイン名に対して先に 198.18 系のダミーアドレスを返し、カーネルはこのアドレスへの接続を受け取った時点でドメイン名によるルールマッチを行う。実際の解析待ちを省略できるため分岐処理が速く、DNS 汚染の回避にもなる。一部のソフトがダミーアドレスを認識しない場合は、fake-ip-filter リストに追加して除外すればよい。
用語を調べ終えたら、すぐ隣に次の一手がある:クライアント入手、チュートリアル、トラブルシューティング。