利用ガイド · Clash 技術ブログ

Clash のプロキシモードの選び方:Rule、Global、Direct の違いと切り替え方法

Rule、Global、Direct は、Clash に入った接続をルールで振り分けるか、すべてプロキシへ送るか、ローカルで直接接続するかを決めます。この記事では三つのモードが適する場面、システムプロキシや TUN との違い、旧版 Script の範囲、確認方法を説明します。

  • プロキシモード
  • Rule
  • Global
  • Direct
  • Script
目次

まず区別する:動作モード、システムプロキシ、TUN は別のもの

現在の Mihomo ドキュメントに記載されている動作モードは Rule、Global、Direct で、既定値は Rule です。コアに入った接続を処理し、その接続をルールに従って振り分けるか、一律に GLOBAL ポリシーグループへ渡すか、ローカルネットワークへ直接接続するかを決めます。

システムプロキシ、TUN、モバイルの VPN は、トラフィックをコアへ入れる方法を決めます。select、url-test、fallback は、ポリシーグループが送信経路を選ぶ方法を決めます。fake-ip と redir-host は DNS 拡張モードです。これらの異なる階層をすべて「プロキシモード」と呼ぶと、トラブルシューティングで誤ったスイッチを変更しやすくなります。

各名称が属する階層

階層一般的な項目実際に決める内容
動作モードRule / Global / Directコアに入った接続が最終的に使用する送信経路
トラフィックの取り込み方法System Proxy / TUN / モバイル VPNコアへ入ることができるアプリまたはシステムトラフィック
ポリシーグループの種類select / url-test / fallbackポリシーグループ内でノードまたは別のポリシーを選択する方法
DNS 拡張モードfake-ip / redir-host名前解決の結果をルールと接続処理へ渡す方法

三つの動作モードが変えるのは送信経路の決定であり、ノード速度ではない

Clash Verge Rev などのデスクトップクライアントでは、メイン画面の「プロキシモード」を開くか、トレイアイコンを右クリックして Mode サブメニューへ進みます。モバイルでは通常、ホーム画面または Proxies の「モード」行にあります。日常利用ではまず Rule を選び、ルールが特定サイトを誤った送信経路へ送っているか確認するときだけ、一時的に Global または Direct へ切り替えてください。

三つのモードが受け取るのは、Clash に入った同じ接続です。違いは、その後の送信経路の選び方にあります。Rule はルールを上から順に照合し、Global は接続をグローバルポリシーグループへ渡し、Direct はローカルネットワークを直接使用します。ノード自体の帯域幅や遅延は変わりません。

クライアントで実際にモードを切り替える

  1. Mode / プロキシモードを開く

    メイン画面のモード項目またはトレイメニューから操作し、リモート YAML の mode フィールドは変更しないでください。

  2. Rule を選択する

    対象のWebページを開き、Connections で現在一致しているルールと送信経路を記録します。

  3. 比較が必要な場合は Global または Direct を選択する

    同じノードと対象を維持し、モードだけを変更して接続を作り直します。

  4. 比較後は Rule へ戻す

    対象へもう一度リクエストし、新しい接続が再びルールに従って振り分けられていることを確認します。

モードと実際の用途

モード接続の経路使用に適した場面
Rule最初に一致したルールのポリシーを適用する日常利用。サービスごとに異なる送信経路を使う
GlobalClash に入ったすべての接続をグローバルグループへ渡すルールが問題の原因かを短時間で比較する
DirectClash に入ったすべての接続を直接接続にするローカルネットワークを確認する、または一時的にプロキシを使わない

モードが影響するのは、すでに Clash へ入ったトラフィックだけです。アプリがシステムプロキシをまったく参照せず、Connections に記録がない場合、Rule から Global へ切り替えても突然表示されることはありません。まずシステムプロキシ、アプリ内プロキシ、または TUN に対処してください。

Rule(ルールモード):最初に一致したルールで送信経路を決定する

Rule は Mihomo の既定の動作モードで、直接接続、プロキシ、拒否、複数のポリシーグループが共存する日常的な設定に適しています。「国内は直接、国外はプロキシ」を自動的に意味するわけではありません。実際の動作は、現在の設定にある rules、rule-providers、およびその順序で完全に決まります。

Mihomo は rules を上から順に確認し、最初に一致した時点で停止します。本来プロキシを使うべきドメインが、先に広い DIRECT ルールへ一致すると、その後にいくつルールを書いても実行されません。リスト末尾によくある MATCH は、それまで一致しなかった接続を受け取ります。

Connections を開いて直前のリクエストを探し、ルールの種類とポリシーグループを確認します。DOMAIN-SUFFIX、RULE-SET、MATCH などの表示から、どこで判断されたかが直接分かります。感覚だけでモードを切り替えると、ルール順序の問題がかえって見えなくなります。

Mihomo の組み込みアクションだけを使う、自己完結した順序の例
rules:
  - DOMAIN,api.example.com,DIRECT
  - DOMAIN-SUFFIX,example.com,REJECT
  - MATCH,DIRECT

日常利用では Rule を使い、「この接続はどのルールに一致したか」を説明できるようにする

実際のリクエストを一件確認する

  1. Rule モードを維持する

    メインのポリシーグループで、動作確認済みのノードを一つ固定します。

  2. 対象の操作をもう一度行う

    同じWebページを開く、同じエンドポイントを更新する、または同じアプリを起動します。

  3. Connections で見つける

    ドメイン、プロセス、時刻から、直前に作成された接続を探します。

  4. ルールと送信経路を確認する

    DIRECT、REJECT、またはプロキシポリシーグループのどれであるか確認します。

結果が想定どおりなら、Rule は正常です。特定サイトが失敗する場合は、そのサイトに関係するルールまたはポリシーグループだけを変更してください。一件の接続を理由に、すべてを Global へ切り替えないでください。

Global(グローバルモード):取り込んだ接続を GLOBAL グループへ渡す

Global が変更するのは Mihomo に入った接続だけであり、端末上のすべてのアプリを自動的に取り込むわけではありません。このモードへ切り替えた後は、GLOBAL ポリシーグループで現在選択されているのが特定ノード、別のポリシーグループ、DIRECT のどれかを確認してください。上部の Global 表示だけでは、実際の送信経路は分かりません。

Global モードでは、まず GLOBAL ポリシーグループで特定のノードを選びます。対象リクエストが Rule では DIRECT に一致して失敗し、Global へ切り替えるとそのノード経由で成功するなら、ネットワークとノードは少なくとも利用可能です。重点を Rule の照合順序へ戻してください。

Global でも timeout になるなら、ルールだけが原因ではありません。ノード、DNS、ローカルネットワークを比較してください。テスト後は Rule へ戻します。システム更新、LAN 内通信、国内サービスなど、本来直接接続するトラフィックも Global では同じ送信経路へ送られる可能性があります。

Direct(直接接続モード):コアを通過した後、ローカルネットワークの経路を使う

Direct モードでは、Clash に入ったリクエストが直接接続されます。ローカルで到達可能なサイトが Direct では成功し、プロキシポリシーでは失敗する場合、ノードまたはプロキシ接続に問題がある可能性が高いと考えられます。Direct でも失敗するなら、ローカル DNS、ネットワーク、対象サービスを確認してください。

Direct は「Clash を無効にする」ことと完全に同じではありません。リクエストはコアに入り、送信経路として DIRECT が選ばれる場合があります。アプリが Clash を経由したか判断するには、ページが開いたかだけでなく、Connections を確認してください。

Direct は成功し、Rule はプロキシ経由で失敗する
そのプロキシポリシーで現在のノードとルール構成を使うべきか確認します。
Direct と Global の両方が失敗する
ローカルネットワークとプロキシのログを別々に確認し、モード名だけに原因を求めないでください。
三つのモードすべてで接続記録がない
アプリが Clash を迂回しています。まずトラフィックの入口を修正してください。

古いクライアントに Script / スクリプトモードが残っている理由

一部の過去の Clash クライアント、旧コア、特定の設定では、通常のルールより複雑な判断を行うために Script モードが提供されていました。現在の Mihomo の一般設定ドキュメントでは、動作モードとして Rule、Global、Direct だけが記載されています。Script をすべての現行クライアントが備える普遍的な四番目のモードとして説明しないでください。

古いクライアントに Script があっても、新しいクライアントに同名の切り替え項目が残っているとは限りません。見つからなくてもインストール失敗ではありません。古い設定を移行するときは、スクリプトが実際にどのドメイン、ネットワーク、プロセスを判定していたか確認し、現在のコア機能に合わせて rules、rule-providers、またはクライアント対応の上書きへ書き換えてください。

Script がある場合の判断方法

表示される場所理解のしかた次の手順
過去のクライアントのモードメニューそのバージョンまたはコアが提供する互換機能古い環境の記録を残し、該当バージョンのドキュメントを確認する
古い設定内のスクリプト部分カスタムのルーティングロジックを含む可能性がある判定条件を理解してから移行するか決める
新しい Mihomo クライアントに Script がない現在の三つの標準動作モードに沿った画面現在のコアで確認されていない mode 値を無理に書き込まない
Merge、上書き、または JavaScript 画面クライアント側の設定処理機能コアの動作モードと混同しない

三つのモードの選び方:比較では変数を一つだけ変更する

用途に合わせて動作モードを選ぶ

現在の目的推奨モード確認すべき点
日常利用でサービスごとに振り分けるRuleConnections に表示される一致ルール、ポリシーグループ、実際の送信経路
ルールがリクエストを誤った経路へ送っているか判断する短時間だけ Global を使うGLOBAL グループの選択内容と、作り直した新しい接続
ローカルネットワークから直接到達できるか判断する短時間だけ Direct を使うローカル DNS、対象への到達性、接続記録
アプリに接続記録がまったくないまだモードを切り替えないシステムプロキシ、アプリ内プロキシ、TUN、またはモバイル VPN

Rule は失敗し、Global は成功する

二回の Connections でルールと送信経路を比較し、Rule の照合を修正します。

Global 画面でも DIRECT と表示される

上部のモード表示だけでなく、GLOBAL ポリシーグループの現在の選択内容を確認してください。

Direct へ切り替えると LAN が復旧する

モード切り替えに頼り続けず、ローカルサブネットの直接接続ルールを追加します。

モードを切り替えてもページの結果が変わらない

再利用されている接続を閉じてもう一度リクエストし、新しく作成された記録を確認します。

比較が終わったら、予定していたモードへ戻して同じ操作を繰り返してください。Rule ですでに正しいポリシーに一致し、正常に動作するなら、「修正」として Global を維持する必要はありません。

参考資料