入門ガイド 読了目安 12分

Clashのルール・グローバル・DIRECTモードの違いと選び方

Clashの3つのプロキシモードについて、通信先や用途、注意点を比較し、適切な接続方法の選び方を解説します。

モードは通信経路のどの層にあるか

Clash、Clash Meta(mihomo)、および対応するコアを採用したGUIクライアントでは、通常、ルール・グローバル・DIRECTの3つの動作モードを利用できます。ここでいう「モード」は、コアに入った接続をどのポリシーで処理するかを主に決めるもので、システムプロキシやTUN、DNSの有効・無効と同じ意味ではありません。

接続をモードで制御できるかどうかは、まず通信がClashに入っているかで決まります。システムプロキシを有効にすると、ブラウザーやシステムプロキシ設定に従うアプリが、ローカルのHTTPまたはSOCKSポートへリクエストを渡します。TUNを有効にすると、コアはネットワーク層でより広範なTCP・UDP通信を取り込めます。特定のアプリにプロキシアドレスを手動設定すれば、そのアプリから直接 mixed-port に接続することもできます。これらの入口を通らない接続は、モードを切り替えただけでは自動的にプロキシ経路へ入りません。

コアに入って初めて、モードがルーティング判断に関与します。ルールモードはルール一覧を読み取り、ポリシーを選択します。グローバルモードは通常、接続を GLOBAL というポリシーグループへ渡し、DIRECTモードは DIRECT に渡します。その後もコアでは、ドメイン解決、ポリシーグループの選択、ノードへの接続などが実行されます。

モードの切り替えが影響するのは、通常、新しく確立される接続です。ブラウザーで既に維持されているHTTP/2、HTTP/3、WebSocketのセッションは、以前の経路を使い続ける場合があります。ダウンロードやチャットアプリも長時間接続を維持することがあります。切り替え結果を確認するときは対象ページを閉じて開き直し、必要に応じて該当アプリの接続を終了するか、クライアントを一時的に再起動してください。

ルールモード:宛先・送信元・プロトコルで通信を振り分ける

ルールモードは、日常利用で最も一般的な選択肢です。コアは設定ファイルのルールを上から順番に確認し、現在の接続を判定します。最初に一致したルールで判定を止め、そのルールが指定するポリシーグループまたは組み込みポリシーへ接続を渡します。

ルールでは、完全なドメイン名、ドメインのサフィックス、IPアドレス帯、地理情報、プロセス、受信元、ネットワーク種別などを条件にできます。ただし、対応するルールタイプはコアのバージョンによって完全には一致しません。プロセスルールもOSの権限や実装方式の制約を受けるため、設定時は利用中のクライアントが採用するコアのドキュメントを確認してください。

rules:
  - DOMAIN-SUFFIX,example.net,Proxy
  - DOMAIN,printer.lan,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

この例では、まず指定したドメインを処理し、次にローカルネットワークのアドレス帯を直接接続にします。その後で地理情報に基づくIPを処理し、最後に、それまで一致しなかった接続を MATCH で受けます。MATCH は通常、ルールの末尾に置きます。範囲の広すぎるルールを前に置くと、後続の細かなルールが実行されなくなる可能性があります。

ルールモードの主なメリット

  • ローカル通信とプロキシ通信を併用できます。LAN上の機器、中国本土向けのサービス、社内ネットワークは直接接続のままにし、プロキシが必要な宛先だけノードへ送れます。
  • ポリシーグループを個別に選べます。ストリーミング、開発サービス、メッセージングなどの宛先ごとに異なるポリシーグループを設定でき、すべての接続を同じノードにする必要がありません。
  • 通信コストを管理しやすくなります。ソフトウェア更新やクラウドストレージの同期など、大容量通信をプロキシ経由にするかどうかをルールで決められます。
  • 常時運用に向いています。ルールが安定すれば、モードを頻繁に手動で切り替える必要がありません。

ルールモードでよくある誤解

ルールモードでも、すべてのドメインが期待どおりに分類されるとは限りません。ルールセットには更新が必要で、ドメインが変更されることもあり、アプリがIPアドレスへ直接接続する場合もあります。最終的なフォールバックをプロキシにすると、一致しなかった接続もプロキシ経由になります。DIRECTにすると、未分類の宛先は直接接続されます。結果を判断するときは、現在のモード名だけでなく、接続詳細に表示される一致ルール、ポリシーチェーン、最終ノードを確認してください。

DNSもマッチング結果に影響します。ドメイン名でコアに入ったリクエストでは、コアがドメインルールを直接利用できることがあります。IP情報しかない接続では、IPルール、スニッフィング結果、マッピング機能が必要になる場合があります。fake-ip、redir-host、ドメインスニッフィングなどを有効にすると、DNS設定やコアのバージョンによって挙動が変わります。

グローバルモード:すべてをGLOBALポリシーで処理する

グローバルモードでは通常のルール判定を迂回し、Clashに入った接続をまとめて GLOBAL ポリシーへ渡します。GUIクライアントでは、通常、プロキシまたはポリシー画面からGLOBALの選択項目を操作でき、ノード、プロキシグループ、DIRECT のいずれかを実際の出口として選べます。

そのため、「グローバルモード」が必ずしも「すべての接続が特定のリモートノードを通る」という意味になるわけではありません。GLOBALで DIRECT が選択されていれば、最終的な結果は直接接続です。自動選択グループが選ばれている場合は、そのグループのヘルスチェックと選択ロジックによって出口が決まります。グローバルモードへ切り替えたら、GLOBALが現在どの項目を指しているかも確認してください。

グローバルモードが適するケース

  1. ルールが原因かどうかを素早く切り分ける。ルールモードではアクセスできないサイトがグローバルモードで開けるなら、ノード自体は利用できる可能性があります。次に、一致ルール、ポリシーグループ、DNS経路を確認します。
  2. 短時間だけ出口を統一する。特定ノードの接続性、遅延、出口IPアドレスを一時的に確認するときは、グローバルモードでルールの影響を減らせます。
  3. ルール設定がまだ整っていない。ノードだけが含まれ、利用可能なルールがない設定を初めて読み込んだ場合は、グローバルモードでノードを一時確認できます。ただし、常用する前に振り分け設定を整えてください。
  4. アプリが複数の関連ドメインへアクセスする。ログイン、認証コード、リソース読み込みなどのクロスドメイン通信を調べる際、出口を統一すると、ルールによる振り分けの不一致を確認しやすくなります。

グローバルモードで注意したい影響

出口を統一すると、本来は直接接続できるサービスも同じポリシーを通るため、遅延やノードの通信量が増えることがあります。LANプリンター、ルーターの管理画面、ネットワークストレージなどには迂回設定が用意されている場合もありますが、モード名だけで判断してはいけません。TUNのルート除外、システムプロキシのバイパスリスト、クライアントのLAN設定を確認してください。

社内ネットワーク、学校ネットワークの認証ページ、ローカルネットワークからのみ到達できるアドレスの一部は、リモートノード経由に適していません。グローバルモードでこれらのサービスが使えない場合は、ルールモードへ戻し、該当するドメインやネットワーク帯をDIRECTに設定してください。プライベートアドレスのルールはできるだけ明確にし、一般的な範囲には 10.0.0.0/8172.16.0.0/12192.168.0.0/16 があります。

DIRECTモード:コアに入った接続をすべてDIRECTで処理する

DIRECTモードでは、Clashが取り込んだ接続を DIRECT で宛先へ直接アクセスさせ、通常のルールによるプロキシノード選択を行いません。プロキシ転送を一時停止したいとき、ローカルネットワークとの比較テストを行うとき、現在のネットワークから直接アクセスする必要があるリソースを扱うときに適しています。

DIRECTモードにしても、クライアントを完全に終了したことにはなりません。システムプロキシのポートが待ち受けを続け、TUN仮想NICも有効なままの場合があります。DNSリクエストもClashが処理し続けることがあります。変わるのは、接続の最終転送ポリシーがDIRECTになる点です。OS本来のネットワーク経路へ戻すには、システムプロキシまたはTUNを無効にし、クライアントの仕様どおりシステムDNSが復元されていることも確認してください。モードをDIRECTにするだけでは不十分です。

DIRECTモードの代表的な用途

  • 現在利用している通信事業者のネットワークから、サイトへ直接アクセスできるか確認する。
  • ルーター、プリンター、ネットワークストレージ、開発環境内のローカルサービスへアクセスする。
  • 大容量のシステム更新をダウンロードするとき、一時的にローカルネットワークの出口を使う。
  • プロキシノードは利用できるのに、特定のアプリだけ異常が発生する問題を切り分ける。
  • クライアントの画面と設定を残したままプロキシ転送を停止し、後で簡単に戻せるようにする。

DIRECTモードでも宛先へアクセスできない場合、問題は通常、プロキシノードにはありません。ローカルDNS、OSのファイアウォール、対象サービスの状態、通信事業者の経路、アプリ自体の設定を確認してください。DIRECTでは正常でルールモードで異常が出るなら一致ルールを確認します。DIRECTでは正常でグローバルモードだけ異常なら、GLOBALで選択されたノードとそのネットワーク機能を重点的に確認します。

ルール・グローバル・DIRECTモードの比較

比較項目 ルールモード グローバルモード DIRECTモード
主な判断方法 ルールの順番に従って一致させ、ポリシーを選択 GLOBALポリシーへ一括転送 DIRECTへ一括転送
通常のルール一覧を使うか 使う 通常はスキップ 通常はスキップ
最終的にプロキシを経由するか 一致ルールとポリシーグループによる GLOBALの現在の選択による プロキシノードを経由しない
日常の常用に向いているか 向いている 短時間の出口統一や診断に向いている 一時的な転送停止やテストに向いている
LANリソースへのアクセス ルールで明示的に直接接続できる バイパス設定とGLOBALの出口を確認する必要がある 通常は直接アクセス
切り分けでの役割 ルールとポリシーチェーンを確認 ルール判定の要因を切り離す ローカルネットワークの基準を作る
通信を先にClashへ取り込む必要があるか 使う 使う 使う

3つのモードに固定された性能順位はありません。通信速度は主に、ローカルネットワーク、接続先サーバー、ノードの負荷、通信プロトコル、DNSの結果、経路品質に左右されます。ルールモードでは判定処理が加わりますが、通常規模のルール判定が体感遅延の主因になることはほとんどありません。グローバルモードも、GLOBALが速度測定に基づく選択ロジックを持つポリシーグループを指していない限り、自動的に最速ノードを選ぶわけではありません。

用途に合ったモードを選ぶ

日常のブラウジングと複数アプリの同時接続

まずはルールモードを使います。LAN、ローカルサービス、プロキシが必要な宛先を別の経路へ振り分けられるためです。設定には明確なフォールバックルールを用意し、利用しているルールセットを定期的に更新してください。特定のサービスが頻繁に誤った経路へ進む場合は、より具体的なドメインルールを追加し、範囲の広いルールより前に置きます。

設定を新しく読み込んだ後にノードをテストする

まずシステムプロキシまたはTUNが有効になっていることを確認し、次にグローバルモードへ切り替えてGLOBALで明確なノードを選びます。複数の宛先へアクセスし、接続ログを確認してください。グローバルモードで正常ならルールモードへ戻して振り分けを確認します。グローバルモードでも失敗する場合は、ノード、サブスクリプションの内容、時刻設定、ネットワーク接続を先に確認します。

Webページは開くのに、ログインや画像の読み込みに失敗する

一時的にグローバルモードへ切り替えて再テストできます。現在のWebページは、メインサイト、静的リソース、認証、APIのドメインへ同時にリクエストすることがよくあります。ルールモードでは、それらが異なる出口へ振り分けられ、セッションの地域やIPアドレスが一致しない場合があります。グローバルモードで正常に戻るなら、失敗したリクエストのドメインを確認し、関連ドメインに一貫したポリシーを設定してください。グローバルモードを常用するのは避けます。

ルーターの管理画面、NAS、開発サーバーへアクセスする

一時的な診断にはDIRECTモードを使えます。常用設定では、ルールモードにLANのドメインとプライベートネットワーク帯の直接接続ルールを追加する方法が適しています。TUNを有効にしている場合は、ルート除外と自動ルート設定も確認し、ローカルサブネットが誤ってリモート出口へ送られないようにしてください。

しばらくプロキシを停止したい

Clashによる通信の取り込みとDNS処理を残したい場合は、DIRECTモードへ切り替えます。システムを完全に元のネットワーク経路へ戻したい場合は、システムプロキシまたはTUNを無効にしてください。クライアントを終了する前に、システムプロキシ設定を自動的に復元するかも確認し、停止したローカルポートをOSが参照し続けないようにします。

すべてのリクエストを同じ出口から送信したい

グローバルモードを使い、GLOBALでノードまたはポリシーグループを明示的に選択します。テスト終了後は、実際の用途に応じてルールモードへ戻すか判断してください。長時間のグローバル転送は、ローカルサービスへのアクセス、遅延、ノードの通信量に影響するため、あらゆる問題の固定的な解決策には向きません。

モードを切り替えても反映されない場合の確認手順

モードを正しく選んだのにネットワークの状態が変わらない場合は、ノードを次々に変更するのではなく、通信の入口から確認します。以下の手順は、一般的なデスクトップクライアントとmihomoコアの設定に適用できます。

  1. 対象アプリがClashに入っているか確認する。 クライアントの接続一覧またはリアルタイムログを確認します。対象へアクセスしても新しい接続がまったく表示されない場合、アプリがシステムプロキシを使っていないか、通信がTUNに取り込まれていない可能性があります。一部のゲーム、コマンドラインツール、独自ネットワークスタックを使うソフトは、システムプロキシを自動的に読み取りません。
  2. 現在のモードがコアへ反映されているか確認する。 GUIの表示とコアの状態が一時的に同期しないことがあります。切り替え後、ログまたはコントロールパネルのmode値を確認し、必要ならページを更新するだけでなくコアを再起動します。
  3. グローバルモードでGLOBALの実際の選択を確認する。 GLOBALがDIRECTを指している場合や、現在利用できないポリシーグループを指している場合があります。ポリシーチェーンを階層ごとに展開し、最終的な出口ノードを確認してください。
  4. ルールモードで一致したルールを確認する。 接続詳細には通常、ルールタイプ、ルール内容、対象ポリシーが表示されます。結果が想定と異なる場合は、ルールの順序、ルールセットの更新状態、末尾にあるMATCHの転送先を確認します。
  5. DNS経路を確認する。 ドメイン解決に失敗すると、3つの転送モードすべてで接続できないように見えることがあります。DNSログを確認して上流アドレスへ到達できることを確かめ、fake-ipの除外項目、IPv6設定、ドメインスニッフィング設定も確認してください。
  6. 既存の接続を作り直す。 対象アプリのページまたはセッションを閉じ、古い接続が解放されてから再テストします。ブラウザーではプライベートウィンドウを新しく開くと、キャッシュ、接続の再利用、拡張機能の設定による影響を減らせます。
  7. OS内の別のプロキシ設定を確認する。 ブラウザー拡張、環境変数、企業プロキシ、VPN、その他のネットワークツールが、別の転送層を作っている可能性があります。テスト時は、説明可能な経路を一度に1つだけ残してください。

3段階の比較で素早く切り分ける

1段階目はDIRECTモードでテストし、ローカルネットワークの基準を作ります。2段階目はグローバルモードで明確なノードを選び、プロキシ経路を確認します。3段階目にルールモードへ戻り、一致ルールを確認します。DIRECTで失敗するならローカルネットワークを先に調べます。DIRECTは正常でグローバルが失敗するなら、ノードとプロキシの入口を確認します。ルールモードだけが失敗する場合は、ルール順序、ポリシーグループ、DNSの分類を重点的に確認します。

テストが終わったら、日常の設定は通常ルールモードへ戻します。グローバルモードとDIRECTモードは、明確な目的があるときの一時的な手段として使うのが適しています。前者は出口を統一してルール要因を切り離すため、後者はローカルネットワークとの比較基準を作るために使います。通信の入口、モードによる判断、最終ポリシーという3層の関係を理解するほうが、ボタンを何度も切り替えるより安定した結果につながります。

Next route

クライアントを選んで設定を続ける

まずOSとメンテナンス状況に応じてクライアントを選び、利用ガイドに従って設定をインポートします。その後、システムプロキシまたはTUNを有効にし、ポリシーグループを確認してください。