プロキシサーバー
プロキシサーバーは、リクエストを上流のプロキシへ転送します。ChuteはHTTP/HTTPS/SOCKS5/SOCKS5-TLS/SS/SSR/Trojan/VMess/VLESS/AnyTLS/TUIC/Hysteria2/WireGuard/AmneziaWG/ShadowTLS/MASQUE/SSHプロキシプロトコルをサポートしています。
[Proxy]セクションでプロキシサーバーを宣言します。異なるルールに対して複数のプロキシサーバーを作成できます。
例:
[Proxy]
ProxyHTTP = http, 1.2.3.4, 443, username, password
ProxyHTTPS = https, 1.2.3.4, 443, username, password, sni=example.com
ProxySOCKS5 = socks5, 1.2.3.4, 443, username, password
ProxySOCKS5TLS = socks5-tls, 1.2.3.4, 443, username, password, sni=example.com
SS = ss, 1.2.3.4, 443, method, password, obfs=http
SSR = ssr, 1.2.3.4, 443, method, password, protocol=auth_chain_f, protocol_param=user:pass, obfs=http_post, obfs_param=example.com
Trojan = trojan, 1.2.3.4, 443, password=password, tls=true, sni=example.com, skip-cert-verify=false, ws=true
VMess = vmess, 1.2.3.4, 443, uuid=uuid, sni=example.com, tls=true, ws=true
VLESS = vless, 1.2.3.4, 443, uuid=uuid, sni=example.com, xtls=true
AnyTLS = anytls, 1.2.3.4, 443, password, sni=example.com
TUIC = tuic, 1.2.3.4, 443, uuid=uuid, password=password, sni=example.com
Hysteria2 = hysteria2, 1.2.3.4, 443, auth=password, sni=example.com, up=10, down=100
WireGuard = wireguard, private-key=base64key, peer-public-key=base64key, section-name=wg0, self-ip=10.0.0.2
AmneziaWG = amneziawg, section-name=awg0
ShadowTLS = shadowtls, 1.2.3.4, 443, password=password, sni=example.com, skip-cert-verify=false, fingerprint=chrome
ProxyMASQUE = masque, 1.2.3.4, 443, token=auth-token, mode=connect-udp, sni=example.com, alpn=h3, skip-cert-verify=false
SSH = ssh, 1.2.3.4, 22, root, password=pw
SCHEME = scheme, ssr://....
注意: Trojanポリシーには明示的な
tls=trueが必要です — TLSは暗黙に有効化されません。これが無い場合(かつ、常にTLS上で動作するgrpc=trueも無い場合)、ポリシーは平文で接続し、設定の読み込み時にその旨がログに出ます:Trojan policy <name> has no tls=true; it connects without TLS。Clash/mihomoプロファイルをインポートすると、すべてのTrojanノードにtls=trueが書き込まれます。注意:
schemeには次のいずれかの種類の共有リンクを指定します:ss://、ssr://、anytls://、tuic://、hysteria2://、shadowtls://。それ以外の種類のリンクを指定すると、その行は設定エラーになります。
パラメータ
| タイプ | ユーザー名 | パスワード | メソッド | TLS | XTLS | WebSocket | QUIC |
|---|---|---|---|---|---|---|---|
| HTTP | √ | √ | |||||
| HTTPS | √ | √ | TLS | ||||
| Socks | √ | √ | |||||
| SOCKS5-TLS | √ | √ | TLS | ||||
| Shadowsocks | √ | メソッド、OBFS | TLS、フィンガープリント、ECH | WS | |||
| ShadowsocksR | √ | メソッド、プロトコル、OBFS | TLS、フィンガープリント、ECH | WS | |||
| Trojan | √ | TLS、フィンガープリント、ECH | WS、gRPC、XHTTP | ||||
| VMess | uuid | TLS、フィンガープリント、ECH | WS、gRPC、XHTTP | ||||
| VLESS | uuid | TLS、フィンガープリント、ECH | XTLS | WS、gRPC、XHTTP | |||
| AnyTLS | √ | TLS | |||||
| TUIC | uuid | √ | TLS | √ | |||
| Hysteria2 | auth | TLS | √ | ||||
| WireGuard | private-key | ネイティブWireGuard | |||||
| AmneziaWG | private-key | ネイティブWireGuard | |||||
| ShadowTLS | √ | TLS、フィンガープリント | |||||
| MASQUE | token | TLS、モード、多重化 | √ | ||||
| SSH | √ | 認証 | |
TLSを使うプロキシのパラメータ
tls: オプション。
tls=true
TLSトランスポートを有効にします。
skip-cert-verify: オプション
skip-cert-verify=true
このオプションが有効な場合、Chuteはサーバーの証明書を検証しません。true、1、yesのいずれでも有効になるため、insecure=1と書かれた共有リンクも機能します。Shadowrocketが socks5-tls 行で使う表記 skip-common-name-verify=true も同じオプションとして読み込まれます。
sni(デフォルト: hostname)
sni=exmaple.com
TLSハンドシェイク中にServer Name Indication(SNI)をカスタマイズできます。デフォルトでは、Chuteはほとんどのブラウザと同様にホスト名でSNIを送信します。
fingerprint: オプション。
fingerprint=chrome
システムデフォルトではなくブラウザのTLS ClientHelloを送出し、ハンドシェイクがプロキシ
クライアントのものとして目立たないようにします。指定できる値は chrome、
firefox、safari、ios に加えて edge、360、qq、android、random で、
後者はいずれもChromeとして扱われます。mihomo、sing-box、Xrayが使う名前も受け付け、
この4つのプリセットに対応付けます: たとえばrandomized、chrome_pq、hellochrome_131は
Chrome、hellofirefox_120はFirefox、hellosafari_16_0はSafari、helloios_14はiOSとして
扱われます。Xrayのhellogolangには対応するプリセットがありません。
TLS上のTrojan、VMess、VLESS(WebSocketおよびgRPCトランスポートを含む)と、
WebSocketとTLSを使うShadowsocksおよび
ShadowsocksRに適用されます。REALITYとShadowTLSには各セクションに同名のオプションが
あります。個別に指定のないすべてのポリシーへ一括で設定するには
global-client-fingerprint
を使用してください。ShadowTLSのポリシーには常に適用され、VLESSのポリシーにはtls=trueか
reality=true、TrojanとVMessのポリシーにはtls=true、Shadowsocksのポリシーにはws=trueと
tls=trueの両方があれば適用されます。gRPCトランスポートのポリシーもtls=trueを書く必要が
あります。ShadowsocksRのポリシーには適用されません。
これらのプロトコルでは、fingerprint=none(unsafeも同じ意味です)はシステムのTLSスタックを
選び、global-client-fingerprintより優先されます。REALITYとShadowTLSはブラウザ型の
ハンドシェイクなしでは成り立たないため、そこではnoneも接続を拒否させます。Chuteが認識できない
値は、どのプロトコルでもシステムのTLSにフォールバックせず、そのポリシーの接続を拒否させます:
サーバーには何も送られず、接続は失敗で終わり(url-testやfallbackのグループは他の失敗と同じように
数えます)、設定の読み込み時に
Policy <name>: fingerprint '<value>' is not supported; connections through this policy are refused
がログに出ます。これに対し、認識できないglobal-client-fingerprintは無視されるだけです。
フィンガープリントを設定すると、耐量子鍵交換も有効になります。ChuteはX25519に 加えてX25519MLKEM768ハイブリッドグループを提示するため、今日記録された通信が 将来量子計算機を手にした攻撃者に復号されることはありません。このグループを知ら ないサーバーは単にX25519を選ぶだけなので、支障はありません。フィンガープリント を設定しない場合はシステムのTLSスタックが使われ、このグループは提示されません。 ECHにフィンガープリントが必要なのと同じ理由です。
Shadowsocksを使うプロキシのパラメータ
method: 必須。
現在のサポート:
rc4-md5
aes-128-cfb
aes-192-cfb
aes-256-cfb
aes-128-ctr
aes-192-ctr
aes-256-ctr
bf-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
salsa20
chacha20
chacha20-ietf
aes-128-gcm
aes-192-gcm
aes-256-gcm
chacha20-ietf-poly1305
xchacha20-ietf-poly1305
Shadowsocks 2022 メソッド
ChuteはShadowsocks 2022プロトコル(BLAKE3ベースの鍵導出とAEAD暗号を使用)をサポートしています。メソッド名が暗号スイートを決定します:
2022-blake3-aes-128-gcm
2022-blake3-aes-256-gcm
2022-blake3-chacha20-poly1305
パスワード形式:
SS2022のパスワードフィールドは、:(コロン)で区切られた1つまたは2つのbase64エンコードキーで構成されます。
シングルユーザーモード(1つのキー):
SS2022 = ss, 1.2.3.4, 443, 2022-blake3-aes-256-gcm, "base64-key"
アイデンティティヘッダー付きマルチユーザーモード(2つのキー):
2022-blake3-aes-128-gcmと2022-blake3-aes-256-gcmでは、アイデンティティヘッダーキーとユーザーキーを:で区切って提供できます:
SS2022 = ss, 1.2.3.4, 443, 2022-blake3-aes-256-gcm, "header-base64-key:user-base64-key"
各キーはbase64エンコードされた文字列です(標準およびURLセーフbase64の両方をサポート)。必要なキーの長さ:
| メソッド | ユーザーキー長 | ヘッダーキー長 |
|---|---|---|
2022-blake3-aes-128-gcm |
16バイト | 16バイト |
2022-blake3-aes-256-gcm |
32バイト | 32バイト |
2022-blake3-chacha20-poly1305 |
32バイト | N/A(アイデンティティヘッダー非サポート) |
キーの生成:
openssl rand -base64 32
注意: SS2022メソッドは
obfsパラメータをサポートしていません。2022-blake3-chacha20-poly1305メソッドはマルチユーザーモードをサポートしていません。
Shadowsocks AEGISメソッド
ChuteはAEGIS系のAEAD暗号もサポートしています。AESラウンド関数の上に構築されており、ハードウェアAESを備えたプロセッサ(近年のiPhone、iPad、Apple TV、Macはいずれも該当します)では、AES-GCMやChaCha20-Poly1305より明確に高速です:
aegis-128l
aegis-256
設定方法は上記の従来のAEADメソッドと同じで、パスワードはbase64鍵ではなく通常のパスフレーズです:
AEGIS = ss, 1.2.3.4, 443, aegis-128l, your-password
| メソッド | 鍵 | Nonce | 認証タグ |
|---|---|---|---|
aegis-128l |
16バイト | 16バイト | 16バイト |
aegis-256 |
32バイト | 32バイト | 16バイト |
その他はすべてSIP004に従います: saltは鍵と同じ長さ、セッションサブキーはHKDF-SHA1(key, salt, "ss-subkey")、TCPペイロードは長さ接頭辞付きのAEADチャンクで運ばれ各操作後にnonceを増加、UDPはすべてゼロのnonceを使用します。
サーバーはご自身で用意する必要があります。 AEGISはShadowsocks仕様の一部ではありません。定義するSIPは存在せず、shadowsocks-rust、shadowsocks-libev、shadowsocks-go、sing-box、Xrayを含む主要なShadowsocksサーバーはいずれも実装していません。これらのメソッドを選んでも、対応するように構築されたご自身のサーバーに対してのみ接続できます。商用ノードや共有ノードに接続する場合は、上記の相互運用可能なメソッドをご利用ください。
obfs: オプション。
現在のサポート:
tls
http
obfs_param: オプション。
obfs_param=example.com
obfsレイヤーが使用するHostを設定します。未設定の場合のデフォルトはcloudfront.netです。
WebSocket(v2ray-plugin): オプション。
ws=true, ws-path=/path, ws-headers=Host:example.com, tls=true, sni=example.com, skip-cert-verify=false
v2ray-pluginのwebsocketモードと同じように、ShadowsocksのストリームをWebSocketに載せて運びます。これにより、v2ray-pluginの背後で動くShadowsocksサーバーに、前段にCDNがある場合も含めて接続できます。使うオプションはWebSocketトランスポートとTLSのものです。Shadowsocks 2022のメソッドもこの上で動作し、ShadowsocksRのポリシーも独自のプロトコルとobfsを保ったまま同じオプションを受け付けます。
ws-pathのデフォルトは/で、先頭のスラッシュがないパスには補われます。- アップグレード要求の
Hostには、ws-headersにあるHostが書かれたとおりに使われます。ない場合はsni(sniがなければサーバーアドレス)に:<ポート>を付けたものです。 tls=trueはWebSocketの下でTLSを動かします。sni、skip-cert-verify、fingerprint、ECHの各オプションはTrojanと同じように働きます。ws=trueがないとtls=trueは何もしません: ポリシーはTLSなしで接続し、その行にはアドバイザリShadowsocks tls=true only applies with ws=true (the v2ray-plugin transport); this policy connects without TLSが付きます。ws-mux(デフォルトtrue)は各WebSocket上にmux.coolセッションを1つ開きます。これは、デフォルトのmux=1で起動したv2ray-pluginサーバーが期待するものです。mux=0で起動したサーバーにはws-mux=falseと書きます。- 同じ行に
obfs=もある場合はWebSocketが使われ、simple-obfsは適用されません。設定の読み込み時にPolicy <name> ignored unsupported option(s): obfsがログに出ます。 - UDPはプラグインを通りません: 普通のShadowsocks UDPとして
host:portへ直接送られるため、CDNは通り抜けられません。CDN経由で到達するサーバーにはudp-relay=falseと書いてください。プラグインの背後のShadowsocksサーバーがUoTに対応していれば、代わりにudp-over-tcp=trueでUDPをポリシーのストリームに入れて運べるため、WebSocketも通ります。 - v2ray-pluginのquicモードはサポートされていません。
Shadowrocketの書き方も読み込めます: obfs=websocket(またはobfs=ws)で、HostはobfsParamかobfs-hostに、パスはpathかobfs-uriに書きます。保存時はws=trueとして書き出されます。Shadowsocksが読めないそれ以外のobfsの値 — Quantumult Xのwssやタイプミスなど — はアドバイザリで名指しされ、ポリシーは素のShadowsocksとして接続します: Shadowsocks over WebSocket (the v2ray-plugin transport) is written ws=true, with ws-path= and ws-headers=; obfs=<value> is not read, so this policy would connect as plain Shadowsocks。
SS = ss, 1.2.3.4, 443, aes-256-gcm, password, ws=true, ws-path=/ws, ws-headers=Host:cdn.example.com, tls=true, sni=cdn.example.com
udp-over-tcp: オプション。
udp-over-tcp=true, udp-over-tcp-version=2
ポリシーのUDPを、サーバーのUDPリレーではなくポリシー自身のTCP接続の中で運びます — sing-boxのUDP over TCP(UoT)です。UDPフローごとに1本ずつ、サーバーが認識する待ち合わせアドレス(sp.v2.udp-over-tcp.arpa、バージョン1ではsp.udp-over-tcp.arpa)への接続を開きます。これらはポリシーの普通の接続なので、ほかの接続と同じくunderlying-proxyに従います。そのため、HTTPプロキシのようにUDPを運ばない上流を経由してもUDPが使え、WebSocketトランスポートも通ります。サーバーがUoTに対応している必要があり、sing-boxとmihomoのサーバーは対応しています。Shadowsocks 2022のメソッドでも使えます。
udp-over-tcp-version(デフォルト2): バージョン2は各接続の最初に宛先を示すリクエストを送り、その後は各データグラムを長さで区切ります。バージョン1にはリクエストがなく、各データグラムの前にアドレスを付けます。mihomoのデフォルトはバージョン1なので、mihomoからインポートしたプロファイルにはバージョンが明記されます。それ以外の値は通知を出して2として扱い、プロファイルを保存するときは書かれたとおりに残します。udp-relay=falseを書けば、これまでどおりそのポリシーのUDPはオフになります。- アプリのShadowsocksエディターでは、UDP over TCPスイッチとUoT バージョンの選択肢がこれに当たります。
SS = ss, 1.2.3.4, 8388, aes-256-gcm, password, udp-over-tcp=true
ShadowsocksR/ShadowsocksRR/ShadowsocksR-Akarinを使うプロキシのパラメータ
method: 必須。
現在のサポート:
rc4
rc4-md5-6
rc4-md5
aes-128-cfb
aes-192-cfb
aes-256-cfb
aes-128-ctr
aes-192-ctr
aes-256-ctr
bf-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
cast5-cfb
des-cfb
idea-cfb
rc2-cfb
seed-cfb
salsa20
chacha20
chacha20-ietf
protocol: オプション。
現在のサポート:
origin
auth_sha1
auth_sha1_v2
auth_sha1_v4
auth_aes128_md5
auth_aes128_sha1
auth_chain_a
auth_chain_b
auth_chain_c
auth_chain_d
auth_chain_e
auth_chain_f
auth_akarin_rand
auth_akarin_spec_a
protocol_param: オプション。
obfs: オプション。
現在のサポート:
plain
http_simple
http_post
tls1.2_ticket_auth
obfs_param: オプション。
WebSocketを使うプロキシのパラメータ
WebSocketトランスポートはTrojan、VMess、VLESSのほか、ShadowsocksとShadowsocksRでも使えます。後の2つではv2ray-pluginのwebsocketモードにあたります。違いはWebSocket(v2ray-plugin)を参照してください。
ws: オプション。
ws=true
WebSocketトランスポートを有効にします。
ws-path: オプション。
ws-path=/exmaple
WebSocket HTTPリクエストのパスを変更します。
ws-headers: オプション。
ws-headers=Header1:Value1|Header2:Value2
WebSocket HTTPリクエストのHTTPヘッダーを変更します。
gRPCを使うプロキシのパラメータ
gRPCトランスポートはTrojan、VMess、VLESSプロトコルで利用可能です。TLS上のHTTP/2ベースのgRPCフレーミングを使用し、特定のネットワーク制限を回避するのに役立ちます。
grpc: オプション。
grpc=true
gRPCトランスポートを有効にします。このトランスポートは、ポリシーのtlsの値に関わらず常にTLS上で動作します。ただし、ポリシーにglobal-client-fingerprintを適用させたい場合は、それでもtls=trueを書いてください。gRPCのポリシーにglobal-client-fingerprintが適用されるのは、これを指定したときだけです。
grpc-service-name: grpc=trueの場合は必須。
grpc-service-name=MyService
多重化のためのgRPCサービス名/パスを指定します。サーバー側で設定されたサービス名と一致する必要があります。デフォルト値はありません。
grpc-multi-mode: オプション。
grpc-multi-mode=true
Xrayのマルチモードを使用します: トンネルは/<service>/Tunの代わりに/<service>/TunMultiを呼び出し、複数の書き込みが1つのgRPCメッセージにまとめて送られます。サーバーがマルチモードをサポートしている必要があります。各トンネルは引き続きそれぞれ専用の接続を持ちます。
VMessとgRPCの例:
VMess = vmess, 1.2.3.4, 443, uuid=uuid, tls=true, grpc=true, grpc-service-name=GunService, sni=example.com
XHTTPを使うプロキシのパラメータ
XHTTPトランスポートはTrojan、VMess、VLESSプロトコルで利用できます。1本の接続を 維持するのではなく、通常のHTTPリクエストの中にトンネルを収めます。ダウンロードは 長時間維持される1本のレスポンスとして届き、アップロードは連続したPOSTか長時間維持される1本のPOSTとして送られます。 CDN越しに使えるのが、WebSocketやgRPCではなくこれを選ぶ主な理由です。
HTTPバージョンは直接設定しません。TLSなしならHTTP/1.1、TLSありならHTTP/2ですが、
alpnがちょうどhttp/1.1ならHTTP/1.1、ちょうどh3ならHTTP/3になります。REALITY
は常にHTTP/2です。
xhttp: オプション。
xhttp=true
XHTTPトランスポートを有効にします。
xhttp-mode: オプション。
xhttp-mode=packet-up
アップロードの運び方です。auto(デフォルト)はpacket-upと同じで、REALITY使用時は
stream-oneと同じになります。
packet-up— アップロードは連番付きのPOSTの列。互換性が最も高く、CDNとの相性も 最良です。stream-up— アップロードは終わらない1本のPOSTで、ダウンロードは別のリクエスト。stream-one— 1つのリクエストが送受信の両方を運びます。サーバーと経路上の機器が 全二重HTTPに対応している必要があります。
サーバーは通常モードを固定しており、食い違うと400が返ります。
xhttp-path: オプション。
xhttp-path=/yourpath
リクエストパス。デフォルトは/。サーバーがXHTTPを提供しているパスと一致させます。
xhttp-host: オプション。
xhttp-host=example.com
HostヘッダーとリクエストURLに使うホスト名。デフォルトはsni、未設定ならサーバー
アドレスです。
xhttp-headers: オプション。
xhttp-headers=Header1:Value1|Header2:Value2
追加のHTTPヘッダー。書式はws-headersと同じです。
xhttp-padding: オプション。
xhttp-padding=100-1000
各リクエストが運ぶパディング長の範囲。MIN-MAXまたは単一の数値で、デフォルトは
100-1000です。サーバーはパディングを必須とし長さを検証します。範囲はサーバーが
受け入れる区間に収めてください。パディングが無い、または長さが合わない場合は400が
返ります。
xhttp-max-post-bytes: オプション。
xhttp-max-post-bytes=1000000
アップロード1回あたりのPOST最大バイト数。デフォルトは1000000。超える書き込みは複数の
POSTに分割されます。
xhttp-min-post-interval: オプション。
xhttp-min-post-interval=30
連続するアップロードPOSTの最小間隔(ミリ秒)。デフォルトは30。
xhttp-xmux-max-concurrency、xhttp-xmux-max-connections、xhttp-xmux-max-reuse-times、xhttp-xmux-max-lifetime: オプション。
xhttp-xmux-max-concurrency=4
XMUXは下位のHTTP/2接続をプールし、複数のトンネルで1本の接続を共有させます。トンネル
ごとに接続を張るのではなく、通常のブラウザセッションのように見えます。4つともデフォルトは
0で、プーリングは無効です。
xhttp-xmux-max-concurrency— 1本の接続を共有できるトンネル数。xhttp-xmux-max-connections— サーバーごとに許可する接続数。xhttp-xmux-max-reuse-times— 1本の接続が何本のトンネルを扱ったら新規受付を やめるか。xhttp-xmux-max-lifetime— 何秒経過したら新規トンネルの受付をやめるか。
XHTTPのポリシーでは、プロトコルを問わずmux=trueは拒否され、設定の読み込み時に
Policy <name> ignored unsupported option(s): muxがログに出ます。XHTTPは独自の多重化を備えており、汎用の
多重化を重ねると二重になるためです。
xhttp-download-server、xhttp-download-port: オプション。
xhttp-download-server=cdn.example.com
ダウンロードだけを別のアドレス(通常は同じサーバーの前段にあるCDN)経由にし、 アップロードは主アドレスのままにします。両者は同じサーバーに到達する必要があります。 セッションはサーバー側の状態なので、経路を変えるのは問題ありませんが、サーバーを 変えることはできません。
VLESSとXHTTPの例:
VLESS = vless, 1.2.3.4, 443, uuid=uuid, tls=true, xhttp=true, xhttp-mode=packet-up, xhttp-path=/yourpath, sni=example.com
XTLSを使うプロキシのパラメータ
xtls: オプション。
xtls=true
トランスポートをXTLSで包みます。これだけではフローを宣言しません: VLESSのリクエストが運ぶaddonsブロックは空で、フローはネゴシエートされません。フローを宣言するには下のflow=xtls-rprx-visionを使ってください。xtls-rprx-directは実装されていません。
flow: オプション。
flow = xtls-rprx-vision
XTLSのフロー制御を選択します。サポートされている値はxtls-rprx-visionのみで、Visionフレーミングを有効にします。フロー値はVLESSのアドオンでサーバーに送信されます。
skip-cert-verify: オプション
skip-cert-verify=true
TLSと同じです。
sni(デフォルト: hostname)
sni=exmaple.com
TLSと同じです。
REALITYを使うプロキシのパラメータ
REALITYは、プロキシトラフィックを実際のWebサイトへの通常のTLSトラフィックと区別できなくするTLSベースの難読化技術です。VLESSプロトコルで使用できます。
reality: オプション。
reality=true
REALITY難読化を有効にします。カモフラージュ先として機能するターゲットサーバーが必要です。
public-key: 必須。
public-key=BASE64KEY
サーバーのX25519公開鍵(base64)。これがないとREALITYハンドシェイクを構築できません。
short-id: オプション。
short-id=abcd1234
REALITY認証に使用される短い識別子。通常は16進数文字列です。
server-name: オプション。
server-name=www.microsoft.com
TLSハンドシェイク中に提示するSNI(Server Name Indication)。最良のカモフラージュ効果を得るために、実際によくアクセスされるWebサイトである必要があります。ターゲットサーバーの証明書はこの名前と一致する必要があります。
fingerprint: オプション。
fingerprint=chrome
模倣するTLSクライアントフィンガープリント。サポートされる値にはchrome、firefox、safari、ios、edge、360、qq、android、randomと、fingerprintに挙げたその他の名前が含まれます。一般的なブラウザフィンガープリントを使用することで検出を回避できます。なお、ここではandroidとrandomは個別のフィンガープリントではなく、chromeとして扱われます。noneとChuteが認識できない値は接続を拒否させます。このハンドシェイクはシステムのTLSスタックでは行えないためです。
spiderx: オプション。
spiderx=/path
REALITYスパイダーカモフラージュのカスタムパス。
VLESSでの例:
VLESS = vless, 1.2.3.4, 443, uuid=uuid, reality=true, public-key=BASE64KEY, server-name=www.microsoft.com, short-id=abcd, fingerprint=chrome
注意: REALITYは従来の証明書を使用しません。接続はカモフラージュサーバーの実際の証明書を使用します。
ECHを使うプロキシのパラメータ
Encrypted Client Helloは、接続を観測している相手からサーバー名を隠します。本当の
名前はハンドシェイクの内部で暗号化され、経路上に現れるのはサーバーのECHConfigが
公開する public_name です。
ECHはクライアントフィンガープリントと同じ実装の上に載っているため、ポリシーには
fingerprint も必要です。指定がなければ ech=true は何も
せず、本当の名前がそのまま送出されます。素のTLS上のTrojan、VMess、VLESS
(WebSocketトランスポートを含む)と、WebSocketとTLSを使うShadowsocksおよびShadowsocksRに適用されます。
注意: gRPCとXHTTPのトランスポートはECHをサポートしていません。
grpc=trueまたはxhttp=trueの場合、ech=trueは黙って無視され、本当のサーバー名がそのまま送出 されます。(クライアントフィンガープリントと耐量子鍵交換はgRPCとXHTTPにも適用 されます。)
ech: オプション。
ech=true
ECHを有効にします。ech-config が未設定の場合、Chuteはブラウザと同じように
サーバー名のDNS HTTPSレコードからECHConfigを取得します。
ech-config: オプション。
ech-config=AEX+DQBBAAAgACD...
base64のECHConfigListで、DNS参照の代わりに使われます。サーバーがHTTPSレコードを
公開していない場合や、特定の設定に固定したい場合に指定します。これを設定するだけで
ECHが有効になり、ech=true を併せて指定する必要はありません。
ech-public-name: オプション。
ech-public-name=cover.example.com
平文で送出されるカバー名を上書きします。デフォルトではECHConfig内の public_name が
使われ、それがサーバーの期待する値です。設定を別のホストが代理で公開している構成
でのみ指定してください。
Trojanの例:
Trojan = trojan, 1.2.3.4, 443, password=pw, tls=true, sni=secret.example.com, fingerprint=chrome, ech=true
サーバーがECHを拒否した場合(多くは設定が古くなったため)、カバー名で応答して その名前の証明書を提示し、ハンドシェイクは外側のTLSにフォールバックします。証明書の 検証が有効である限り、接続は黙って続行されるのではなく認証に失敗します。
skip-cert-verify=trueの場合はその名前を誰も確認しないため、セッションはカバー名の まま黙って続行されます。ech-configを更新するか、削除してDNS参照に戻してください。
TCP Fast Open(実験的)
tfo: オプション
tfo=true
TCP Fast Openの詳細についてはWikipediaを参照してください。TCP Fast Openを有効にすると、予期しない接続障害が発生する可能性があります。Chute Androidはtfoを無視します。
共通パラメータ
udp-relay: オプション(デフォルト: true)
udp-relay=false
ポリシーをTCP専用としてマークします。プロトコルがサポートしている場合、UDPリレーはデフォルトで有効です。ポリシーをUDPトラフィックのリレーから除外するにはudp-relay=falseを設定してください。TrojanはUDPを、サーバーポートへの素のTLS接続で中継します — WebSocket、gRPC、XHTTPを使わず、ECHも使いませんが、ポリシーのフィンガープリントは使います。そのため、これらのトランスポートのいずれかしか提供しないサーバーに対してはudp-relay=falseを設定してください。
mux: オプション
mux=true
接続の再利用 / 多重化を有効にします。エイリアスmultiplexとreuseも受け付けられます。HTTP/HTTPS、SOCKS5/SOCKS5-TLS、Trojan、VMess、VLESS、Hysteria2、Shadowsocks(R)、ShadowTLS、MASQUEでサポートされています。AnyTLS、TUIC、SSHはどのプラットフォームでも多重化されません。これらではmux=trueは適用されず、設定の読み込み時にその旨がログに出ます: Policy <name>: mux=true is not applied: <reason>。
Hysteria2とMASQUEは、共有する1本のQUIC接続の上で多重化します。それ以外のプロトコルは多重化した接続をChute独自のフレーミングで運ぶため、それを理解するサーバーでなければ分解できません: 標準のXray、sing-box、Shadowsocksのサーバーは分解できないので、それらに対してはmuxを有効にしないでください。
cert-fingerprint-sha256: オプション
cert-fingerprint-sha256=<hex>
SHA-256フィンガープリントによってサーバー証明書をピン留めします。エイリアスcert-fpも受け付けられます。現在はMASQUEでのみ有効です。
encrypt-method(VMess): オプション(デフォルト: auto)
encrypt-method=aes-128-gcm
VMessペイロードの暗号化。サポートされる値: aes-128-gcm、chacha20-poly1305、aes-128-cfb(エイリアスlegacy)、none。
alpn: オプション
alpn=h2|http/1.1
複数のALPN値は|で区切ります。これを読むのはTUIC、Hysteria2、MASQUE — いずれも未指定ならh3が既定です — と、トランスポートが話すHTTPのバージョンを選ぶXHTTPだけです。それ以外のプロトコルはこのオプションを無視し、トランスポートが決めるALPNを提示します: gRPCならh2、fingerprintを指定した場合はWebSocketならhttp/1.1、素のTLSならh2,http/1.1です。指定しない場合はどちらも何も提示しません。そのときはシステムのTLSスタックがハンドシェイクを行うためです。
underlying-proxy: オプション。
underlying-proxy=OtherProxy
プロキシチェーン: 値には、このポリシーのトラフィックを運ぶ別のポリシーまたはポリシーグループの名前を指定します。上流を先に接続してから自身のサーバーへ接続するため、A = ..., underlying-proxy=BはAをB経由で送ります。Bがさらに上流を指定すれば多段になります。空にするかDIRECTと書くと直接接続します。スペースやカンマを含む名前は、underlying-proxy="HK 01"のように引用符で囲んでください。存在しない名前を指定した場合、接続は拒否され(フェイルクローズ)てログに記録され、DIRECTにはフォールバックしません。
固定の参照だけでできたループ(リレーグループの最初のメンバー自身のunderlying-proxyを通って戻ってくるものを含む)は、設定の読み込み時に拒否されます。ポリシーグループがいま何を選んでいるかによってのみ生じるループは、恒久的には拒否されません。グループが別のものを選べばそのポリシーは使えるようになりますが、ループが続いている間は、それを通る接続はすべて拒否されます。チェーンがどのような形であっても、上流が16段を超えてネストする接続は、際限なく展開されることなく拒否されます。
このポリシーのサーバー名も上流が解決します。チェーンされたサーバーはローカルのリゾルバーでは引かれず、Chuteが直接pingすることもありません。リレーグループで最初のメンバーより後にあるポリシーも同様です。レイテンシはグループのヘルスチェックとレイテンシテストから得られ、どちらもチェーンを通ってサーバーに届きます — url-test、fallback、load-balanceグループは、チェーンされたメンバーを実際の接続と同じ経路で計測します。
Tailscale(組み込みのTAILSCALEポリシー。そのエンジンが自ら接続を張ります)を除き、すべてのプロトコルをチェーンできます。サーバーへストリームで接続するポリシー — HTTP、SOCKS5、Shadowsocks、VMess、VLESS、Trojan、AnyTLS、SSH、HTTP/1.1またはHTTP/2上のXHTTPなど — は、そのストリームを上流経由で開きます。Hysteria2、TUIC、MASQUEとHTTP/3上のXHTTP(TLSかつalpn=h3)はQUICを話し、WireGuardとAmneziaWGは独自のデータグラムを送るため、上流のUDPリレーを通ります。上流(グループなら現在選択中のもの)はUDPを運べなければなりません。Shadowsocks、SOCKS5、VMess、VLESS、Trojan、Hysteria2は運べますが、HTTPやHTTPSのプロキシは運べません。UDPを運ばない上流の上では、それらを通る接続はすべて拒否されてログに記録され、直接送信されることはありません。チェーンされたQUICポリシーは最大1200バイトのデータグラムを送り、WireGuardまたはAmneziaWGのトンネルはMTUが指定されていない限り(mtu、またはセクションのwg-mtu)内側のMTU 1280を使うので、包まれたデータグラムも1500バイトの経路に収まります。WireGuard、AmneziaWG、SSHはすべての通信を自身の上流経由の1本の接続で運ぶため、いずれもリレーグループの2番目以降のメンバーにはなれません。
UDPもチェーンを通ります。VMess、VLESS、Trojan、AnyTLSはUDPをストリームの中で運ぶので、どの上流の上でもUDPが使えます。Shadowsocks(ShadowsocksRとShadowsocks 2022を含む)とSOCKS5はUDPをデータグラムとして中継し、QUIC系プロトコルとWireGuardも同様です。これらのUDPは上流がUDPを運ぶときにだけ使えます。ただしudp-over-tcpを使うShadowsocksノードはUDPをストリームの中で運ぶため、どの上流の上でも使えます。SSH、HTTP、HTTPSのポリシーはそもそもUDPを運びません。チェーンされたポリシーが運べないUDPはudp-policy-not-supported-behaviour(デフォルトはREJECT)に従います。
mihomoのdialer-proxyとsing-boxのdetourはこのオプションへ、プロキシプロバイダーのoverride: dialer-proxyはプロバイダーのunderlying-proxyへ変換されます。Clashまたはmihomoのrelayグループは、メンバーの順序を保ったままリレーグループとして残ります。ポリシーグループのすべてのメンバーを1つの上流経由で送るには、グループにunderlying-proxyを指定します。すべてのプロキシポリシーを1つの上流経由で送るには、[General]にglobal-underlying-proxyを指定します。
test-url: オプション。
test-url=http://www.gstatic.com/generate_204
このポリシーがurl-testまたはfallbackグループのメンバーであるときに使うレイテンシテストURLです。グループはこのメンバーを、グループのurlの代わりにこのURLで計測します。指定しない場合はグループのURLが使われます。
interface: オプション
interface=en0
このポリシーがサーバーへ張るTCP接続を、デフォルトルートが選ぶインターフェースではなく、指定したネットワークインターフェース — たとえばMacならen0、Androidならwlan0 — から送出します。そのインターフェースが利用できない場合、接続は別の経路から出ていくのではなく失敗します。allow-other-interface=trueを指定すると、代わりにデフォルトルートに従います。Chute MacとChute Androidで機能し、iOSとtvOSでは無視されます。UDPリレーはバインドされず、QUICベースのプロトコル(TUIC、Hysteria2、MASQUE)、WireGuard、Tailscaleもバインドされません。
AnyTLSを使うプロキシのパラメータ
AnyTLSはパディング難読化を備えたTLSベースのプロキシプロトコルです。
AnyTLS = anytls, 1.2.3.4, 443, password, sni=example.com, skip-cert-verify=false
password: 必須。
認証に使用されるパスワード/パスフレーズ。
sni(デフォルト: hostname)
sni=exmaple.com
TLSと同じです。
skip-cert-verify: オプション
skip-cert-verify=true
TLSと同じです。
パディングスキーム: オプション
パディングはstop=Nと数値のパケットごとのキーで設定します:
AnyTLS = anytls, 1.2.3.4, 443, password, sni=example.com, stop=2, 0=30-30, 1=100-400+c
| パラメータ | 説明 |
|---|---|
stop |
パディングされるパケットの数 |
0、1、2、... |
各パケットのパディングスキーム(数値キー) |
各スキームは+で結合されたセグメントのリストで、セグメントはc(チェック)またはmin-maxバイト範囲(最大16384)です。例: stop=2, 0=30-30, 1=100-400+c。,も区切りとして使えますが、値を引用符で囲んだ場合(1="100-400,c")に限られます。引用符の無いカンマはフィールドを終わらせ、行を壊してしまうためです。+を推奨します。
TUICを使うプロキシのパラメータ
TUICは多重化TCPおよびUDPリレーを提供するQUICベースのプロキシプロトコルです。キーワードtuic-v5(Surgeの表記)も受け付け、保存時はtuicと書かれます。
TUIC = tuic, 1.2.3.4, 443, uuid=uuid, password=password, sni=example.com, skip-cert-verify=false, alpn=h3
uuid: 必須。
認証用のUUID。
password: 必須。
認証用のパスワード。
sni(デフォルト: hostname)
sni=exmaple.com
TLSと同じです。
skip-cert-verify: オプション
skip-cert-verify=true
TLSと同じです。
alpn: オプション
alpn=h3
QUIC接続のALPN文字列を指定します。
Hysteria2を使うプロキシのパラメータ
Hysteria2は、高スループットシナリオ向けのQUICベースのプロキシプロトコルです。
Hysteria2 = hysteria2, 1.2.3.4, 443, auth=password, sni=example.com, skip-cert-verify=false, up=10, down=100, alpn=h3
auth: 必須。
認証パスワード/トークン。
sni(デフォルト: hostname)
sni=exmaple.com
TLSと同じです。
skip-cert-verify: オプション
skip-cert-verify=true
TLSと同じです。
up: オプション(Mbps)
up=10
アップロード帯域幅(Mbps)。受け付けて保持はしますが、使用はされません。これはHysteria2のBrutal輻輳制御のための値で、このエンジンはそれを実行しません。設定したポリシーごとに通知がログに記録されます。実際に回線に乗るのは down= のほうで、認証時にクライアントが申告するレートです。
down: オプション(Mbps)
down=100
ダウンロード帯域幅(Mbps)。
alpn: オプション
alpn=h3
QUIC接続のALPN文字列を指定します。
obfs: オプション
obfs=salamander
QUICトラフィックのSalamander難読化を有効にします。SalamanderはBLAKE2b-256 XORを使用してQUICパケットを難読化し、DPI(ディープパケットインスペクション)に対する耐性を持たせます。
obfs-password: オプション
obfs-password=your-obfuscation-key
Salamander難読化に使用されるパスワード/キー。obfs=salamanderが設定されている場合に必須です。
WireGuardを使うプロキシのパラメータ
WireGuardは最新のVPNプロトコルです。ChuteはWireGuardをアウトバウンドプロキシサーバーとしてサポートしており、インラインまたは名前付き[WireGuard]セクションを参照することで設定できます。
インライン設定:
WireGuard = wireguard, private-key=base64key, peer-public-key=base64key, self-ip=10.0.0.2, server=1.2.3.4, port=51820
セクション参照(推奨):
WireGuard = wireguard, section-name=wg0
[WireGuard]セクションの構文についてはWireGuard設定を参照してください。
private-key: 必須(インラインのみ)。
Base64エンコードされたWireGuard秘密鍵。
peer-public-key: 必須(インラインのみ)。
Base64エンコードされたWireGuardピア公開鍵。
self-ip: オプション(インライン)。
WireGuardインターフェースに割り当てられるローカルIPアドレス(例: 10.0.0.2)。
self-ip-v6: オプション(インライン)。
WireGuardインターフェースに割り当てられるローカルIPv6アドレス。
server: 必須。
リモートWireGuardサーバーアドレス(ポリシー行の代わりに、参照される[WireGuard]セクションから取得することもできます)。
port: 必須。
リモートWireGuardサーバーポート(ポリシー行の代わりに、参照される[WireGuard]セクションから取得することもできます)。
preshared-key: オプション。
耐量子性のためのBase64エンコードされた事前共有鍵。
allowed-ips: オプション(インライン)。
allowed-ips="10.0.0.0/8, 192.168.0.0/16"
ピアが運ぶ宛先を、カンマ区切りのCIDRで指定します。値にはカンマが含まれるため、引用符で囲んでください。範囲外の宛先は、ピアが経路を返せないため拒否または破棄されます。指定しない場合はすべてを運びます。セクション形式についてはWireGuard設定を参照してください。
keepalive: オプション(秒)。
keepalive=25
NAT越えのための永続的キープアライブ間隔。指定しない場合、キープアライブは送信されません。
mtu: オプション。
mtu=1420
WireGuardインターフェースのMTU。
reserved: オプション。
reserved=0,1,2
WireGuardパケットヘッダーの予約バイト。現在のエンジンでは解析されますが有効ではありません。この値はBoringTun FFIでサポートされていないため、警告がログに記録され無視されます。
ShadowTLSを使うプロキシのパラメータ
ShadowTLSは、標準的なTLS 1.3セッション内にトラフィックをカプセル化するTLSベースのプロキシプロトコルです。ChuteはShadowTLS v3を話します: パスワードはClientHelloのsession_idにHMACとして載るため、認証はハンドシェイクの後ではなくハンドシェイクの中で行われます。
確立したトンネルの内側で、Chuteは認証なしのSOCKS5グリーティングとSOCKS5 CONNECTを送ります。そのため、ShadowTLSの背後にあるサーバーは認証なしのSOCKS5プロキシでなければなりません。SOCKS5ではなくShadowsocksのポートへ転送するshadow-tlsの構成では、TLSハンドシェイクは完了したあとに失敗します。
ShadowTLS = shadowtls, 1.2.3.4, 443, password=password, sni=example.com, skip-cert-verify=false, fingerprint=chrome
password: 必須。
ShadowTLSハンドシェイク認証に使用されるパスワード。
sni(デフォルト: hostname)
sni=example.com
TLSと同じです。これを書くこと自体が、カバー用の証明書の検証を有効にするスイッチにもなっています — 下記を参照してください。
skip-cert-verify: オプション
skip-cert-verify=true
検証を有効にするのは sni= です。sni= が書かれていて skip-cert-verify が無いか false の場合、偽装先のサイトが提示する証明書のチェーンとホスト名がその名前に対して検証され、失敗すれば接続も失敗します。sni= が無い場合、証明書は検証されず、ポリシーごとに初回使用時に警告が 1 回ログに残ります。手元にある名前は中継サーバーのものだけで、それはカバーサイトの名前ではないからです。skip-cert-verify=true はどちらの場合でも検証を省きます。
fingerprint: オプション
fingerprint=chrome
模倣するTLSクライアントフィンガープリント。サポートされる値にはchrome、firefox、safari、ios、edge、360、qq、android、randomと、fingerprintに挙げたその他の名前が含まれます。一般的なブラウザフィンガープリントを使用することで検出を回避できます。なお、ここではandroidとrandomは個別のフィンガープリントではなく、chromeとして扱われます。noneとChuteが認識できない値は接続を拒否させます。このハンドシェイクはシステムのTLSスタックでは行えないためです。
MASQUEを使うプロキシのパラメータ
MASQUEはHTTP/3ベースのプロキシプロトコルで、QUIC上でトラフィックをトンネルします。MASQUEポリシーにはtype、host、portが必要で、認証tokenは任意です。
ProxyMASQUE = masque, 1.2.3.4, 443, token=auth-token, mode=connect-udp, sni=example.com, alpn=h3, skip-cert-verify=false, mux=true
token: オプション
token=auth-token
MASQUEサーバー用の任意のBearer認証トークンです。エイリアスmasque-token=も受け付けます。
mode: オプション
mode=connect-udp
互換性のために受け付けられますが、トンネリング動作は変わりません: TCPフローは常にプレーンなCONNECTトンネルを使用し、UDPフローは常にconnect-udpを使用します。エイリアスmasque-mode=も受け付けます。
mux: オプション
mux=true
共有QUIC接続上で多重化を有効にします。
sni / alpn / skip-cert-verify: オプション
TLSと同じ。MASQUEはQUIC上で動作するため、通常はalpn=h3を使用します。
SSHを使うプロキシのパラメータ
完全なドキュメントについてはSSHプロキシを参照してください。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。