Clashコア(Clash Meta / mihomo を含む)は、通信を1本処理するたびに「どのモードで扱うか」を判定します——ルールモード、グローバルモード、ダイレクトモードのいずれかです。3つの違いは画面上のトグルの見た目ではなく、各コネクションに対する処理ロジックそのものが完全に異なる点にあります。この3モードの実際の挙動を理解することが、プロキシ異常の切り分けやアクセス速度の最適化の土台になります。
3つのモードで通信の流れはどう変わるのか
Clashクライアントは新しい通信(ドメイン解決やTCPハンドシェイクの度)を確立するたびに「判定」を行い、最終的にどのアウトバウンドへ流すかを決定します。3モードの判定ロジックは以下の通りです。
- ルールモード(Rule):コアは設定ファイルの
rulesフィールドを上から順に照合し、該当するルールが見つかった時点でそのルールが指定するアウトバウンド(プロキシグループ、DIRECT、REJECT)へ処理を渡し、以降の照合は行いません。ルールにはドメインサフィックス、IPの所属地域(GeoIP)、プロセス名、ルールセット(rule-provider)など複数の照合方式があり、末尾には未マッチのコネクションの既定の振り先を決めるMATCHルールを置くのが一般的です。 - グローバルモード(Global):
rulesフィールドの内容はすべて無視され、ルール判定を経ずに全通信が現在選択中のプロキシノードまたはプロキシグループへ一括で送られます。ドメイン解決の挙動もプロキシ側のポリシーに従うため、国内外のサイトを区別しません。 - ダイレクトモード(Direct):こちらもルール照合を行いませんが方向は逆です——全通信がいずれのプロキシノードも経由せず、端末のネットワークから直接送出されます。実質的にプロキシ機能を一時的にオフにした状態と同じです。
| モード | rules を読むか | 代表的なアウトバウンド | 適したシーン |
|---|---|---|---|
| ルールモード | はい | ルールに応じてプロキシ/直接接続に振り分け | 日常利用の既定モード |
| グローバルモード | いいえ | 常に現在のプロキシ経由 | ノードのテスト、一時的な全通信プロキシ化 |
| ダイレクトモード | いいえ | 常に直接接続 | プロキシが原因かどうかの切り分け |
ルールモードが既定になる理由
ルールモードの核心的な価値は「必要な通信だけを振り分ける」ことにあります。中国本土のサイト、LANアドレス、システム更新など、プロキシを必要としない通信は端末のネットワークから直接出し、本当にプロキシが必要な通信だけをプロキシノードに通します。これにより2つの利点が得られます——1つは中国本土のリソースへのアクセス時にプロキシ経路の影響で遅延が増えないこと、もう1つはプロキシノードの帯域が本当に必要な通信だけに使われ、無関係なリクエストで枯渇しないことです。
ルールファイルでよく使われる照合方式は次の通りです。
DOMAIN-SUFFIX:ドメインサフィックスで照合します。例:DOMAIN-SUFFIX,github.com,PROXYGEOIP:IPの所属地域で判定します。国内IPを一括で直接接続にする用途によく使われます。例:GEOIP,CN,DIRECTRULE-SET/rule-providers:外部で管理されているルールセットを参照する方式で、設定を手動編集せずに一括更新できます。
多くのサブスクリプションで提供される設定ファイルには、よく使われる中国本土サービス、広告フィルタリング、動画配信の振り分けなどをカバーするルールテンプレートがあらかじめ組み込まれており、日常利用では手動調整せず既定のルールモードのままで問題ありません。
ルールは上から順に照合され、上にあるほど優先度が高くなります。あるサイトの振り先が想定と異なる場合は、まず上位のルールが先に一致していないかを確認してください。すぐにプロキシノードを変更するのは早計です。
グローバルモードの使いどころとコスト
グローバルモードの最も一般的な使い方は、問題を切り分ける際に「ルール設定」という変数を除外することです。たとえば特定サイトへのアクセスがおかしい場合、ルールが未対応なのかノード自体の問題なのか判断がつかないとき、グローバルモードに切り替えてアクセスが正常になれば、ノードの問題ではなくルールマッチングの問題だと概ね判断できます。グローバルモードでも異常が続く場合は、プロキシノードや回線側の問題だと分かります。
グローバルモードのもう1つの使いどころは、ルールセットのカバレッジ不足による一時的な状況への対応です——たとえば見慣れないサブスクリプションのルールに乗り換えた直後、短期間はグローバルモードで利用可能性を確保し、その後徐々にルールの補完が必要かを確認していく、といった使い方です。
注意すべきコストは、グローバルモードでは中国本土のサイトやLANサービスも強制的にプロキシノードへ送られてしまうことです。1つは不要な遅延が増えること、もう1つは地理的位置を厳しく検証する国内サービスでログイン異常や認証コードの頻発が起きる可能性があることです。グローバルモードは短時間の切り分け・検証向けであり、長期的な日常モードとしての利用はおすすめしません。
ダイレクトモードとローカルネットワークの切り分け
ダイレクトモードはプロキシ機能を一時的に停止した状態に相当し、すべての通信が端末本来のネットワーク経路から出て行きます。その価値は主に切り分けの場面で発揮されます。プロキシノードやクライアント自体がネットワーク異常の原因ではないかと疑う場合、ダイレクトモードに切り替えても問題が解消しなければ、故障はプロキシと無関係であり、ローカルネットワーク・DNS・回線事業者側の問題である可能性が高いと分かります。逆にダイレクトモードに切り替えて問題が消えれば、故障はプロキシ側にあると確認できます。
また、ネットワーク環境に厳しい要件がある一部のシーン(端末の実際のIPを必要とする認証フローや、LAN内サービスのデバッグなど)でも一時的にダイレクトモードに切り替え、処理完了後にルールモードへ戻すことがあります。ダイレクトモードを長期間使い続けると、プロキシクライアントを使う意味自体がなくなってしまいます。
日常での柔軟な切り替えと確認方法
主要なクライアント(Clash Verge Rev、Clash Plus、FlClash など)は通常、メイン画面や概要ページにモード切り替えの入口を用意しており、「Rule / Global / Direct」またはそれに対応する日本語表記で表示されます。クリックすればすぐに反映され、クライアントの再起動や設定の再読み込みは不要です。
モード切り替えと TUNモード の関係は区別して理解する必要があります。TUNモードが解決するのは通信をコアがどう捕捉するか(システムレベルの仮想ネットワークアダプタによる横取りで、プロキシ非対応のアプリやプロトコルにも対応)という点であり、ルール/グローバル/ダイレクトが解決するのは捕捉した通信をどのロジックで振り分けるかという点です。両者は別レイヤーの設定であり同時に成立します——TUNモードを有効にした状態でも、ルール・グローバル・ダイレクトの3モードを切り替えられ、動作ロジックは変わりません。
モード切り替えが実際に反映されているかは、クライアントの接続ログや通信パネルで確認できます。ルールモードでは各コネクションが異なるアウトバウンドポリシーとして表示され、グローバルモードでは全通信が現在のプロキシグループとして統一表示され、ダイレクトモードではプロキシノード経由の通信ログが記録されません。
よくある疑問へのクイック回答
- ルールモードで特定のサイトだけずっと遅いのですが、グローバルに切り替えるべきですか?まずそのサイトがどのルールに一致し、対応するアウトバウンドノードが正常かを確認してください。その上で一時的にグローバルモードで検証する必要があるかを判断すべきで、長期的にそのまま切り替えたままにするのはおすすめしません。
- グローバルモードとダイレクトモードは互いに代用できますか?できません。両者のアウトバウンド方向は完全に逆で、グローバルモードは依然としてプロキシノードを経由し、ダイレクトモードは一切プロキシを経由しません。
- モードを切り替える際に設定を再インポートする必要はありますか?不要です。モードは実行時の切り替えスイッチであり、設定ファイル自体のルール内容には影響しません。
総じて、ルールモードは日常のほとんどのシーンをカバーし、グローバルとダイレクトは切り分けツールとして短期的に使うのが適しています。3つのモードによる通信の流れの違いを把握しておけば、アクセス異常が発生した際に、ルール設定・プロキシノード・ローカルネットワークのどこに問題があるのかをより早く特定できます。