ポリシーグループ

ポリシーグループは複数のポリシーを含むことができます。プロキシサーバー、別のポリシーグループ、または組み込みポリシー(DIRECT、REJECTとその派生、PROXY)を含めることができます。

グループタイプは7つあります: select、url-test、fallback、load-balance、random、relay、ssid(subnetとも書けます)。[Proxy Group]セクションでポリシーグループを宣言します。smartタイプも受け付けられ、url-testとして扱われます。それ以外のタイプのグループ — Surgeのexternal、あるいはChuteが知らないタイプ — は拒否されるのではなく、メンバーを保持したままselectグループとして動作し、ログに通知が記録されます。

手動選択グループ

ユーザーインターフェース上で使用するポリシーを選択します。

SelectGroup = select, ProxyHTTP, ProxyHTTPS, DIRECT, REJECT

オプションパラメータ: default=(最初に選択されるメンバー — その名前、または0から数えたインデックス。Shadowrocketのselect=とpolicy-select-name=も同じ意味です)、policy-provider:Name(プロキシプロバイダーからメンバーをインポート)、filter= / exclude-filter=(プロバイダー提供のメンバーに適用される正規表現)、およびHIDDEN=true。ssid以外のすべてのグループタイプで、サブスクリプションとメンバーのパラメータも使えます。

iOS版では、Todayウィジェットで非表示でない最初の3つのselectグループのポリシーを切り替えられます。いくつ表示するかは、アプリのTodayウィジェットでグループを選択で設定します。macOS版では、メニューバーメニューでポリシーを切り替えることができます。


自動URLテストグループ

URLへのレイテンシをベンチマークすることで、使用するポリシーを自動的に選択します。

AutoTestGroup = url-test, ProxySOCKS5, ProxySOCKS5TLS, url = http://www.google.com/generate_204

パラメータ

url: オプション

ChuteはURLに対するプレーンなHTTP GETを、各ポリシーを経由して、URLのホストのポート80に送信します: URL中のhttps://スキームやポートは無視されるため、ポート80で提供されるhttp://のURLを使ってください。テストはレスポンスデータを受信するかどうかのみを重視し、レスポンスがHTTPエラーであっても構いません。独自のtest-url=を持つメンバーは、代わりにそのURLでプローブされます。省略した場合、デフォルトのプローブURL http://www.gstatic.com/generate_204 が使用されます。[General]のproxy-test-urlを設定すると、urlを省略したすべてのグループでこのデフォルトの代わりに使われます。

interval: オプション、秒(デフォルト: 600秒)。

ポリシーを再テストする頻度です。グローバルな1秒タイマーが、ポリシーグループが使用されているかどうかに関わらずinterval秒ごとに自動再テストを実行します。例外は2つあります: lazy=trueのグループは最初に使用されるまでテストを開始しません。また、グループがidle-timeoutより長くアイドル状態のままの場合、テストは一時停止します。0は省略した場合と同じです。

tolerance: オプション、ミリ秒(デフォルト: 100ミリ秒)。

各ラウンドでは、すべてのメンバーを同時にテストします。最初に応答したメンバーが使用中のものでない場合、Chuteは使用中のメンバーをさらに最大toleranceミリ秒 — ただしラウンドのtimeoutを超えない範囲で — 待ちます: その間に応答すれば使用中のメンバーがそのまま使われ続け、応答しなければグループは最初に応答したメンバーに切り替わります。いずれかのラウンドがメンバーを選ぶまでは、最初に応答したメンバーがそのまま採用されます。どのメンバーも応答しなかったラウンドでは何も変わりません。0は省略した場合と同じです。

timeout: オプション、秒(デフォルト: 5秒)。

タイムアウト内に完了しない場合、ポリシーを破棄します。timeoutを省略するか0にした場合、[General]のtest-timeoutが設定されていればそれが使われます。

lazy: オプション(true/false、デフォルト: false)。

有効にすると、ポリシーは起動時ではなく最初の使用時にのみテストされます。

max-failed-times: オプション(デフォルト: 0、無効)。

ポリシーが不健全と見なされるまでの連続テスト失敗回数。このオプションが有効なのはロードバランスグループのみで、そこでは不健全なポリシーが選択から除外されます。url-testおよびfallbackグループでは失敗回数は記録されますが、選択には影響しません。未設定(0)の場合、テストの失敗によってポリシーが除外されることはありません。

expected-status: オプション(デフォルト: 空)。

expected-status=204

期待したステータスの応答だけが成功と見なされます。単一のコード(204)、範囲(200-299)、またはそれらを/でつないだリスト(200/204/300-399)を指定できます。ほかのステータスを返したポリシーはそのラウンドから外れ、失敗として数えられます。これらのどれにも当たらない値は警告を出して無視され、その場合はどの応答も受け付けます。url-testグループで有効です。

idle-timeout: オプション、秒。

idle-timeout = 120

ポリシーグループがこの時間より長く使用されなかった場合(このグループからポリシーを選んだ新しい接続がない場合)、定期的なURLテストが一時停止します。グループが再び使用されるとテストが再開されます。このオプションによって接続が閉じられることはありません。

その他のサポート: HIDDEN=true、filter=、exclude-filter=、policy-provider:Name。


フォールバックグループ

優先度によって利用可能なポリシーを選択します。可用性は自動URLテストグループと同様に、URLにアクセスすることでテストされます。前方に定義されたポリシーが高い優先度を持ちます。各ラウンドではすべてのメンバーを同時にテストし、グループは直近のラウンドで応答したメンバーのうち、記述順で最初のものを使います。まだどのラウンドも終わっていない間と、どのメンバーも応答しなかったラウンドの後は、最初のメンバーを使います。1ラウンドの結果は、そのラウンドが終わった時点で反映されます — 全メンバーが応答すればすぐに、そうでなければtimeoutが切れたときです — そのため、ラウンドの途中でグループのメンバーが変わることはありません。切り替えが起きるのは、ラウンドの結果で使用中のメンバーが変わったときだけです。そのときポリシーグループの主ポリシーが変更されましたの通知には切り替え前後に実際に使われているメンバーが示され、interrupt-exist-connectionsは切り替え前のメンバーの接続を閉じます。

FallbackGroup = fallback, ProxySOCKS5, ProxySOCKS5TLS, url = http://www.google.com/generate_204

パラメータ

url: オプション

テストするURLを指定します。url-testグループと同様に、プローブはURLのホストのポート80へのプレーンなHTTP GETで、独自のtest-url=を持つメンバーは代わりにそのURLでプローブされます。省略した場合、デフォルトのプローブURL http://www.gstatic.com/generate_204 が使用されます。[General]のproxy-test-urlを設定すると、urlを省略したすべてのグループでこのデフォルトの代わりに使われます。

interval: オプション、秒(デフォルト: 600秒)。

ポリシーを再テストする頻度です。セマンティクスは自動URLテストグループと同じですが、idle-timeoutは — expected-statusと同様に — url-test専用です: fallbackグループにアイドル時の停止はなく、間隔どおりにテストを続けます。

timeout: オプション、秒(デフォルト: 5秒)。

タイムアウトまでに完了しない場合、ポリシーを破棄します。timeoutを省略するか0にした場合、[General]のtest-timeoutが設定されていればそれが使われます。

lazy / max-failed-times: オプション。

自動URLテストグループと同じです。その他のサポート: HIDDEN=true、filter=、exclude-filter=、policy-provider:Name。


SSIDグループ

現在のネットワーク(Wi-Fiの名前、アクセスポイント、インターフェースの種類、ルーター)に応じてポリシーを選択します。タイプはSurgeの現在の名称であるsubnetとも書けます。

SSIDGroup = subnet, default = ProxyHTTP, cellular = ProxyHTTP, "Home WiFi" = DIRECT, SSID:Office* = ProxySOCKS5, TYPE:WIRED = DIRECT, ROUTER:192.168.1.1 = DIRECT

パラメータ

default: 必須。

マッチするSSIDオプションが見つからなかった場合のポリシー。

cellular: オプション。

セルラーネットワーク下でのポリシー。指定されない場合、デフォルトポリシーが使用されます。正確には、デバイスがWi-Fiに接続しておらず、どのメンバーにも一致しない場合に使われます。

defaultは必須です。メンバーは<セレクター> = <ポリシー>の組で、順番に確認され、最初に一致したものが使われます。セレクターはネットワーク名(空白やコロンを含む場合は引用符で囲む)、SSID:<名前>、BSSID:<アドレス>、TYPE:WIFI / TYPE:CELLULAR / TYPE:WIRED、ROUTER:<ゲートウェイアドレス>のいずれかで、名前には*と?のワイルドカードを使えます。MCCMNC:は受け付けますが一致しません。Apple TVでは、このグループは常にdefaultを使います。


ロードバランスグループ

ロードバランシング戦略を使用して、複数のプロキシにリクエストを分散します。

LBGroup = load-balance, ProxySOCKS5, ProxyHTTPS, url = http://www.google.com/generate_204, strategy = round-robin

パラメータ

strategy: オプション(デフォルト: round-robin)

ロードバランシング戦略を指定します:

戦略 説明
round-robin 全てのプロキシに順番に均等にリクエストを分散
consistent-hashing 同じホスト名を一貫して同じプロキシにルーティング
sticky-sessions 最後に選択したプロキシを全ての接続で再利用し続ける。固定された選択はグローバル(クライアントごとではない)で、選択時から600秒後に失効

url: オプション

url = http://www.google.com/generate_204

Chuteはプロキシの可用性をテストするために、URLのホストのポート80にプレーンなHTTP GETを送信します。省略した場合、デフォルトのプローブURL http://www.gstatic.com/generate_204 が使用されます。テスト結果が選択に影響するのはmax-failed-timesが0より大きい場合のみで、デフォルトの0では不健全なプロキシは除外されません。[General]のproxy-test-urlを設定すると、urlを省略したすべてのグループでこのデフォルトの代わりに使われます。

interval: オプション、秒(デフォルト: 600秒)。

interval = 300

プロキシの可用性を再テストする頻度。0は省略した場合と同じです。

timeout: オプション、秒(デフォルト: 5秒)。

timeout = 3

可用性テストリクエストのタイムアウト。timeoutを省略するか0にした場合、[General]のtest-timeoutが設定されていればそれが使われます。

lazy: オプション(true/false、デフォルト: false)。

自動URLテストグループと同じです。グループが最初に使用されるまでテストは開始されません。

max-failed-times: オプション(デフォルト: 0、無効)。

max-failed-times = 3

プロキシが不健全とマークされ、ロードバランシングから除外されるまでの連続テスト失敗回数。デフォルトの0では、テスト結果によってプロキシが除外されることはありません。全てのプロキシが不健全な場合は、再び全てのプロキシが使用されます。

HIDDEN: オプション(true/false、デフォルト: false)。

HIDDEN = true

有効にすると、各アプリはそのポリシーグループを一覧に出しません: Chute Macのメニューバーメニューとメインウィンドウのプロキシタブ、Chute iOSとそのTodayウィジェット、Chute tvOS、Chute Android、Chute Dashboard、Webコンソールのいずれにも表示されません。ルールや他のグループからは通常どおり使われます。現在選択されている非表示のグループ — たとえばグローバルモードが使っているもの — は、何が使われているか分かるように、引き続き一覧に出てチェックが付きます。HTTPコントロールAPIがグローバルをselectグループに向けたときは、各アプリのグローバル一覧(通常はselectグループを含みません)にもそのグループが出て、チェックが付きます。HTTPコントロールAPIは引き続きすべてのグループを返し、各グループに"hidden": trueまたはfalseが付きます。

キーは慣例として大文字で記述しますが、照合は大文字と小文字を区別しないためhidden=trueでも動作します。select、url-test、fallback、ssidグループでも利用可能です。

注意: interrupt-exist-connectionsパラメータは現在、グローバルな[General]設定になっています。その他オプションを参照してください。


ランダムグループ

Shadowrocketのrandomグループです。新しい接続ごとにメンバーを1つランダムに選びます。

RandomGroup = random, ProxyA, ProxyB, ProxyC

各接続は、それまでの接続とは無関係に、メンバーの中から等しい確率で選びます。UDPはUDPを中継できるメンバーの中だけから選び、そのようなメンバーがない場合、グループはUDPを中継せずudp-policy-not-supported-behaviourに従います。メンバーはpolicy-provider:参照も含めてselectグループと同じように書き、各メンバー自身のunderlying-proxyは保持されます。切り替える選択はありません: WebコンソールとHTTPコントロールAPIはメンバーを一覧表示しますが選択の変更は拒否し、default=は効果を持ちません。HIDDEN=trueはほかのグループと同じように非表示にします。


リレーグループ

メンバーを書かれた順に一本の経路へつなぎます。最初のメンバーには直接(またはそのメンバー自身のunderlying-proxy経由で)接続し、以降の各メンバーにはそれより前のメンバーを経由して到達し、最後のメンバーが宛先へ接続します。Clashとmihomoと同じ順序です。

RelayGroup = relay, Entry, Exit

RelayGroupを通る接続は、デバイスからEntry、EntryからExit、Exitから宛先へと進みます。宛先から見た接続元はExitです。

リレーグループには少なくとも2つのメンバーが必要で、selectグループと同じ書き方をします。メンバーはポリシーでも別のグループでも構いません。最初のメンバーはどのプロトコルでも使えます。以降のメンバーはそれより前のメンバーを経由して自分のサーバーへ接続するため、チェーンに対応したものでなければなりません — underlying-proxyを参照してください。メンバー(またはメンバーのグループが現在選んでいるポリシー)がチェーンに対応していない場合、接続は拒否されてログに記録され、直接送信されることはありません。リレー内では、以降のメンバー自身のunderlying-proxyは無視されます。それより前のメンバーがその経路だからです。メンバーの中にあるリレーグループは、その位置で自身のメンバーに置き換わり、経路全体で最大 8 ホップまでです。メンバーのグループが現在選んでいるのが別のリレーグループの場合、そのホップを接続時に組み込むことはできないため、接続は拒否されてログに記録されます。最初より後のメンバーにはそれより前のメンバーを経由しないと到達できず、Chuteがそれらに直接pingすることはありません。WireGuard、AmneziaWG、SSHは自身の上流経由の 1 本の接続を保つため、最初のメンバーにはなれますが、2 番目以降にはなれません。最後のメンバーのUDPがそれより前のメンバーを通れる場合、リレーグループはUDPも運びます。規則はunderlying-proxyと同じで、VMess、VLESS、Trojan、AnyTLSの出口はどのメンバーの上でも、Shadowsocks、SOCKS5、Hysteria2、TUIC、MASQUEの出口は前のメンバーがUDPを運ぶときだけです。そうでなければ、送られたUDPはudp-policy-not-supported-behaviourに従います。ヘルスチェックはなく、選択する対象もありません。


サブスクリプションとメンバーのパラメータ

以下のパラメータはselect、url-test、fallback、load-balanceグループで使えます(underlying-proxyはSSIDグループを除くすべてのグループで使えます):

[Proxy Group]
Airport = select, policy-path=https://example.com/nodes.list, update-interval=86400, policy-regex-filter="^(HK|JP) \d{1,2}$"
Everything = url-test, include-all-proxies=true
Streaming = fallback, HK-Node, include-other-group=Airport, policy-regex-filter="^HK"
  • policy-path=<URL>(Surge)はサブスクリプションからグループのメンバーを取り込みます。Chuteはこれをformat=autoの非表示のプロキシプロバイダーに変換し、そのintervalにはグループのupdate-interval(デフォルト86400)が使われます。policy-regex-filter=は名前がマッチしたノードだけを残します。非表示のプロバイダーはどのプロバイダー一覧にも表示されず、ファイルにも書き込まれません。グループの行は記述したとおりに保存されます。
  • include-all-proxies=trueは[Proxy]セクションのすべてのポリシーを加え、include-other-group=<グループ>(複数回指定可)は別のグループのメンバーを再帰的に加えます。どちらも設定全体を読み込んだ後に展開されます。循環は打ち切られ、未知のグループ名は通知が出るだけです。保存されるのは、自分で列挙したメンバーです。include-other-groupが持ち込むのは別のグループのメンバーとプロバイダーで、そのフィルターは持ち込みません: プロバイダーが提供するノードは、取り込む側のグループ自身のfilter=、policy-regex-filter=、exclude-type=で絞り込まれます。上の例でStreamingがフィルターを指定しているのはそのためで、指定しなければStreamingはAirportのサブスクリプションのすべてのノードを取り込みます。
  • exclude-type=Shadowsocks|Vmessは、プロバイダーが提供するメンバーからプロトコルをまるごと除外します。よくある理由は、クライアントがそれらの上でUDPを運べないことです。名前は|区切りで、大文字小文字を区別せず、別名でも照合されるためssとShadowsocksは同じ種類を指します。自分で列挙したメンバーには影響せず、設定を保存する際に書き戻されます。
  • underlying-proxy=<ポリシー>(Surge Mac 6.9 / iOS 5.22)は、グループのプロキシメンバーを1つの上流経由で送ります。直接列挙したプロキシポリシーと、policy-path、include-all-proxies、include-other-groupで取り込まれたプロキシポリシーはすべて、派生ポリシー「メンバー名 (via 上流)」としてグループに現れ、メンバー自身のunderlying-proxyの代わりにその上流を経由して接続します。元のポリシーは、それ以外の場所では従来どおり使われます。ポリシーグループであるメンバーは影響を受けず(独自のunderlying-proxyを指定できます)、DIRECTとREJECTはそのまま残ります。グループが自分自身を経由してチェーンされている場合、そのグループを通る接続は拒否されてログに記録されます。
  • external-policy-modifier="キー=値,…"(Surge)は、policy-pathで取り込んだすべてのポリシーについてこれらのパラメータを上書きします。例: external-policy-modifier="test-url=http://apple.com/,tfo=true"。サブスクリプションから来たポリシーにしか作用しません。グループ全体を上流経由で送るには、上のunderlying-proxyを使ってください。
  • パラメータは引用符の外にあるカンマで区切られるため、上の例のようにカンマを含む正規表現は引用符で囲む必要があります。
  • evaluate-before-use、no-alert、icon-url、persistentなど、Chuteが認識しないパラメータは保持されて書き戻されますが、効果はありません。

プロキシプロバイダー

プロキシプロバイダーを使用すると、外部ソース(ファイルまたはURL)からプロキシリストをインポートできます。[Proxy Provider]セクションで定義します:

[Proxy Provider]
MyProvider = url=https://example.com/proxies.yaml, interval=3600

パラメータ

パラメータ 必須 説明
type いいえ http(デフォルト)またはfile。ルールセットには[Ruleset <名前>]セクションによるinline形式もありますが、プロキシプロバイダーにインライン形式はなく、ここにtype=inlineと書いてもメンバーは 1 つも追加されません
url type=httpでははい プロキシリストを取得するURL
path type=fileでははい プロキシリストのローカルファイルパス
interval いいえ 再取得の基準となるキャッシュの経過時間(秒)(デフォルト: 86400)。ポリシーが読み込まれるたび — エンジンの起動時と設定の再読み込み時 — に、これより古いキャッシュはバックグラウンドで再取得されます。エンジンの動作中には何も更新されません。0はキャッシュを再取得しませんが、キャッシュが無ければ初回の取得は行われます。負の値はまったく取得されず、直近の有効なキャッシュが無い限りプロバイダーは非アクティブのままです
format いいえ ペイロード形式: nativeまたはsurgeは[Proxy]形式の行のリストを読み込みます。autoまたは未指定の場合は内容から判断します。mihomo-yamlはYAMLドキュメントを読み込み、ペイロードが明らかに行のリストであればそちらとして読み込みます
filter いいえ マッチするプロキシ名のみを含めるフィルタ正規表現
exclude-filter いいえ マッチするプロキシ名を除外するフィルタ正規表現
underlying-proxy いいえ プロバイダーのすべてのノードが、ノード自身の上流の代わりにこのポリシーまたはグループを経由して接続します(mihomoのoverride: dialer-proxy)。underlying-proxyを参照
policy いいえ リストのダウンロードに使うポリシーまたはグループ(mihomoのproxy:)。グループの場合はダウンロード開始時点の選択を使います。指定しないかDIRECTなら直接取得し、定義されていない名前ならダウンロードを拒否します(直接取得はしません)

YAMLのペイロードはproxies:(またはpayload:)リストを持つmihomoスタイルのドキュメントです。行のリストのペイロードは、Name = trojan, example.com, 443, password=…のように1行に1つの[Proxy]形式のポリシーを書きます。

プロキシプロバイダーはpolicy-provider:プレフィックスを付けてポリシーグループから参照されます:

[Proxy Group]
MyGroup = select, policy-provider:MyProvider
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。

results matching ""

    No results matching ""