普段はルールモード、トラブル時はグローバルかDIRECTで確認

普段の閲覧にはルールモードがおすすめです。プロキシが必要な通信はプロキシポリシーグループに振り分け、それ以外は設定に従って直接接続します。特定のサイトが開けない場合は、一時的にグローバルモードへ切り替えて、ルールによる振り分けが原因か確認できます。ローカルネットワークから直接アクセスできるか調べる場合は、DIRECTモードに切り替えます。3つのモードは通信経路の選択方法であり、速度や暗号化強度を段階的に示すものではありません。

この記事は、Clashの設定構文を使うクライアントと、Clash Meta(現 mihomo)カーネルを採用したクライアントを対象としています。画面上では「ルール / グローバル / DIRECT」または「Rule / Global / Direct」と表示されることがあります。設定ファイルでは、それぞれ mode: rule、mode: global、mode: direct に対応します。

3つのプロキシモードにおける通信の違い

モード カーネルに入った後の処理 主な用途 主な確認項目
ルール Rule rulesの記述順に照合し、該当したポリシーに振り分け 普段の通信振り分け、社内ネットワークへの直接接続、サービスごとの出口設定 一致したルール、ポリシーグループの選択状態、フォールバックルール
グローバル Global 通常は内蔵のGLOBALグループで出口を一括選択 プロキシへの接続可否の一時比較、ルールの誤判定の切り分け GLOBALで現在選択されているノードまたはポリシー
DIRECT Direct リモートプロキシノードを経由せず、ローカルネットワークから接続 ローカルネットワークとの比較、ノードがアクセスに影響しているかの確認 ローカルネットワーク、接続先への到達性、DNS名前解決

ここでいう「グローバル」の対象はカーネルに取り込まれた通信です。ゲームがシステムプロキシを使わない場合、グローバルに切り替えてもゲームの通信が自動的にノードを経由するわけではありません。また、グローバルグループでDIRECTを選択することもできます。その場合、画面にグローバルと表示されていても、実際には直接接続される可能性があります。モード名だけで判断せず、モードと出口の両方を確認してください。

ルールモード:ルールに一致した後、ポリシーを選択

ルールは上から順に照合される

ルールモードは、サイト名から用途を自動で推測するのではなく、現在有効な設定のルールに従って処理します。通常、接続は適用されるルールに一致すると、対応するポリシーに渡されます。後続の「より適切な」ルールまで照合を続けることはありません。範囲の広いルールを上に置きすぎると、後にある具体的なドメインルールに到達しない場合があります。

以下は既存の設定に追加できる例であり、設定全体ではありません。例のプロキシ選択は、設定ファイルに実在するポリシーグループ名に置き換えてください。example.comは構文説明用のドメインです。実際の用途に合わせて変更してください。

mode: rule
mixed-port: 7890

rules:
  - DOMAIN-SUFFIX,example.com,プロキシ選択
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
  - MATCH,プロキシ選択
  • DOMAIN-SUFFIX,example.comは対象ドメインとそのサブドメインに一致します。この文字列を含む任意のドメインに一致するわけではありません。
  • 3つのIP-CIDRルールは、よく使われるIPv4プライベートアドレス範囲をカバーしており、社内ネットワークへの直接接続を示す例として使えます。実際に一致するかどうかは、接続先のIPアドレス情報を取得できるかによります。
  • no-resolveは、このIPルールの照合時に追加のドメイン名前解決を行わない指定です。接続全体でDNSが不要になるという意味ではありません。
  • MATCHはフォールバックルールなので、末尾に配置します。この例では、他のルールに一致しなかった接続をプロキシグループに送ります。用途に応じてDIRECTに変更することもできます。

ポリシーグループは固定ノードではない

ルールが「プロキシ選択」に一致した後は、グループ内の選択内容も確認が必要です。手動選択型のselectグループなら、特定のノード、別のポリシーグループ、あるいはDIRECTが選択されている可能性があります。ルールがプロキシグループに一致していても、リモートノードを使っているとは限りません。

クライアントの「接続」または「Connections」画面で、直前に発生したリクエストを探し、接続先ドメイン、一致したルール、プロキシチェーンを確認します。ルールが正しいのにプロキシチェーンがDIRECTになっている場合は、ルールを重複して追加する前に、ポリシーグループの選択内容を確認してください。

グローバルモード:比較テストに便利だが、通信の取り込みとは別

グローバルモードでは通常、通常のrulesリストによる振り分けを経由せず、カーネルに入った接続をGLOBALに渡します。切り替え後はクライアントのプロキシ選択画面を開き、グローバルグループで利用可能なノードが選ばれていることを確認してください。クライアントによってはグローバルグループが別の場所にあり、その選択状態はルールモードで使うポリシーグループと連動しないことがあります。

  1. ルールモードでアクセスに失敗したサイトと時刻を記録し、DNS・ノード・設定を同時に変更しないようにします。
  2. 「モード」で「グローバル / Global」を選び、GLOBALに使用するノードを指定します。
  3. 対象サイトの既存接続を閉じ、同じURLにもう一度アクセスします。
  4. グローバルでは成功し、ルールモードでは失敗する場合は、ルールモードに戻り、その接続に一致したルールと実際の出口を確認します。

この比較で原因の範囲は絞れますが、ルールの誤りを単独で証明できるわけではありません。2つのモードで異なるノードを選んでいる場合、結果の違いはノードの出口に起因する可能性もあります。グローバルグループとルールに一致するポリシーグループの最終的な接続先を同じノードにそろえて比較すると、より確実です。

DIRECTモード:ノードを経由しないが、クライアントは停止しない

DIRECTモードでは、カーネルに取り込まれた接続をローカルネットワークから出します。「リモートプロキシノードを経由しなくても、この接続先に到達できるか」を確認するのに適しています。DIRECTでは正常で、指定したノードでは失敗する場合は、ノード、リモート側の出口、関連プロトコルの対応状況を確認してください。DIRECTで正常だからといって、設定全体が正しいとは限りません。

DIRECTに切り替えても、クライアントは接続を受け付け続ける場合があり、システムプロキシがローカルポートを指したままになることもあります。TUN仮想アダプターも動作し続ける場合があります。カーネル内蔵DNSやFake-IPマッピングなどが名前解決に関与するかどうかは、現在のDNS設定と通信の取り込み設定によります。そのため、DIRECTモードは「クライアントを一度も起動していない」ネットワーク環境を完全に再現するものではありません。

ローカルネットワーク本来の状態を比較する方法

  1. まずDIRECTに切り替え、同じ接続先でテストします。
  2. クライアントの影響をさらに切り分ける場合は、システムプロキシまたはTUNを無効にし、ほかのプロキシツールが通信を取り込んでいないことを確認します。
  3. 接続を新しく確立します。必要に応じてブラウザーを終了して再起動し、既存接続の再利用を避けます。
  4. 2回の結果を比較し、テスト後は元の通信取り込み方法とルールモードに戻します。

127.0.0.1:7890をシステムプロキシに設定したまま、そのポートを待ち受けているクライアントを終了しないでください。システムプロキシ設定に従うアプリが接続できなくなる場合があります。7890はよく使われるポートの例です。実際にはクライアントの「設定」にあるHTTPまたはMixedの待ち受けポートを確認してください。

モードを切り替えても反映されない場合:接続経路を順番に確認

手順1:リクエストがカーネルに入っているか確認する

「接続 / Connections」画面を開き、新しいページにアクセスします。該当する接続がまったく表示されない場合は、まずシステムプロキシが有効か、アプリ独自のプロキシが設定されていないか、ブラウザー拡張機能がシステム設定を上書きしていないかを確認します。Windows 11では「設定」→「ネットワークとインターネット」→「プロキシ」、macOSでは「システム設定」→「ネットワーク」→現在のネットワークサービスの「詳細」→「プロキシ」を確認してください。

システムプロキシは、プロキシ設定に従うアプリが主に利用するもので、システム全体の通信をすべて取り込む機能ではありません。より多くのアプリの通信を取り込む必要がある場合はTUNを検討できますが、ルーティング、権限、DNSの設定も関係します。1つのWebページをテストするために、すべての設定を同時に変更するのは避けてください。

手順2:明示的なプロキシ指定でシステム設定の違いを切り分ける

現在の設定で本機のMixedポート7890を待ち受けている場合は、以下のコマンドで比較できます。Windowsではcurl.exeを使ってください。PowerShellの環境によっては、curlが別のコマンドとして解釈される場合があります。macOSとLinuxでは通常curlを使います。

# Windows:ローカルHTTPプロキシを明示的に使用
curl.exe --noproxy "" -I --connect-timeout 10 --max-time 20 --proxy http://127.0.0.1:7890 https://example.com/

# Windows:プロキシを経由しない
curl.exe --noproxy "*" -I --connect-timeout 10 --max-time 20 https://example.com/

# macOS / Linux:ローカルHTTPプロキシを明示的に使用
curl --noproxy "" -I --connect-timeout 10 --max-time 20 --proxy http://127.0.0.1:7890 https://example.com/

これらのコマンドは接続タイムアウトを10秒、全体の制限時間を20秒に設定し、長時間待たずに済むようにしています。速度を測定するものではありません。具体的な問題を調べる場合は、例のURLを実際の接続先に置き換えてください。DIRECT用のコマンドが迂回するのはcurlのプロキシ設定だけです。TUNが有効な場合は通信が引き続き取り込まれる可能性があるため、クライアントを完全に経由していないとは判断できません。

手順3:既存接続、DNS、設定の上書きを確認する

  • 既存接続の再利用:モード切り替えは通常、新しい接続に適用されます。既存のHTTP/2、WebSocket、ダウンロード接続の出口がすぐに切り替わるとは限りません。まず対象の接続を閉じて再試行してください。最初からデバイス全体を再起動する必要はありません。
  • DNSの失敗:ログに名前解決のタイムアウトが表示される場合は、まずリゾルバーに到達できるか確認してください。グローバルモードに切り替えてもDNSの問題が自動的に解決するわけではありません。Fake-IPモードでも、対象ドメインの実際の名前解決が不要になるとは限りません。
  • 設定が反映されない:現在のサブスクリプション設定が選択され、変更後に再読み込みされているか確認します。クライアントのオーバーライド、マージ、スクリプト機能によって、最終的なmodeやrulesが変更されることがあります。
  • 接続が拒否される:接続の詳細にREJECTと表示される場合は、一致したルールと拒否理由を確認します。ローカルポートへの接続が拒否された場合は、カーネルが起動していることとポート番号が一致していることを確認してください。

原因をさらに調べる場合は、当サイトのトラブルシューティングも参考にしてください。接続先ドメイン、モード、実際の出口、エラー内容、発生時刻を記録しておくと、「切り替えても変化がない」とだけ伝えるより問題を再現しやすくなります。スクリーンショットを共有する前に、サブスクリプションURL、ノードの認証情報、個人の接続情報を隠してください。

よくある質問と普段の設定

グローバルモードはルールモードより速い?

必ずしもそうではありません。速度や遅延は、主にローカルネットワーク、ノードの経路、接続先サービス、混雑状況で決まります。グローバルモードでは、直接接続に適した通信までリモートノードに送られることもあります。速度を比較する場合は、接続先・ノード・テスト条件をそろえ、モード名だけで判断しないでください。

TUNを有効にしても、ルールモードは必要?

通信の振り分け方に応じて選びます。TUNは通信を取り込む方法、ルールモードは出口を決める方法で、併用できます。TUNで接続をカーネルに取り込んだ後も、ルールによってDIRECT、プロキシ、拒否を選べます。グローバルモードに切り替えると、その後の出口選択が変わります。

サブスクリプションを更新すると、モードやノードの選択も変わる?

クライアントが画面の状態を保持する方法、設定の読み込み方、オーバーライドの適用方法によって異なります。更新後は、現在のモード、ポリシーグループが残っているか、選択中のノードが削除されていないかを確認してください。独自の振り分け設定を継続して使う場合は、クライアントが対応するオーバーライドやマージ機能を利用しましょう。サブスクリプションから生成されたファイルを直接編集すると、更新時に上書きされる可能性があります。

普段は「ルールモード+明示的なポリシーグループ選択」にしておき、トラブル時には通信の取り込み、ルールの一致、出口ノード、DNSの順に確認しましょう。変更する項目は一度に1つにし、テスト後は元の設定に戻します。ポリシーグループ、Fake-IP、TUNについては用語集をご覧ください。初めて設定する場合は入門ガイドから始められます。