設定
Chuteのほとんどの機能は設定ファイルによって制御されます。設定ファイルは手元のテキストエディター、またはChute iOS、Chute tvOS、Chute Mac(メインウィンドウの設定タブ、以前のインターフェースでは環境設定...)、Chute Androidの内蔵エディターで編集できます。Chute Dashboardには設定エディターがありません。Dashboardが編集するのは動作中のエンジンのルールであり、設定ファイルそのものではありません。
Chute iOSはiCloud Drive経由で設定ファイルを同期できますが、これはライセンスが必要な機能です。Chute Mac自体にはiCloud同期の仕組みがありません。Macでファイルを共有するとは、インポートパネルからたまたまiCloud Drive上に置かれているファイルを選ぶという意味で、そのファイルは置かれた場所のまま参照されます。
設定セクション
設定ファイルは名前付きセクションに整理されています:
| セクション | 目的 |
|---|---|
[General] |
グローバル設定(ログ、IPv6、DNS、プロキシポートなど) |
[Proxy] |
アウトバウンドプロキシサーバー定義 |
[Proxy Group] |
ポリシーグループ定義(select、url-test、fallback、load-balance、ssid、subnet) |
[Rule] |
トラフィックマッチングとルーティングルール |
[Host] |
ローカルDNSホスト-IPマッピング |
[DNS] |
DNS設定。[General]のDNSキーと[Host]形式のドメイン単位の上書きの両方を受け付けます |
[URL Rewrite] |
URL書き換えルール |
[Header Rewrite] |
HTTPヘッダー書き換えルール |
[Body Rewrite] |
HTTPボディ検索置換ルール |
[Map Local] |
モックレスポンスルール |
[MITM] |
HTTPS復号設定 |
[Script] |
JavaScriptスクリプト定義 |
[SSID Setting] |
ネットワークごとの設定: サスペンド、およびWi-FiネットワークやネットワークタイプごとのDNS上書き |
[Replica] |
トラフィック記録フィルター |
[Module] |
外部モジュールファイル |
[WireGuard <name>] |
WireGuardトンネル設定(インスタンス名が必須です。例: [WireGuard HomeServer]) |
[AmneziaWG <name>] |
AmneziaWGトンネル設定。難読化パラメータを備えたWireGuard互換(インスタンス名が必須です。例: [AmneziaWG HomeServer]) |
[Tailscale] |
グローバルTailscale設定(グローバルで一意。[Tailscale <name>]というヘッダーもこのセクションとして読み込まれます) |
[Proxy Provider] |
外部プロキシリストソース |
[Rule Provider] |
外部ルールセットソース |
[Ruleset <name>] |
インラインのルールセット。RULE-SET,<name>で参照します(ルールセットを参照) |
注意: セクション
[Panel]、[Ponte]、[MTProto]、[Keystore]、[Port Forwarding]、[Testing]、[DHCP]、[Snell Server]はSurge設定がエラーにならないように認識され(それぞれ通知を1件ログに記録します)、設定の保存時にその行はそのまま保持されますが、Chuteでは効果がありません。
DNSセクション
DNS関連の[General]キーは、トップレベルの[DNS]セクションに記述しても同等です。このセクションの行はキーごとに処理されます:
| 行 | 処理 |
|---|---|
dns-server、direct-dns-server、proxy-dns-server、doh(エイリアスdoh-server、doh-service)、dot、doq、doh3、encrypted-dns-server、allow-dns-svcb、encrypted-dns-follow-outbound-mode、hijack-dns、always-real-ip |
[General]と全く同じです。キーはそこに記述された場合と同様に保存されます |
| その他の行 | [Host]のドメイン単位の構文でパースされます。例: *.example.com = server:1.1.1.1 |
| どちらでもないキー | ログに通知を出して無視されます。行自体は保持されます |
[DNS]
doh = https://dns.google/dns-query
hijack-dns = 8.8.8.8:53
*.example.com = server:1.1.1.1
注意: ここでは両方の行形式が受け付けられるため、
[DNS]セクションではDNSサーバー設定とドメイン単位の上書きを混在させることができます。同じ設定を[General]と[DNS]の両方に記述しないでください: 例えば2つ目のdoh行は、DoH設定の重複として報告されます。注意:
fallback-dns-serverとencrypted-dns-skip-cert-verificationは最初の行にありませんが、[DNS]の下でも読み込まれます。DNS設定ではないキーはここで無視されるわけではなく、ドメイン単位の上書きとして読み取られます。そのためoptimistic-dns = falseのように[General]のキーを誤ってここへ書くと、optimistic-dns→falseというマッピングとして黙って登録されます。通知が出るのは、上書きの解析にも失敗した行だけです。DNSを参照してください。
別のファイルを取り込む
プロファイルは別のファイルを取り込めます。Surgeは#!include <path>、Shadowrocketは最初のセクションより前にinclude = <other.conf>と書きます。どちらも読み取られ、取り込まれたファイルはディレクティブのある位置にそのまま展開されるため、[Rule]の断片はそれを指定したセクションの中に収まります。
#!include Rulesets/company.list
- パスはディレクティブを書いたファイルのディレクトリを基準に解決され、
*を含められます —#!include Rulesets/*.listはルール断片のディレクトリを名前順に取り込みます。 - 取り込みは最大 8 段までネストでき、すでに取り込んだファイル(プロファイル自身を含む)は二度取り込まれないため、循環しても暴走しません。プロファイルが自分自身を取り込む指定は単に無視されます。
- 取り込みが展開されるのは、プロファイルがファイルから読み込まれた場合だけです。テキストとしてエンジンに渡された場合(設定がトンネルへ渡るときの通常の形です)、解決の基準となるディレクトリがないため、完全なものとして扱うのではなく不完全であると報告されます。ディレクティブ自体は設定を保存する際に保持されます。読み込んだとおりに書き戻され、取り込まれたファイルの内容がプロファイルに書き込まれることはありません。
コメント
#、;、//で始まる行はコメントです。この3つの記号は行内コメントも開始しますが、それはスペースかタブの直後に置かれたときだけで、引用符("…"または'…'。\は次の1文字をエスケープします)の中では決してコメントになりません。そのため、URLの://、a//bのようなパス、たまたま//や#を含む引用符なしのbase64値はそのまま残ります。コメントと空行は、設定の保存時に保持されます。
各リライトセクションと[Proxy Group]のssid / subnet行では、行内コメントの扱いが異なります:
| 場所 | # |
; |
// |
引用符 |
|---|---|---|---|---|
[URL Rewrite] |
上と同じ | 上と同じ | 上と同じ | なし: 行は空白で単語に分けられ、記号で始まる最初の単語で行が終わります |
[Header Rewrite] |
コメントにならないので、header-add X-Color #ff0000は値を保ちます |
コメントにならない | 上と同じ | "…" |
[Body Rewrite]、[Map Local] |
上と同じ | コメントにならない | 上と同じ | "…"。jqの行では'…'も |
[Proxy Group]のssid / subnet行 |
上と同じ | 上と同じ | 上と同じ | "…"のみ: アポストロフィはBob's iPhoneのようなネットワーク名の一部です |
ディレクティブの行 — #!include、#!MANAGED-CONFIG、#!IOS-ONLYなど — は、これらの規則より先にディレクティブとして読まれます。ルールセット、ドメインセット、プロキシプロバイダーがダウンロードするファイルは設定セクションではなく、そこでコメントにできるのは行全体だけです。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。