3つの動作モードにおける通信の流れの違い
Clash およびその派生コア Clash Meta(mihomo)では、クライアントの設定画面に通常ルールモード(Rule)・グローバルモード(Global)・ダイレクトモード(Direct)という3つの動作モードが用意されています。この3つのモードが決めているのはノード自体ではなく、「1本の通信リクエストが発生したあと、どのような判定を経てどこへ向かうか」です。この判定ロジックを理解することは、各モードの名前を覚えるよりも重要です。
- ルールモード:すべてのリクエストが設定ファイル内の
rulesリストと順番に照合され、ドメイン・IPレンジ・GEOIP の所属国などの条件に基づいて、対応するプロキシグループまたはダイレクト接続に振り分けられます。いずれのルールにも一致しないリクエストは、最終的にリスト末尾のデフォルトポリシー(通常はMATCHまたはFINAL)で処理されます。 - グローバルモード:ルール照合をスキップし、すべての通信(ドメインやIPを問わず)が現在選択中のプロキシグループまたはノードに一律で送信されます。アウトバウンドの挙動は非常に一貫していますが、振り分けの区別はありません。
- ダイレクトモード:プロキシをスキップし、すべての通信がローカルネットワークから直接アウトバウンドされます。実質的にプロキシ機能を一時的にオフにしているのと同じです。
3つのモードの本質的な違いは「判定という工程が存在するかどうか」と「存在する場合の判定の粒度」にあります。ルールモードは細かい判定を保持していますが、グローバルモードとダイレクトモードはどちらも判定を放棄しています。ただし放棄した後の通信の行き先が異なり、一方はプロキシノード、もう一方はローカルネットワークです。
| モード | ルール照合の有無 | 通信の行き先 | 典型的な遅延の特徴 |
|---|---|---|---|
| ルールモード | あり | ルールに応じてダイレクトまたは各プロキシノードに振り分け | ダイレクトルールに一致したリクエストは低遅延、プロキシルールに一致したリクエストはノード次第 |
| グローバルモード | なし | 現在選択中のノードに一律送信 | すべてのリクエストの遅延が一定で、そのノードの回線品質に依存 |
| ダイレクトモード | なし | ローカルネットワークから直接アウトバウンド | プロキシを経由しないため、Clash 未使用時と同等の元の通信速度 |
補足:ダイレクトモードは「ルールモードですべてダイレクトに設定した状態」とは異なります。ダイレクトモードはクライアント側でプロキシ判定ロジック全体をオフにするものであり、設定ファイルに多数のプロキシルールが書かれていても反映されません。一方ルールモードでは、あるルールが明確にダイレクトを指定していても、他のルールは通常どおり通信をプロキシノードへ導きます。
ルールモードが適する典型的なシーン
ルールモードは日常使用の大半のシーンで推奨される設定です。理由は「日本国内サービスは低遅延のダイレクト接続を維持しつつ、海外や特定サービスはプロキシを経由する」という2つの需要を同時に満たし、手動でモードを切り替える必要がない点にあります。よく使われるルールの種類は次のとおりです。
- ドメイン末尾・キーワードによる一致:たとえば日本国内の動画配信・決済・行政系ドメインをダイレクト接続にまとめ、不要な迂回を避けます。
- GEOIP による地理的位置の一致:解決結果が特定の国・地域の IP に属するものを対応するポリシーに割り当てます。国内 CDN と海外サーバーを区別する際によく使われます。
- LAN・プライベートアドレス帯のダイレクト接続:ルーターの管理画面、LAN内のプリンターや NAS 機器へのアクセスがプロキシを経由しないようにします。このようなルールは通常リストの前方に置かれます。
- プロセス・ポート単位のルール(一部の Clash Meta コアが対応):リクエストを発したアプリケーション名で一致させ、「特定のアプリのみプロキシを経由し、他のアプリはダイレクト接続にする」という細かい制御を実現します。
典型的なルールの記述例は次のようになります。
rules:
- DOMAIN-SUFFIX,cn,DIRECT
- GEOIP,CN,DIRECT
- DOMAIN-KEYWORD,examplecdn,Proxy
- IP-CIDR,192.168.0.0/16,DIRECT
- MATCH,Proxy
この種の設定の基本的な考え方は、まず明確にダイレクト接続とすべき通信を先に拾い上げ、判断が難しい通信は最後の MATCH ルールにまとめて任せることです。ルールモードは、日常業務やウェブブラウジング、チャットツールの利用など、常時起動して速度と安定性を両立させたいシーンに適しています。ルールファイルは通常サブスクリプション提供元が管理しており、利用者はクライアントの「設定」画面で現在有効なルールセットを確認したり、「上書き(オーバーライド)」機能を使って元のサブスクリプション内容を変更せずにカスタムルールを追加したりできます。
グローバルモードが適する典型的なシーンとリスク
グローバルモードの価値は「予測可能性」にあります。すべての通信が同じ経路を通るため、ルールの誤判定によって特定サイトへのアクセスが異常になるという問題が発生しません。次のようなシーンではルールモードより適しています。
- ルールが正しく有効になっているかの切り分け:あるサイトへのアクセスが遅い、または接続に失敗する原因がルール照合の誤りだと疑われる場合、グローバルモードに切り替えてすべての通信を強制的にプロキシノード経由にします。それでも問題が解消しない場合は、故障の原因がノード自体やネットワーク環境にあり、ルール設定の問題ではないと判断できます。
- 国内・海外アクセスの出口を統一する必要がある場合:一部の企業内ネットワークのテストや国境を越えたデータ比較などでは、すべてのリクエストが同一の出口アドレスから送信されることが求められます。グローバルモードならこれを保証できますが、ルールモードでは国内向け通信がダイレクト接続になるため出口アドレスが一致しなくなります。
- 特定ノードの全体的な挙動を一時的に検証する場合:新たに追加したノードが各種サイトへの接続性や速度でどう振る舞うかを集中的に確認したい場合、グローバルモードならルールによる振り分けが引き起こす変動要因を排除できます。
注意:グローバルモードでは、日本国内のサイトへのアクセスもプロキシノードを経由するため、通常は遅延が増加します。また、端末の実際の IP 所在地に依存する一部サービス(地図の位置情報、一部の決済認証など)で異常が発生する可能性があります。グローバルモードを長期間使い続けることは通信を節約したり速度を上げたりする方法ではないため、問題の切り分けや明確な出口統一の必要があるときだけ短時間利用することをおすすめします。
また、グローバルモードで選択する「現在のノード」は単一のノードまたは単一のプロキシグループであるため、そのノード自体が不安定な場合、すべての通信が同時に影響を受けます。リスクがルールモードでの分散した振り分けよりも集中する点にも注意が必要です。
モード切り替え後に注意すべきキャッシュと接続状態の問題
モードの切り替えは一見クライアント画面上のスイッチ操作にすぎませんが、内部的には接続テーブル・DNSキャッシュ・コアの状態の再構築が伴います。処理がうまくいかないと、「切り替え後にページが開かない」「接続済みと表示されるが実際は通信できない」といった現象が起こることがあります。以下のポイントに注意してください。
- すでに確立された長時間接続は自動で再振り分けされない:モード切り替え前に開いていた TCP 接続(再生中の動画ストリームやダウンロード中のファイルなど)は、通常その接続が自然に終了するまで元の出口経路を使い続けます。すぐに反映させたい場合は、該当するアプリの接続を手動で切断するか、アプリを再起動することをおすすめします。
- DNSキャッシュにより古い解決結果が使われ続けることがある:ルールモードでの振り分けの多くは GEOIP 判定に依存しており、GEOIP 判定はドメイン解決が完了していることを前提としています。クライアントまたはOS側のDNSキャッシュにモード切り替え前の解決結果が残っている場合、短時間はルール照合が古いIP所属情報に基づいて行われることがあります。この場合はクライアント側でDNSキャッシュを手動でクリアするか、キャッシュが自然に失効するのを待ってください。
- プロキシグループのヘルスチェック状態はモード切り替えでリセットされない:あるプロキシグループがルールモードで遅延テストに失敗し利用不可とマークされていた場合、グローバルモードに切り替えても同じグループを選択していれば同様に接続失敗となります。これはモード自体とは無関係で、まずノードの接続性を確認する必要があります。
- ブラウザや一部アプリは独自の接続プールを持つ:ブラウザは性能維持のため確立済みの HTTP/2 や HTTPS 接続を再利用するため、モード切り替え後にすぐ変化を検知するとは限りません。ページの読み込みに異常が見られた場合は、まず強制リロードやブラウザプロセスの再起動を試し、すぐにプロキシ設定の問題だと判断しないようにしましょう。
おすすめ:モードを切り替えた後は、まず新規に開いたブラウザのタブで明確なテスト用アドレスにアクセスし、接続状態カードに表示される現在のプロトコルとノード情報が期待どおりに更新されているか確認してください。問題がないことを確認したうえで他の操作を続けることで、残存する古い接続状態に判断を誤らされることを避けられます。
クライアントでの切り替えと確認方法
クライアント(Clash Verge、Mihomo Party、FlClash など)によって画面の見た目は多少異なりますが、操作の流れはほぼ共通です。
- クライアントのメイン画面を開き、「モード」または「動作モード」に関するセグメントコントロールを探します。通常は「ルール / グローバル / ダイレクト」の3つの選択肢として表示されます。
- 対応するモードをクリックして切り替えます。多くのクライアントでは、ステータスバーや接続状態カードに現在有効なモード名が同期して表示されます。たとえば接続状態カード上部のプロトコル情報に
ruleやglobalと表示されます。 - 切り替え後にログパネルを開き、直近のリクエストがどのルールやポリシーに一致したかを確認し、通信の流れが期待どおりかチェックします。この手順はルール設定が正しく反映されているかを確認するのに特に有効です。
- ノードの接続性を一時的に検証するだけであれば、確認が終わったらルールモードに切り戻すことを忘れないでください。グローバルモードを長期間使い続けると遅延の増加や出口の異常といったリスクが伴います。
日常的な利用者にとっては、ルールモードとメンテナンスの行き届いたサブスクリプションのルールセットを組み合わせるだけで、大半のシーンに対応できるため、頻繁にモードを切り替える必要はありません。グローバルモードはあくまで問題の切り分けや特殊なシーンでの一時的な選択であり、ダイレクトモードはプロキシが全く不要な場合にプロキシ機能を素早くオフにするスイッチとして活用するのが適しています。