3つのモードを比較:普段はRuleがおすすめ

Clashのプロキシモードが決めるのは、Clashのコアに届いた接続を、その後どのように処理するかです。どのアプリが接続をClashに渡すかを決めるものではありません。普段はサブスクリプションのルールに従って通信を振り分けるRuleを使い、振り分けの問題を一時的に調べる場合はGlobal、Clashが処理する接続を宛先へ直接つなぐ場合はDirectを選びます。

モード 接続の処理方法 主な用途 確認する点
Rule/ルール ルールを上から順に照合し、一致したルールに従ってDIRECT、プロキシ用ポリシーグループ、または拒否を選択します。 普段のブラウジング、国内外サービスの振り分け、LANへのアクセス。 どのルールに一致したか、そのルールがどのポリシーを指定しているか。
Global/グローバル 通常の振り分けルールで出口を選ばず、GLOBALポリシーで現在選択されているものを一律に使用します。 プロキシ経路を一時的に確認し、Ruleモードとのアクセスの違いを比較する。 GLOBALで現在選択されているのがノード、別のポリシーグループ、DIRECTのどれか。
Direct/直接接続 コアに届いた接続を、リモートプロキシノードを経由せず宛先へ直接接続します。 一時的に直接接続へ戻し、ローカルネットワーク経由とプロキシ経由を比較する。 ローカルネットワークから宛先へ接続できるか、通信の取り込みやDNS設定が引き続き有効か。

Ruleモード:ルールを順に照合して出口を選ぶ

ルールモードでは、設定のrulesリストを先頭から確認し、一致したルールに対応するポリシーを使います。「より適切な」ルールを探して後続のルールを調べることはありません。そのため、ドメインルール、IPルール、最後のフォールバックルールの順序が結果を左右します。

動きがわかる振り分け例

以下はルールの一部で、サブスクリプション全体ではありません。設定に「普段使いプロキシ」というポリシーグループがすでにあるものとします。example.comはルール照合を説明するための例です。

mode: rule
rules:
  - DOMAIN-SUFFIX,example.com,普段使いプロキシ
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - MATCH,普段使いプロキシ
  • example.comとそのサブドメインは1行目に一致し、「普段使いプロキシ」で処理されます。
  • 宛先が192.168.1.10の場合は2行目に一致してDIRECTで接続されます。LAN内のアドレスの処理を説明する例です。
  • no-resolveは、このIPルールに一致する際にドメイン名の解決を新たに行わない指定です。クライアント全体のDNSを無効にするものではありません。
  • MATCHはフォールバックルールなので、末尾に置きます。先頭に置くと、後続の通常ルールに一致しなくなります。

プロキシグループに一致しても、リモートノードを使うとは限らない

ポリシーグループではDIRECTを選べる場合があります。ルールの振り分け先が「普段使いプロキシ」でも、そのグループで現在DIRECTが選ばれていれば、最終的には直接接続になります。問題を調べるときは、モードボタンがRuleかどうかだけでなく、「ルール → ポリシーグループ → 実際の出口」の順に確認してください。

サブスクリプションの更新で、ルールやポリシーグループの構成が変わることもあります。独自の振り分け設定を長期的に追加する場合は、クライアントが対応するオーバーライド、Mixin、設定ファイルの編集方法を先に確認してください。サブスクリプションから生成されたファイルを直接編集すると、次回の更新で変更が上書きされる可能性があります。オーバーライドの構文はクライアントごとに異なります。

Globalモード:出口を統一するが、全デバイスを取り込むわけではない

Globalモードは、一時的な動作確認に便利です。Ruleで開けないサイトがある場合、Globalに切り替えて利用可能なノードを明示的に選び、アクセス結果が変わるか確認できます。Globalでは正常でRuleでは問題が起きるなら、ルールの一致先、ポリシーグループの選択、両方の経路でのDNS処理を調べる価値があります。ただし、それだけで「サブスクリプションのルールに問題がある」とは断定できません。

  1. クライアントのプロキシ画面を開き、モードをGlobalに切り替えます。
  2. グローバルポリシーのGLOBALを探し、動作が確認できているノードを選択します。クライアントによっては、ローカライズされた名前で表示されます。
  3. 接続をやり直し、Connections(接続)画面で実際の出口を確認します。
  4. 確認が終わったらRuleに戻します。普段使うLAN内の通信や、本来直接接続できる通信をプロキシノードへ送り続けないためです。

「グローバル」とは、コアに届いた通信のポリシー選択を指すもので、OS全体の通信が対象になるという意味ではありません。たとえばWindowsのシステムプロキシだけを有効にしている場合、その設定に従うブラウザーは通常プロキシを利用します。一方、独自に接続するアプリやシステムプロキシを無視するアプリは、引き続き直接接続することがあります。Globalに切り替えても、こうしたアプリが自動的に取り込まれるわけではありません。

Directモード:ノードを経由しないが、クライアントが接続に関与する場合がある

Directでは、Clashに届いた接続を宛先へ直接つなぎます。「ローカルネットワークから接続できるか」と「プロキシ経由で接続できるか」の比較に便利ですが、クライアントが終了するわけではありません。システムプロキシがローカルの待ち受けポートを指している場合、アプリはいったんClashに接続し、その後コアから宛先へ直接接続します。

同様に、TUNを有効にしている場合は、Directに切り替えても仮想ネットワークアダプター、ルート制御、設定済みのDNS処理が引き続き動作することがあります。そのため、Directでドメイン名を解決できない場合も、ClashのDNS設定が原因ではないとは言い切れません。

プロキシ経路から完全に外すには

  • リモートノードだけを一時的に使わない場合:Directに切り替えてから、接続し直します。
  • システムプロキシを使うアプリを通常の経路に戻す場合:System Proxyを無効にし、アプリ側に手動プロキシが設定されていないか確認します。
  • TUNによる通信の取り込みを解除する場合:クライアントでTUNを無効にし、仮想ネットワークアダプター関連のルートが元に戻ったことを確認してから、必要に応じてクライアントを終了します。
  • 終了後にブラウザーがインターネットへ接続できなくなった場合:システムプロキシが、すでに待ち受けを停止したローカルポートを指したままになっていないか確認します。

たとえば、Clashが終了しているのにアプリが127.0.0.1:7890を使い続け、ほかのプロキシサービスもそのポートで待ち受けていない場合、リクエストは失敗することがあります。7890はよく使われる設定値の一例です。実際のポートは、使用中のクライアントに表示されている値を確認してください。

Clash for Windowsでモードを切り替える場所

Clash for Windows 0.20.39の一般的な英語UIを例に説明します。まずProfilesでインポート済みの設定を選び、左側のProxiesを開いて、上部でRule / Global / Directを選択します。Ruleにしたらサブスクリプション内のポリシーグループを確認し、GlobalにしたらGLOBALで現在選択されている項目を確認してください。

システムプロキシの切り替えはGeneral → System Proxyにあります。Proxies画面の3つのモードとは別の設定です。UIの言語や派生版、mihomoコアを使う別のクライアントでは、「プロキシ」や「設定 → プロキシモード」などに項目がある場合があります。実際の画面で確認してください。

サブスクリプションを初めてインポートした後の確認手順

  1. Profilesで設定のダウンロードが完了し、選択状態になっていることを確認します。サブスクリプション名が一覧にあるだけでは不十分です。
  2. Proxiesを開いてRuleを選び、主要なプロキシグループで利用可能なノード、または適切な自動選択グループを選びます。
  3. Generalで実際の待ち受けポートを確認し、必要に応じてSystem Proxyを有効にします。より多くのアプリの通信を取り込む場合は、TUNに必要な権限やルーティング設定を別途確認してください。
  4. 対象のWebページを開き、Connectionsで宛先アドレス、ルール、ポリシーの経路を確認します。表示される項目はクライアントのバージョンによって異なります。

切り替えても変わらないとき:4段階で接続を確認

ステップ1:リクエストがClashに届いているか確認する

Connections画面を開いたまま対象へアクセスします。該当する接続が表示されない場合は、まずシステムプロキシ、アプリ独自のプロキシ設定、TUNの取り込み範囲を確認してください。リクエストが短時間で終わると、接続画面に表示されないこともあります。ログも併せて確認しましょう。この段階では、3つのモードを何度も切り替えても、通常は接続の入口の問題は解決しません。

ステップ2:古いセッションを更新するだけでなく、新しい接続を作る

モードの変更が主に影響するのは、新しく確立される接続です。ブラウザーはHTTP/2の長時間接続を再利用することがあり、チャットアプリやダウンロードツールも既存のセッションを維持する場合があります。対象のページを閉じる、またはタスクを一時停止してから再試行してください。必要な場合は対象の接続だけを終了します。すべての接続を閉じると、ほかのダウンロードや通話も中断されるため、影響を確認してから操作してください。

ステップ3:一致したルールと最終的なポリシーを確認する

Ruleでは、ルールが想定したポリシーを指定しているか、ポリシーグループで誤ってDIRECTが選択されていないかを確認します。Globalでは、GLOBALで目的のノードが実際に選択されているか確認してください。接続が想定したノードを使っているのに失敗する場合は、モードを変え続けるのではなく、ノードの状態、認証、接続先サービスの制限を調べます。

ステップ4:DNSの問題を切り分ける

ドメイン名を解決できないことと、プロキシノードに接続できないことは別の問題です。Globalにしても、到達できないDNSサーバーが自動的に修復されるわけではありません。Directでも、システム本来の名前解決経路を使うとは限りません。TUNを使っている場合は、DNSの横取りやブラウザーのセキュアDNSが実際にどの経路を通るかも確認してください。fake-ipやnameserverなどの項目を扱う際は、元の設定を残し、一度に一つだけ変更して結果を記録しましょう。

よくある用途:ブラウジング、ゲーム、LANアクセス

普段のインターネット利用でGlobalを常に有効にすべき?

通常はRuleを使い、サブスクリプションのルールで直接接続とプロキシ経由の通信を振り分けます。出口を統一したい場合や、短時間のトラブルシューティングを行う場合に限ってGlobalを使いましょう。特定のサイトがいつも誤った経路を通る場合は、Globalで問題を回避し続けるのではなく、該当するルールを確認してください。

ゲームでGlobalにすれば、必ずプロキシ経由になる?

必ずしもそうではありません。ゲームがシステムプロキシに従わない場合や、UDPを使う場合があります。まず通信がコアに届いているか確認し、次にノードと通信の取り込み方法が対象のプロトコルに対応しているか調べてください。TUNを使うと取り込める範囲は広がりますが、遅延が下がるとは限らず、ゲーム自体が必要とするネットワーク条件が不要になるわけでもありません。

プリンター、NAS、ルーターの管理画面が開かないとき、まず何を確認する?

まずGlobalになっていないか、LAN内の宛先アドレスがリモートノードに送られていないかを確認します。Ruleに戻し、プライベートIPアドレスを直接接続するルールと、TUNのルート除外設定を確認してください。ドメインルールを1つ追加しただけで、すべてのLANアクセスが元に戻ったと思い込まないようにしましょう。

Directに切り替えた後も特定のWebサイトが開く場合、何がわかる?

その条件でアクセスに成功したことはわかりますが、画面の表示だけで接続経路を判断することはできません。キャッシュ、既存の接続、アプリによるプロキシの迂回が結果に影響する場合があります。新しい接続を確立し、Connectionsに記録されたポリシーと併せて確認すると、より確実に判断できます。

確認する順番はこれだけです:まず接続がClashに届いているかを確認し、次にモード、ポリシーグループ、最後にノードとDNSを調べます。普段はRuleを使い、トラブルシューティング時だけGlobalまたはDirectを短時間試すほうが、「アクセスできるかどうか」をすべてモードのせいにするより、原因を特定しやすくなります。