Clashのプロキシグループ設定ガイド|url-test・fallback・load-balanceの使い方

Clashのselect、url-test、fallback、load-balanceの選択動作と主要パラメーターを解説。編集して使えるproxy-groupsの設定例も紹介します。

ルール・プロキシグループ・ノードの違いを把握する

Clashの設定では、rulesが接続をどのプロキシグループに振り分けるかを決め、proxy-groupsがグループ内のノードや下位グループから接続先を選びます。候補となるノードはproxiesやproxy-providersで定義します。「ルールに一致しているのに接続先が違う」という場合は、ノード一覧だけでなく、まずルールの振り分け先とグループ内で現在選択されているメンバーを確認しましょう。

プロキシグループのtypeによって選択方法が決まります。selectは手動選択、url-testは遅延を測定して自動選択、fallbackはリスト順に利用可能な項目を選択、load-balanceは利用可能なノードに接続を振り分けます。いずれもルールの振り分け先にできますが、「自動選択」はサブスクリプション内のノードを書き換える機能ではなく、ルールの評価順を変更するものでもありません。

タイプ選択基準用途
selectクライアント上で手動選択したメンバー接続先を手動で指定したい場合や、直接接続先を用意したい場合
url-test測定結果で最も遅延が小さいノード普段のブラウジングで応答の速いノードを自動選択
fallbackリストの先頭にある利用可能なメンバー優先ノードを固定し、利用できなくなったら切り替え
load-balance設定した振り分け方式とノードの利用状況複数のノードに接続を分散

select:接続先を手動で選ぶ

selectは、ルールとほかのプロキシグループの間に配置するのが一般的です。たとえばルールの振り分け先を「手動選択」にし、グループ内に「自動選択」「フェイルオーバー」、個別ノード、DIRECTを並べます。ルールを変更せずに、クライアントの「プロキシ」画面から接続先を切り替えられます。DIRECTはプロキシを経由せず直接接続する設定です。プロキシ接続と直接接続を比較できるよう、選択肢として追加します。

selectは遅延に応じてメンバーを自動で切り替える機能ではありません。自動選択グループと個別ノードを同じリストに入れた場合、「自動選択」を選ぶと、下位のurl-testが具体的なノードを選びます。サブスクリプションの更新やグループ名の変更後は、クライアントに表示されている選択状態を再確認してください。設定を更新したら、グループ内のメンバーが残っているかを確認し、実際の接続先もチェックしましょう。

url-test:速度測定ではなく、遅延を基準に選択

url-testでは、urlで測定先を指定し、intervalで測定間隔を秒単位で設定します。たとえばinterval: 300は、300秒ごとに定期測定を行う設定です。クライアントに表示される遅延は測定リクエストの応答時間であり、ダウンロード速度や動画の実効速度を示すものではありません。測定先には、安定して応答するURLを指定してください。例ではよく使われるhttps://www.gstatic.com/generate_204を使用しています。現在のネットワークやノードからアクセスできない場合は、到達できる軽量なURLに変更しましょう。アクセスできないままだと、遅延の測定結果が失敗し続けることがあります。

tolerance: 50は、選択時に50ミリ秒の許容差を設ける設定です。遅延が近いノード間で頻繁に切り替わるのを抑えるためのもので、接続タイムアウトでも「50ミリ秒を超えたら障害と判定する」という意味でもありません。ログイン状態が接続元IPの変化に影響されるなど、特定の出口IPが必要な場合は、遅延の最小値だけで接続先を決めず、selectで個別ノードを指定しましょう。

fallback:リストの順番が優先順位

fallbackもurlとintervalを使ってメンバーの利用可否を確認しますが、遅延が最も小さいノードを選ぶわけではありません。候補の順番が「香港 01」「香港 02」「日本 01」の場合、「香港 01」が利用可能と判定されている限り、たとえ「香港 02」の測定遅延が小さくても、優先して「香港 01」を使います。先頭のメンバーが利用できない場合に、次のメンバーへ順番に切り替わります。

そのためfallbackは、メインと予備のノードを使い分けたい接続に適しています。長期的に使いたいノードを先頭に、予備ノードを後ろに並べましょう。並べる際はノード名だけで判断せず、必要なサービスに実際に対応しているかも確認してください。切り替えはヘルスチェックの結果に基づいて行われ、Webページへのリクエストごとに即時再試行する仕組みではありません。また、確立済みの接続が新しいノードへ自動的に移行するとは限りません。

load-balance:接続を振り分ける機能で、単一接続の帯域を合算するものではない

load-balanceは、複数の利用可能なノードに接続を振り分けます。mihomoの設定でstrategy: consistent-hashingを指定すると、一貫性ハッシュ方式により同じ接続先が同じノードに割り当てられやすくなります。strategy: round-robinは順番に割り当てる方式です。振り分けの対象は接続であり、1つのファイルのダウンロードを複数回線に分けて転送するわけではありません。複数ノードの公称帯域を足して、単一接続の速度として考えることはできません。

方式を選ぶときは、まず利用目的を確認しましょう。同じサイトへの接続で出口をできるだけ固定したい場合は、consistent-hashingから試してください。独立した複数のリクエストをノード間で順番に使いたい場合は、round-robinを検証できます。ログインや決済、接続元アドレスが重視されるサービスでは、出口の切り替えによって追加認証が発生することがあります。その場合は、測定間隔をむやみに短くするより、個別ノードかfallbackを使うほうが簡単です。

編集して使えるproxy-groupsの設定例

以下の例では、現在の設定のproxiesまたはプロキシプロバイダーに「香港 01」「香港 02」「日本 01」というノードがすでに登録されているものとします。貼り付ける前に、3つの名前を設定内の実際のノード名に正確に置き換えてください。名前に含まれるスペースも一致させる必要があります。例のproxy-groupsとrulesはトップレベルの項目です。特定のノードの下にインデントしないでください。同じトップレベル項目がすでにある場合は、内容を統合し、2つ目を追加しないようにします。

proxy-groups:
  - name: 自動選択
    type: url-test
    proxies:
      - 香港 01
      - 香港 02
      - 日本 01
    url: https://www.gstatic.com/generate_204
    interval: 300
    tolerance: 50

  - name: フェイルオーバー
    type: fallback
    proxies:
      - 香港 01
      - 香港 02
      - 日本 01
    url: https://www.gstatic.com/generate_204
    interval: 300

  - name: 負荷分散
    type: load-balance
    proxies:
      - 香港 01
      - 香港 02
      - 日本 01
    url: https://www.gstatic.com/generate_204
    interval: 300
    strategy: consistent-hashing

  - name: 手動選択
    type: select
    proxies:
      - 自動選択
      - フェイルオーバー
      - 負荷分散
      - 香港 01
      - DIRECT

rules:
  - MATCH,手動選択

MATCHは最終的なフォールバックルールなので、既存ルールの最後に配置します。例のrulesで元のファイルをそのまま置き換えると、既存の振り分けルールは適用されなくなります。現在の振り分け設定を維持する場合は、各ルールの接続先グループ名だけを「手動選択」に変更し、ルールの順番はそのまま残してください。「負荷分散」をラウンドロビンで動作させる場合は、利用中のコアが対応していることを確認したうえで、strategyをround-robinに変更します。

プロキシプロバイダーを使う場合の設定

ノードが設定のproxiesに直接記述されておらず、proxy-providersから提供される場合は、useを使って既存のプロバイダー名を参照できます。たとえばプロバイダーのトップレベルキーがmain-providerなら、対象のプロキシグループにuse: [main-provider]と記述します。まずプロバイダーが正常に読み込まれていることを確認し、その後グループ内にノードが表示されるかを確認してください。useを書くだけでサブスクリプションが作成されたり、URLが自動入力されたりするわけではありません。手動登録したノードも追加する場合は、使用するコアの対応構文に従い、同じグループ内にuseとproxiesを設定します。

設定を読み込んだ後の確認手順

  1. まず構文と名前を確認します。YAMLのインデントにはスペースを使います。type、proxies、url、intervalは同じグループ内に記述してください。ノードが見つからないというエラーが出たら、メンバー名を一字ずつ確認します。フィールドの重複が指摘された場合は、トップレベルのproxy-groupsやrulesを二重に貼り付けていないか確認しましょう。
  2. 次にヘルスチェックを確認します。クライアントの「プロキシ」画面で「自動選択」または「フェイルオーバー」を開き、遅延テストを実行して3つのノードの測定結果を確認します。すべて失敗する場合は、測定先にアクセスできるか、ノード自体に接続できるかを先に確認してください。すぐにinterval: 300を短い間隔に変更するのは避けましょう。
  3. 最後に通信経路を確認します。「プロキシ」画面で「手動選択」とその下位グループを選び、クライアントのプロキシ機能が有効になっていることを確認してから対象サイトにアクセスします。ルールモードを使っている場合は、接続ログでどのルールに一致したかを確認してください。グローバルモードや直接接続モードの場合、rules内のMATCHだけでは実際の接続先を判断できません。

接続先を安定して固定するならselect、測定遅延を優先するならurl-test、メインと予備の順序を決めたいならfallback、複数ノードに接続を振り分けるならload-balanceを使います。4種類のグループは同じ設定内で併用できます。ルールの振り分け先を正しく設定し、サブスクリプション更新後にノード名、測定結果、現在の選択状態を確認することが重要です。

クライアントのインストーラーを見る