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

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

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

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

Global に切り替えて動くアプリがある一方、反応しないアプリが残っていても矛盾ではありません。動作モードは接続の経路を決め、システムプロキシや仮想アダプターは、どのプログラムのリクエストをクライアントに取り込むかを決めます。この役割を分けて考えると、モードを切り替えて比較でき、テスト用の設定を使い続けることも避けられます。

Rule・Global・Direct で接続の経路が決まる

普段は Rule でルールに従って通信を振り分けます。一時的に接続経路を変えたり、アクセス結果を比較したりするときは Global または Direct を使います。モードを切り替えても、ノード自体の速度は上がりません。

モード接続の処理方法主な用途
Ruleルールを順に照合し、最初に一致したルールのポリシーを適用する普段の利用でサービスごとに出口を使い分ける
GlobalGLOBAL グループに渡す。実際の出口はそのグループの選択によって決まる出口を一時的に統一する、またはノードを指定してアクセス結果を比較する
Directローカルネットワークを出口に使うローカルネットワークから到達できるか確認する、または一時的に直接接続する

これらのモードが作用するのは、すでにコアに入った接続だけです。アプリの通信がコアに入っていなければ、Global に切り替えても自動で取り込まれません。Connections にアプリの記録がまったくない場合は、システムプロキシ、アプリのプロキシ、TUN が有効か確認できます。

Clash Verge Rev などのデスクトップクライアントでは、メイン画面のプロキシモード項目を開くか、トレイアイコンを右クリックして Mode サブメニューに進みます。モバイルでは、通常ホーム画面か Proxies ページのモード欄にあります。

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

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

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

  2. Rule を選択する

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

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

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

  4. 比較後は Rule へ戻す

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

システムプロキシ・TUN・ポリシーグループ・DNS の役割

システムプロキシ、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名前解決の結果をルールと接続処理へ渡す方法

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

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

  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 の両方が失敗する
ローカルネットワークとプロキシのログを別々に確認し、モード名だけに原因を求めないでください。
三つのモードすべてで接続記録がない
リクエストをやり直しても記録がない場合は、システムプロキシ、アプリ独自のプロキシ、仮想アダプターの設定が有効か確認します。モードの切り替えだけで、通信を取り込めているか判断しないでください。

Script モード:旧クライアントと現在の Mihomo の違い

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

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

Script がある場合の判断方法

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

モード切り替え後の接続結果をどう判断するか

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

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

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

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

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

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

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

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

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

参考資料