まずは2つのポイントを区別:通信をコアに取り込む方法と、取り込んだ後の出力先

Clashのルール・グローバル・DIRECTは出力先を決めるモードであり、通信を取り込む方法の違いではありません。システムプロキシ、アプリの手動プロキシ設定、TUNが接続をコアへ渡し、モードがその接続の次の出力先を決めます。コアに取り込まれていない接続は、グローバルモードに切り替えても自動的にプロキシ経由にはなりません。

たとえば、システムプロキシ設定に従うブラウザーはリクエストをローカルのプロキシポートへ送れます。一方、システムプロキシを使わないゲームの通信は、物理ネットワークアダプターから直接送信されることがあります。両方が同時に動作している場合、Clashの「グローバル」モードが適用されるのは、すでに取り込まれた接続だけです。TUNを使うと取り込める範囲は広がりますが、経路設定や除外ルール、権限、プラットフォームごとの実装にも左右されます。

以下では、一般的なClashおよびClash.Meta(後にmihomoへ改称)のコアにおけるモードの概念を説明します。GUIクライアントによっては、設定項目が「モード」「プロキシモード」「出力モード」などと表示されます。名称やボタンの位置は統一されていないため、現在有効なモード、接続履歴、実際の出力経路を確認してください。

3つのモードを比較:ルール判定・一括出力・直接接続

モードと設定値 取り込んだ接続の処理方法 主な用途
ルール:rule ルールリストに従って判定し、一致したルールに指定されたポリシーへ送信 普段のブラウジング、国内外の振り分け、LAN接続の例外設定
グローバル:global 通常の振り分けルールを使わず、GLOBALポリシーへ送信 プロキシノードの動作確認、ルールとの比較、一時的な出力先の統一
DIRECT:direct 通常の振り分けルールを使わず、DIRECTで接続 ローカルネットワークの確認、一時的な直接接続

ルールモードでもすべてがプロキシ経由になるわけではない

ルールの出力先には、プロキシノード、プロキシグループ、DIRECT、REJECTを指定できます。そのため、ルールモードではプロキシ接続だけでなく、直接接続や通信の拒否も可能です。アクセスがどの経路を通るかは、一致したルールと、そのルールが参照するプロキシグループで現在選択されている項目によって決まります。

グローバルモードでも、すべての端末の通信が取り込まれるわけではない

グローバルモードでは通常、取り込まれた接続が組み込みのGLOBAL選択グループへ送られます。このグループでプロキシノードを選択していれば、そのノード経由で接続しますが、DIRECTを選択していれば実際の接続は直接です。「グローバル」と表示されているだけでは出力先が変わったかどうかは判断できません。GLOBALポリシーの選択内容も確認してください。

DIRECTモードにしても、クライアントが終了するわけではない

DIRECTモードでも、システムプロキシやTUNは有効なままの場合があり、コアが接続やDNSを処理し続けることもあります。切り替わるのは出力ポリシーが直接接続になる点だけです。クライアントによるネットワークへの影響をすべてなくすには、別途通信の取り込み機能をオフにし、システムプロキシや経路などの設定が元に戻っていることを確認してください。DIRECTにするだけでは、この操作の代わりになりません。

ルールモード:接続ごとに直接接続するか判定

通常のルールリストは上から順に確認され、一致したルールのポリシーが適用されます。特定ドメイン向けの例外は条件の広いルールより前に置き、MATCHは最後のフォールバックとして配置してください。サブスクリプションに含まれるノード数は、ルールが十分かどうかを示すものではありません。プロキシノード、プロキシグループ、ルールリストはそれぞれ別の要素です。

以下は設定の一部であり、単体でインポートできる完全なサブスクリプションではありません。既存の設定に「ノード選択」という名前のプロキシグループが定義されている前提です。実際に使う際は設定内に存在するポリシー名に置き換え、既存のノードやDNSなどの項目は残してください。

mode: rule

rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - 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
  - GEOIP,CN,DIRECT
  - MATCH,ノード選択
  • DOMAIN-SUFFIX,example.comは、example.comおよびそのサブドメインに一致します。ここでは例として示しており、特定の種類のWebサイト一覧を意味するものではありません。
  • 以下の3つのプライベートIPv4アドレス範囲は、LANへの直接接続を説明するための例です。すべてのローカルアドレス、IPv6、ループバックアドレス、特殊用途のアドレス範囲を網羅しているわけではありません。
  • no-resolveは、このIPルールに一致させるための名前解決を積極的に行わない設定です。接続先IPがすでに分かっている場合は、そのIPを基に判定できます。
  • GEOIP,CNはIPアドレスの位置情報データベースに基づいて判定します。「中国語のWebサイトすべて」を意味するものではなく、中国本土のサービスをすべて正確に判定できるとも限りません。
  • MATCHは、それより前のルールに一致しなかった接続を受け取り、「ノード選択」プロキシグループに出力先を決定させます。

グローバルモード:ノードの確認とルールとの比較に使う

グローバルモードは、切り分けの際に変数を一つ減らすのに役立ちます。通常のルールによる振り分けを一時的にスキップし、テスト対象の接続を同じ出力ポリシーに送ります。ただし、期限切れのサブスクリプション、認証情報の誤り、ノードへの接続不能、DNS障害を解決する機能ではなく、すべてのアプリで正常に動作する保証もありません。

  1. まず、ルールモードで失敗した接続先のドメイン名と、現在プロキシグループで選択されているノードを記録します。
  2. グローバルモードに切り替え、GLOBALでも同じノードを選びます。モードとノードを同時に変更しないようにしてください。
  3. 該当する既存の接続を閉じてから、同じ接続先に再アクセスします。ブラウザーで既存の長時間接続が維持されている場合、以前の出力先が使われ続けることがあります。
  4. 「接続」または「ログ」画面で新しい接続が実際にコアへ取り込まれていることを確認し、出力経路に想定したノードが含まれているか調べます。

同じノードがグローバルモードでは使えるのにルールモードでは失敗する場合、サブスクリプションをすぐに変更するのではなく、一致したルール、ポリシーグループの選択、フォールバックルールを優先して確認してください。どちらのモードでも失敗する場合は、ノードの疎通、認証、名前解決、接続先サービスの状態を調べます。あくまで切り分けの目安なので、最終的にはログも確認してください。

一時的に出力先を統一する場合の注意点

グローバルモードでは、取り込まれたLAN接続、ソフトウェアのダウンロード、動画の通信もプロキシノード経由になる場合があり、通信量や遅延が増えることがあります。社内ネットワーク、NAS、ルーターの管理画面にアクセスできなくなる可能性もあります。「大半はプロキシ経由、一部は直接接続」という使い方を継続するなら、グローバルモードを何度も切り替えるより、ルールモードに明確な例外を設定するのが適切です。

DIRECTモード:ローカルネットワークやLANへの接続を確認

DIRECTモードを使うと、「リモートのプロキシノードを経由しない場合、現在のネットワークから接続先に到達できるか」を確認できます。たとえば、LANプリンターへのアクセス、ローカルのポータル認証のトラブル調査、中国本土のサービスへの接続確認などに使えます。接続にプロキシが必要な接続先で、DIRECTに切り替えた後に失敗しても、クライアントの故障を示すものではありません。

LAN機器に接続できないときの確認手順

  1. まず、192.168.1.1など、機器の実際のIPアドレスを使って接続を試します。これはよくある例にすぎないため、実際のゲートウェイや機器のアドレスを確認してください。
  2. IPアドレスでは接続できるのに機器名では接続できない場合、DNS、検索ドメイン、名前解決の仕組みを確認してください。.localはmDNSが使われることが多く、通常のDNSルールだけでは判断できません。
  3. DIRECTモードでは接続できてルールモードではできない場合、プライベートアドレス範囲が誤ってプロキシポリシーに送られていないか、前のルールに先に一致していないかを確認します。
  4. どちらのモードでも接続できない場合は、Wi-Fiのクライアント分離、機器のファイアウォール、サブネットの違い、別のVPNとの経路競合を確認してください。

TUNが有効な場合は、「TUNに取り込まれた後にDIRECTで出力される」経路と、「ルートから除外されてTUNに入らない」経路を区別してください。この2つは同じではありません。企業VPNや特殊な社内ネットワークでは、クライアントの対応状況に応じて取り込み除外を設定し、複数のルートを同時に変更して原因を追えなくならないようにしてください。

システムプロキシ・TUN・モード設定の組み合わせ

モードと通信の取り込み方法は、それぞれ独立して組み合わせられます。システムプロキシとルールモードの組み合わせは、プロキシ設定に従うデスクトップアプリに適しています。TUNとルールモードを組み合わせると、システムプロキシを参照しない接続もより多く処理できます。TUNとグローバルモードを併用しても、ネットワークが必ず使えるとは限りません。ノードのUDP対応、DNSの経路、OSのルート設定も結果に影響します。

利用シーン おすすめの設定 確認する項目
普段のWeb閲覧やよく使うアプリ ルールモード アプリがシステムプロキシを使うか、ルールが想定したポリシーを指定しているか
ブラウザーは使えるが、ゲームは使えない まず通信の取り込みを確認し、必要ならTUNを検討 ゲームの接続が記録に表示されるか、ノードとクライアントが必要なUDP通信に対応しているか
特定のドメインで振り分けが誤っている疑いがある グローバルモードで一時的に比較 同じノードを選び、新しい接続でテスト
NAS、ルーター、社内ネットワーク ルールモードで直接接続の例外を設定 接続先アドレス、DNS、ルート、他のVPNとの競合

プロキシポートを手動設定する場合は、クライアントに表示されている値を使ってください。たとえば、設定にmixed-port: 7890と明記されている場合に限り、アプリで対応するローカルの混合プロキシポートを使用します。127.0.0.1:7890がすべてのクライアントで共通の固定アドレスというわけではありません。external-controllerの制御用ポートをブラウザーのプロキシ設定に入力しないでください。また、ローカルの待ち受けポートをリモートノードのポートと混同しないようにしましょう。

モードを切り替えても解決しない場合:接続履歴から原因を調べる

Clashのモード切り替えは通常、新しい接続に適用されます。ブラウザーの接続再利用、動画の長時間接続、ダウンロードタスク、アプリ内のDNSキャッシュによって、切り替えても変化がないように見えることがあります。テスト前に元の設定を記録し、一度に変更する項目は一つにして、同じ接続先で再テストしてください。

  • 接続履歴に接続先が表示されない:まず通信がコアに取り込まれているかを確認します。システムプロキシが有効か、アプリ独自のプロキシ設定があるか、TUNが正常に起動しているかを調べてください。
  • ルールモードでDIRECTに一致する:一致した条件が想定どおりか確認してください。プロキシ経由にしたい場合は、ノードを切り替えるだけでなく、該当するルールやルールの順序を修正します。
  • ルールがプロキシグループに一致しているのに直接接続される:グループ名だけで判断せず、そのグループと下位グループでDIRECTが選択されていないか確認してください。
  • グローバルモードでも失敗する:GLOBALで実際に選択されている項目を確認し、ノードのハンドシェイク、認証失敗、接続タイムアウトなどのログを調べてください。
  • ドメイン名では失敗するが、IPアドレスへの通信には応答がある:DNSを引き続き確認してください。HTTPSでは証明書やSNIも関係するため、IPアドレスでWebサイトを開く方法だけではドメイン名での接続テストを完全に代替できません。

初めて設定する場合はインストール・設定ガイドをご覧ください。各クライアントのシステムプロキシ、TUN、プラットフォーム対応状況を確認するには、クライアント比較をご覧ください。これらの機能はクライアントやコアによって異なるため、「Clash」という名称だけで判断することはできません。