ルールセット
URL、設定されたルールプロバイダー、または設定ファイル内のインラインセクションからのルールバンドルを使用できます。Chuteは2つの内部ルールセットも提供しています。
内部ルールセット
SYSTEM
RULE-SET,SYSTEM,DIRECT
macOSおよびiOS自体から送信されるほとんどのリクエストのルールが含まれています。App Store、iTunes、その他のコンテンツサービスから送信されるリクエストは含まれていません。
USER-AGENT,*com.apple.mobileme.fmip1
USER-AGENT,*WeatherFoundation*
USER-AGENT,%E5%9C%B0%E5%9B%BE*
USER-AGENT,%E8%AE%BE%E7%BD%AE*
USER-AGENT,com.apple.geod*
USER-AGENT,com.apple.Maps
USER-AGENT,FindMyFriends*
USER-AGENT,FindMyiPhone*
USER-AGENT,FMDClient*
USER-AGENT,FMFD*
USER-AGENT,fmflocatord*
USER-AGENT,geod*
USER-AGENT,locationd*
USER-AGENT,Maps*
DOMAIN,api.smoot.apple.com
DOMAIN,captive.apple.com
DOMAIN,configuration.apple.com
DOMAIN,guzzoni.apple.com
DOMAIN,smp-device-content.apple.com
DOMAIN,xp.apple.com
DOMAIN-SUFFIX,ess.apple.com
DOMAIN-SUFFIX,push-apple.com.akadns.net
DOMAIN-SUFFIX,push.apple.com
DOMAIN,aod.itunes.apple.com
DOMAIN,mesu.apple.com
DOMAIN,api.smoot.apple.cn
DOMAIN,gs-loc.apple.com
DOMAIN,mvod.itunes.apple.com
DOMAIN,streamingaudio.itunes.apple.com
DOMAIN-SUFFIX,lcdn-locator.apple.com
DOMAIN-SUFFIX,lcdn-registration.apple.com
DOMAIN-SUFFIX,ls.apple.com
PROCESS-NAME,trustd
これらのルールはChuteのアップデートで更新される場合があります。最新のサブルールを取得するにはソフトウェア内の説明を参照してください。
LAN
RULE-SET,LAN,DIRECT
LAN IPアドレスと.localサフィックスのルールが含まれています。このルールセットはDNSルックアップをトリガーすることに注意してください。
DOMAIN-SUFFIX,local
IP-CIDR,192.168.0.0/16
IP-CIDR,10.0.0.0/8
IP-CIDR,172.16.0.0/12
IP-CIDR,127.0.0.0/8
IP-CIDR,100.64.0.0/10
IP-CIDR,255.0.0.0/8
IP-CIDR,fc00::/7
IP-CIDR,::1/128
IP-CIDR,fe80::/10
外部ルールセット
http(s) URLからのルールセット。ルールセットファイルはテキストファイルである必要があります。各行にはポリシーなしのルール宣言が含まれます。
注意: ルールセットファイルはリーフルールタイプのみをサポートします。論理ルール(AND/OR/NOT)、SCRIPT、DOMAIN-SETの行は破棄されます。
RULE-SET,<url>で取得したファイル内のRULE-SET行は無効です: パーサーが残すのは組み込みのSYSTEMとLANの値だけで、しかもそれらすら展開されないため、その行が何かにマッチすることはありません。入れ子の参照が機能するのは、[Rule Provider]のペイロードとインラインの[Ruleset]セクションです。CIDRのみの行(例:1.2.4.0/24)はIP-CIDRルールとして受け付けられます。
RULE-SET,https://example.com/my-rules.txt,Proxy
RULE-SET,https://example.com/my-rules.txt,Proxy,update-interval=86400
オプションのupdate-intervalパラメータは、ダウンロード済みのコピーに許される経過時間(秒)です。タイマーはありません: コピーがそれより古くなった後の最初のマッチで、バックグラウンドで再ダウンロードされます。設定の読み込み時には、それより新しいキャッシュはダウンロードせずにそのまま使われ、それより古いキャッシュは使われないため、そのセットはダウンロードが済むまでマッチしません。update-intervalがない場合、キャッシュはそのまま保持され、セットはキャッシュがないときにだけダウンロードされます。RULE-SETの行に書いたno-resolveは、セット内のすべてのIPベースのルールに適用されます。
ルールセットファイルの例:
DOMAIN,exampleA.com
DOMAIN,exampleB.com
ローカルファイルを使用するには、[Rule Provider]セクションでpath=パラメータを持つエントリを定義し、名前で参照します:
[Rule Provider]
my-rules = type=file, path=/path/to/my-rules.txt, format=native
[Rule]
RULE-SET,my-rules,Proxy
ルールプロバイダーのパラメータ: type(httpまたはfile。httpはurl=が必要)、behavior(ルール宣言にはclassical、ドメインセットにはdomain、CIDRのみのリストにはipcidr — これはClash/mihomoのプロバイダーにも使用でき、そのCIDRのみのペイロードも受け付けられます。デフォルトはclassical)、format(Chuteルール行にはnativeまたはsurge、Clash/mihomoのrule-provider YAMLペイロードにはmihomo-yaml、source(JSON)形式のsing-boxルールセットにはsing-box-source、sing-box、sourceのいずれか。デフォルトはmihomo-yaml)、interval(秒数、デフォルトは86400)。正のintervalでは、設定が読み込まれるたびにペイロードが再ダウンロードされ、それより古いキャッシュは使われません。0はキャッシュがないときにだけダウンロードします。負の値では — RULE-SETの行のupdate-intervalがあっても — 一切ダウンロードしないため、キャッシュがない限りプロバイダーは無効のままです。Chuteの動作中にプロバイダーが更新されるのは、そのプロバイダーを名前で参照しupdate-intervalを付けたRULE-SETの行を通してだけです: キャッシュがそれより古くなった後の最初のマッチで、プロバイダー自身のソースから再取得されます。[Rule Provider]の行にはルールを記述するキーがないため、そこでtype=inlineとすると空のプロバイダーになります。インラインのセットは[Ruleset <name>]セクションとして書いてください。
policy=<name>は、そのポリシーまたはグループ経由でペイロードをダウンロードします(mihomoのproxy:)。例: my-rules = type=http, url=https://example.com/rules.yaml, policy=Proxy。グループの場合はダウンロード開始時点の選択を使います。指定しないかpolicy=DIRECTなら直接取得します。定義されていない名前ならダウンロードを拒否し、直接取得はしません。
HTTPコントロールAPIのGET /api/rules/providersは、すべての[Rule Provider]エントリと[Ruleset]セクションについて、読み込まれたかどうか、読み込めなかった理由、変換時の警告を報告します。そのrule_countは[Ruleset]セクションの行数を数えるもので、ダウンロードするプロバイダーやファイルのプロバイダーでは0のままです。RULE-SET,<url>とDOMAIN-SET,<url>は一覧に含まれず、それらのダウンロードの失敗はログにしか表れません。
iPhone、Apple TV、Androidでは、ルールプロバイダーのペイロード — ダウンロードしたものもファイルから読み込んだものも — にサイズ上限があります。これらのプラットフォームではトンネルに使えるメモリがわずかだからです: sing-box-sourceは400 KB、それ以外の形式は1 MB。上限を超えるペイロードは読み込まれず、理由はプロバイダーのステータスに表示されます。RULE-SET,<url>とDOMAIN-SET,<url>はメモリ上で変換されずに読み込まれるため、上限はありません。デスクトップには上限がないので、大きな公開セット(geosite/cnなど)をプロバイダーとして読み込めるのはデスクトップだけです。これらのプラットフォームでは、ルールセットのインデックスが同時に開くデータベース接続は最大 24 本です(デスクトップでは 128 本)。
mihomo-yamlのペイロードが解析できず、単純なルール行のリストに見える場合は、代わりにnativeとして読み込まれ、通知がログに記録されます。classicalのmihomoペイロードの行はポリシーを指定しないため、値の後に続くものはパラメータとして読み込まれます: no-resolveは保持され、それ以外のパラメータ — たとえばmihomoのsrc — は破棄されます。論理ルールと…-REGEXルールは、行の残りをそのまま値として保持します。
JSONオブジェクトのペイロードはまずsing-boxルールセットとして読み込みを試みるため、デフォルトの形式で宣言されたsing-boxルールセットも読み込まれます。sing-boxルールセットでは、マッチ条件がすべて同じ種類のルールは値ごとに1行になります。種類は次のとおりです: 宛先(domain、domain_suffix、domain_keyword、domain_regex、ip_cidr、geoip、およびno-resolve付きのプライベートアドレス範囲になるip_is_private)、宛先ポート(port、port_range)、送信元アドレス(source_ip_cidr、source_ip_is_private)、送信元ポート(source_port、source_port_range)、そしてprotocol、network、process_name、process_pathはそれぞれが1つの種類です。Chuteが実行するのはルールモードだけなのでclash_mode: ruleは無視され、それ以外のclash_modeはそのルールを破棄します。種類を組み合わせたルール(ドメインとポートなど)、invertルール、logicalルールは1行で表せないため、スキップされてルールセットの警告に一覧表示されます。コンパイル済みバイナリ形式は読み込めません。sing-boxの.srsプロバイダーは — format=srs、format=binary、または .srs で終わる場所から — そうと判定され、sing-boxのsource(.json)形式を指すよう促すステータスとともに無効のままになります。mihomoの.mrsは判定されません: そのペイロードが単にテキストとしてデコードできないため、ルールセットは汎用のダウンロード失敗ステータスのまま無効になります。macOSでは、配布元がバイナリと並べてsource(.json)形式のペイロードも公開していれば、インポーターがバイナリのルールセットの参照先をそちらに書き換えます。iOS、Apple TV、Androidでは書き換えません。
RULE-SETとDOMAIN-SETは、AND/OR/NOT論理ルール内のサブルールとして使用できます。
NOT,((RULE-SET,cn_ip)),Proxyは有効で、ネストされたセットは単独で書いた場合と同じペイロードフィルタで照合されます。
インラインルールセット
[Ruleset <name>]セクションを使うと、ルールセットを設定ファイル自体に書けます(Surgeの構文)。各行はルールセットファイルと同じくポリシーなしのルール宣言で、ルールはセクション名で参照します:
[Ruleset Streaming]
DOMAIN-SUFFIX,netflix.com
IP-CIDR,198.51.100.0/24,no-resolve
[Rule]
RULE-SET,Streaming,Proxy
このセクションはtype=inline、format=nativeの[Rule Provider]エントリと同じように動作し、保存時にはセクションとして書き戻されます。同じ名前のルールセットが2つあると設定エラーになります。
インラインセクションには(ルールプロバイダーのペイロードと同様に)RULE-SET,SYSTEM、RULE-SET,LAN、RULE-SET,<別のインラインセクション>を含めることができます。これらはルールの読み込み時に最大8階層まで展開されます。ループになる参照や、fileまたはhttpのルールセット、ドメインセット、DOMAIN-SETへの参照は、警告とともに破棄されます。
ドメインセット
ドメインセットは外部ルールセットに似ていますが、特にドメイン名用で、よりコンパクトなファイル形式を使用します。
DOMAIN-SET,https://example.com/domains.txt,DIRECT
DOMAIN-SET,https://example.com/domains.txt,DIRECT,update-interval=86400
タイプの後の最初のフィールドはhttp(s) URLである必要があります。ドメインセットファイルには、1行に1つのドメインのみを記述します(ルール宣言ではありません):
# exact domain
example.com
# the domain and all of its subdomains
.example.org
+.example.net
#または//で始まる行はコメントです。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。