Chute Macリリースノート
バージョン 1.1.5 (233)
新機能:
- プロキシチェーンを追加:ポリシーは「上流プロキシ」(
underlying-proxy)を指定すると、そのプロキシを経由して自分のサーバーに接続できます。ポリシーグループはすべてのメンバーを 1 つの上流プロキシ経由にでき、「一般 → 詳細」に新設した「フロントプロキシ」設定(global-underlying-proxy)は、独自の上流を設定していないすべてのノードに同じ処理を適用します。Tailscale 以外のすべてのトランスポートをチェーンできます。ストリーム系プロトコルは上流のストリームを通り、Hysteria2、TUIC、MASQUE と HTTP/3 上の XHTTP は上流の UDP リレーを固定 1280 バイトのパケットで通ります。WireGuard と AmneziaWG は内側の MTU を 1280 バイトにして上流経由でトンネルを張り、SSH と AnyTLS のセッションは上流の上で開かれます。ポリシーエディターは、これらすべてでこの項目を提供します。ループしているチェーン、16 階層を超えて入れ子になったチェーン、存在しないポリシーを指定したチェーンは拒否され、直接送信されることはありません - リレーグループを追加(
relay、Clash や mihomo と同様):メンバーは記述した順にチェーンされます。最初のメンバーには直接接続し、以降の各メンバーにはそれより前のメンバーを経由して接続し、最後のメンバーが宛先に接続します。グループエディターではタイプとして Relay を選択でき、メンバーをその順序のまま保持し、メンバーが少なくとも 2 つ必要です - ランダムグループを追加(
random、Shadowrocket と同様):接続ごとにメンバーをランダムに選びます。UDP の場合は UDP を扱えるメンバーの中からだけ選びます。ランダムグループには切り替える選択がないため、メニューバーと「プロキシ」ページには表示されません。グループエディターで編集してもランダムグループのまま保持されます - 接続の詳細ウィンドウと Web コンソールにプロキシチェーンを追加:すべてのホップ(
Airport/HK-01 → Landing)が表示され、「詳細をコピー」にも含まれ、接続の検索でも一致し、HAR エクスポートにもその経路が記録されます - ルールプロバイダーとプロキシプロバイダーに
policy=を追加:そのリストを指定したポリシー経由でダウンロードします。存在しないポリシー名を指定した場合は、直接ダウンロードせずにダウンロードを失敗させます。Mac のエディターにはまだこの項目がありませんが、保存しても保持されます - Shadowsocks エディターに UDP over TCP(
udp-over-tcp、バージョン 1 または 2)を追加:プロキシの UDP を自身の TCP 接続の中に載せて運ぶため、上流が UDP に対応していないチェーンを経由しても動作します - VMess と VLESS に UDP 対応を追加:これまでは、どちらに送った UDP も一律に拒否されていました(
udp-policy-not-supported-behaviourに従い、既定では REJECT)。今後は mihomo、sing-box、Shadowrocket と同様に、宛先ごとに 1 本の接続で転送されます - ボディ書き換えに jq を追加:
http-request-jqとhttp-response-jqは JSON ボディに対して本物の jq プログラムを実行し、エディターには「リクエスト jq」「レスポンス jq」タイプと「JQ プログラム」フィールドがあります。無効なプログラムはエラーとして報告され、そのルールはスキップされます。JSON 以外のボディ、実行に失敗したプログラム、空の出力の場合は、いずれもボディをそのまま残します - 汎用スクリプトを追加:
type=genericのスクリプトには自動トリガーがなく、スクリプトエディターの「実行」ボタン、またはGET /api/scriptsとPOST /api/scripts/runから要求したときにのみ実行されます。スクリプトエディターには「イベント名」フィールドも加わりました。イベントスクリプトにはnetwork-changed、engine-started、profile-reloadedが配信され、それ以外のイベントを指定したスクリプトはその旨がログに記録され、実行されることはありません - 専用 DNS プールを追加:
direct-dns-serverはルールで DIRECT に振り分けたドメインを、proxy-dns-serverはプロキシサーバー自身のホスト名を解決し、fallback-dns-serverはメインのサーバーから応答がないときの問い合わせ先になります。いずれもグローバルのサーバーにフォールバックし、DNS 設定にはそれぞれのフィールドがあります - DNS アップストリームに
#proxy/#proxy=<policy>を追加(DoQ と DoH3 を含む):QUIC リゾルバーはポリシーの UDP リレーを経由し、UDP を扱えないポリシーの場合はそのサーバーに直接問い合わせずにスキップします。ポリシー経由で送る通常のリゾルバーは DNS over TCP に切り替わり、DNS over UDP が遮断される経路向けに素のtcp://アップストリームも受け付けます encrypted-dns-follow-outbound-mode、allow-dns-svcb(有効にしない限り、HTTPS と SVCB の問い合わせには空の応答を返します)、およびサーバーごとの#h3、#skip-cert-verify、#disable-ipv4、#disable-ipv6、#disable-qtype=を追加- ローカル DNS マッピングを拡充:
[Host]エントリは、列挙したすべてのサーバーを保持して並列に問い合わせ、1 つのドメインを複数のアドレスに対応付け、ルールセットをキーにでき(RULE-SET:<url>)、そのドメインに対してtype=dnsスクリプトを実行し(script:<name>)、ネットワークごとのマッピング用にssid:<name>も受け付けます。エディターではエントリにスクリプトを割り当てられ、エントリのすべてのアドレスとサーバーが保持されます - 「一般」に「システム hosts ファイルを読み込む」を追加(
read-etc-hosts。インポート時には mihomo のuse-system-hostsから変換されます):/etc/hostsにある名前には Chute の DNS が応答します - ルール通知を追加:FINAL を含むすべてのルールに
notification-text=とnotification-interval=を指定でき、一致したときに通知を表示します(通知はルールごとに、間隔内で最大 1 回)。ルールエディターで両方を設定でき、通知は Chute の通知スイッチに従います FINAL,<policy>,dns-failedを追加:名前を解決できない場合でも接続を閉じず、FINAL ポリシーでリモート解決を使って接続します。ルールエディターでも指定できます- REJECT 系ポリシーを本物のポリシーとして追加(REJECT-DROP、REJECT-NO-DROP、REJECT-TINYGIF、REJECT-IMG、REJECT-DICT、REJECT-ARRAY、REJECT-200、REJECT-VIDEO):それぞれ HTTP リクエストにドキュメントどおりのボディで応答し、30 秒間に 50 回を超えて拒否されたホストは REJECT-DROP に格上げされます。ルールエディターのポリシーメニューには、これらと PROXY が表示されます
- インラインルールセットを追加:
[Ruleset Name]セクションはRULE-SET,<name>として参照できます。インラインルールセット同士の参照も可能で、ネストは最大 8 段まで、循環参照は拒否されます - SSID 関連の機能を追加:
[SSID Setting]の DNS 上書きがネットワークごとに適用され(名前、BSSID:、TYPE:WIFI/CELLULAR/WIRED(Mac ではイーサネット)、ROUTER:、引用符付きの名前、ワイルドカード名)、ネットワークが切り替わると以前のリゾルバーのキャッシュを破棄します。ssidとsubnetのポリシーグループは現在のネットワークに応じてメンバーを選び、SUBNET ルールも現在のネットワークに一致します。また、suspend=trueが Mac でも機能するようになりました。該当するネットワークでは、Chute がシステムプロキシを外して拡張モードを切り離し、メニューバーにその旨が表示され、一時停止の開始時と終了時にはそれぞれ通知が届きます。手動でプロキシを切り替えると一時停止は終了します。グループと [SSID Setting] の各エディターには「照合方法」メニュー(SSID、BSSID、TYPE、ROUTER)が加わり、エントリを記述した順のまま保持し、各エントリの DNS 上書きを表示します。ネットワークの変化は 60 秒ごとの定期確認を待たず、発生した時点でエンジンに伝わるようになりました。設定が Wi-Fi ネットワークを指定している場合、Chute は位置情報へのアクセスを一度だけ求めます。macOS 14 以降では、ネットワーク名を明かす前にこの許可が必要です - DEST-PORT、SRC-PORT、IN-PORT の範囲指定と比較(
80-81、>=50000、/区切りのリスト)、HOSTNAME-TYPEの値IPv4、IPv6、DOMAIN、SIMPLEを追加し、IN-TYPE と IN-USER ルールが機能するようになりました。これらのルールはドライランだけでなく、実際のトラフィックにも一致するようになりました - MitM の制御項目を追加:HTTP/2 の復号(
h2)、復号対象ホストへの QUIC をブロックして HTTP/3 による復号の回避を防ぐ設定(auto-quic-block)、ホストの復号対象からの除外、ホストリストでのキーワード<ipv4-address>、<ipv6-address>、<simple-hostname>の照合に対応しました。最初の 3 つは MitM 設定にあります - 拡張モードでドメイン名による QUIC のルーティングを追加:プロトコルスニッフィングが有効な場合、クライアントの QUIC Initial から名前を読み取り、複数の Initial にまたがる ClientHello は再構成し、名前が判明するまでフローを保留するため、IP アドレス宛ての HTTP/3 接続も DOMAIN ルールでルーティングできます
icmp-auto-replyを追加(既定で有効):拡張モードでは ping に対し、タイムアウトさせずに IPv4 と IPv6 のどちらでもローカルで応答します- インポートの対応範囲を拡大:mihomo の GEOSITE とカテゴリ GEOIP ルールは実際に機能するルールセットに展開され、
.mrsと.srsのプロバイダーは公開されている元のリストを参照するよう置き換えられ、policy-pathグループはupdate-interval、フィルター、インクルードリストを備えたプロバイダーに変換されます。mihomo のSUB-RULEは AND ルールに展開され、sing-box のdetourと mihomo のdialer-proxyはプロキシチェーンとしてインポートされます。WireGuard のallowed-ipsはコンパイルされて適用されるため(WireGuard エディターには「許可 IP」フィールドが加わりました)、スプリットトンネルがすべての宛先を取り込んでしまうことはなくなりました - 設定ディレクティブとトランスポートを追加:
#!includeとinclude =で他のファイルを取り込め、#!MACOS-ONLY、#!IOS-ONLY、#!TVOS-ONLYで行を 1 つのプラットフォームに限定でき、どちらも保存後に保持されます。Shadowsocks には v2ray-plugin の WebSocket トランスポートが加わりました。また、UUID ではない VLESS や VMess の id は、Xray や mihomo と同様に UUIDv5 で UUID に変換され、エンジンが停止することはなくなりました - ポリシーエディターに「出口インターフェイス」と「他のインターフェイスを許可」を追加(
interface=、allow-other-interface=):ポリシーの TCP 接続を 1 つのネットワークインターフェースに固定します。これらはnetwork-framework = falseのときに有効になり、macOS の既定である Network.framework の下ではまだ適用されません - スクリプト API を拡充:
$httpAPIはソケットを開かずにエンジン自身のルートを呼び出せるようになり、$httpClientはpolicyの指定に従い、$event.nameは実際に発生したイベントを返します - 書き換えのオプションを追加:Map Local は
data-type、status-code、ヘッダーを指定でき、ヘッダー書き換えにはheader-replace-regex、URL 書き換えにはreject-arrayとreject-tinygifが加わり、1 行のボディ書き換えに正規表現と置換のペアを複数記述できます。各エディターでも新しいタイプとフィールドを選べます - メニューバーに「Webコンソールを開く」と「Webコンソールのトークンをコピー」を追加。設定がコンソールを提供している場合に表示されます。開く場合はトークンでそのままサインインし、トークンのコピーは別のマシンのブラウザーで使うためのものです。リスナーが動作していない場合や
external-http-uiがオフの場合は、項目が無効になり、その理由を表示します。コンソールには「現在」と「履歴」のタブ、接続の詳細ビュー(一致したルール、ルールの出所、ポリシー、アダプター、DNS の出所、プロセス、切断理由、リクエストとレスポンスのボディ)、どの書き換えルールが発火したかを示す「ルール」ページ、「診断」ページ、読み込みに失敗したルールセットの一覧が加わり、9 言語すべてで完全対応になりました - HTTP コントロール API にエンドポイントを追加:
/api/health、/api/events、/api/tailscale、/api/diagnostics/配下のプローブ、/api/connections/export?format=har、/api/diagnostics/bundle、/api/scripts、/api/rewritesと/api/mitm/hostsによる書き換えルールと MitM ホストの管理、ルールテーブルに対してリクエストを試験的に照合するPOST /api/rules/match、再読み込みなしでログレベルを変更するGET|PUT /api/loglevel、プロファイルを適用せずに検証するPOST /api/config/validate - メニューバーに「診断バンドルを保存…」を追加:設定、健全性、この実行のイベント、読み込まれたルールとポリシー、DNS、トラフィック、ログシャードをまとめた秘匿処理済みのアーカイブを、コントロール API を使わずに Chute 内部で作成します。前回の実行のログが必要なときのために、Chute の停止後も利用できます
- HAR エクスポートを追加:記録されたフレームからエンジンが生成するため、ステータスコード、タイムスタンプ、タイミングは実際の値になり、各エントリには
_klの下に選択されたポリシー、一致したルール、書き換えのヒットが含まれます。Web コンソールと/api/connections/export?format=harから利用できます - 接続の詳細ウィンドウに書き換えの帰属を追加:リクエストを最初に変更した URL 書き換え・ヘッダー書き換え・ボディ書き換え・モックレスポンスと、発火した件数を表示します。「詳細をコピー」にはそのすべてが含まれ、「リクエストと履歴」はボディや終了した接続を見るために Web コンソールを開きます
- 「出口 IP 変更」に代わる「ネットワークアドレス変更」通知を追加:この Mac 自身が持つ IPv4 と IPv6 をアドレスファミリーごとに 1 行ずつ表示し、NAT 配下の IPv4 にはその旨を示します。STUN リクエストを 1 回送るのは、NAT 内の IPv4 のときだけです
- 「ネットワークが通信を運んでいない」通知を追加(専用のスイッチあり、既定で有効):接続は受け付けるのにデータが流れないリンクを報告し、macOS 自身がネットワークに到達できないと報告している間は通知しません
- 内蔵言語にフランス語を追加し、言語メニューの各言語の横に国旗を表示するようにしました
改善:
- 設定に
external-http-secretが無い場合、HTTP コントロール API はもう無認証で公開されません。エンジンがトークンを生成し、メニューバーからコピーできます。external-http-secret = noneで匿名アクセスを残せるのはループバックアドレスの場合だけです。また、ワイルドカードの待ち受けアドレスはループバックとして扱われなくなりました - 大きなリストでのルール照合が大幅に高速化:ドメインルールだけで構成されたルールテーブルはハッシュ化されたプランで照合し、事前に読み込まれていない RULE-SET と DOMAIN-SET のペイロードは、接続ごとに読み取る代わりにダウンロード時にインデックス化されます
- UDP フローは 1 回だけ照合:フローの判定を 60 秒間記憶し、後続のデータグラムは 2 回の照合パスとその間の DNS クエリを省略します
- ネットワーク切り替え後の回復を改善:上流の送信元アドレスがどのインターフェースにも無くなったトンネルは、アイドルタイムアウトまでアプリを待たせずに閉じられます
- ルールプロバイダーは、ダウンロードキューが満杯になると拒否されるのではなく順番にダウンロードされるようになり、変換に必要なメモリも大幅に減りました
- ログは 8 MB のシャード単位で書き込まれ(1 回の実行につき最大 8 個、古いものから削除)、各シャードの先頭には実行を示すヘッダーが付きます。「ログ」タブはすべてのシャードを順に追います。また、エンジンは前回の実行が正常に停止したか強制終了されたかを、ログヘッダー、
/api/status、診断バンドルに記録します。loglevel = infoでは、1 MiB 以上を転送した大量フローが切断時に 1 行を記録し、どこで待ったかを示します - すべての構造化エディターが、画面に表示しない内容も保持するようになりました:ポリシーグループはプロバイダー、
policy-path、include-*、フィルター、未知のパラメーターを保持し、既定値のurl=/timeout=は空欄のままにしてグループがproxy-test-url/test-timeoutに従うようにします。ルールは残りのオプションを、[Host]エントリはすべてのアドレスを、ボディ書き換えの行は 2 組目以降のペアを、スクリプトはフォームに表示しないキーを保持します。WireGuard と AmneziaWG のセクションも、AmneziaWG の難読化パラメーターを含めて自身のキーを保持します。このため、設定を開いて保存しただけで内容が書き換わることはなくなりました - 「有効なルール」はマッチャーが実際にたどるテーブル(前置ルール、モジュール、プロファイル、FINAL)を表示し、「ルールをテスト」はキャッシュを読む代わりにエンジンのドライランを実行します
- 公開されているプロファイルをインポートしてもルーティングが失われなくなりました:形式はアドレスが実際に返す内容で判定するため、Clash を返す
.confのサブスクリプションも変換されます。dns-serverは暗号化 DNS の URL を受け付け、リスナー行ではパスワードを指定でき、引用符付きのグループメンバーも保持されます。PASSメンバーは REJECT に変換されずに除外され、未対応のプロトコルやグループタイプはグループ全体を巻き込まずに警告を出します。変換したプロファイルは.confとして保存され、すでに使われている名前の場合は番号が付きます - レイテンシテストが正しい対象を使うようになりました:グループの
test-urlとtest-timeout、プロファイルのproxy-test-url、メンバー自身のtest-urlとexpected-statusがすべて反映され、チェーンされたノードは直接ではなくチェーンを経由して計測されます - 非表示のポリシーグループは、使用中でない限りメニューバーと「プロキシ」ページに表示されません。コントロール API がグローバルを select グループに向けた場合は、メニューバーがそのグループを一覧に表示してチェックを付けます。また、プロファイルを再読み込みすると、実行中に Web コンソールから追加したルールは破棄されます
- ShadowTLS は、
sni=が指定されている場合、sing-box と同様に偽装先のサイトの証明書を検証するようになりました。skip-cert-verify=trueで検証を無効にでき、sni=がない場合は、警告を出して検証をスキップします - パスとして書いた PROCESS-NAME は、Surge のマニュアルが認めているとおり、そのパスまたはバンドルのプレフィックスに一致するようになりました。mihomo の PROCESS-NAME-WILDCARD と PROCESS-PATH-WILDCARD ルールも、破棄されずにインポートされます
- Network.framework の接続を使った大きなアップロードで、メインスレッドが解放するまでデータがメモリに残り続けることはなくなりました
- 「Wi-Fiからのアクセスを許可」チェックボックスが、その働きを示すようになりました(オンの間は、2 つのローカルプロキシのリスナーがすべてのインターフェースで接続を受け付けます)。その間、インターフェースの欄には 0.0.0.0 が表示され、入力したアドレスはオフにしたときのために保持されます
- 拡張モードの案内が、エンジンの実際の動作を説明するようになりました:Chute が DNS 上書きを自ら設定して停止時に元に戻すこと、UDP が一致したポリシー経由で中継されること、ping にはローカルで応答することです
- 内蔵のアップデーターを Sparkle 2.9.6 に更新し、2.x 系のセキュリティ修正を取り込みました。起動時の確認は、アップデートの自動確認が有効な場合にのみ実行されるようになりました
- 日本語、韓国語、ドイツ語、タイ語、ロシア語で約 850 の文字列が英語のまま表示されることはなくなりました。ネットワーク機能拡張の承認プロンプトはプレースホルダーではなく翻訳された文言を表示し、すべての言語で iOS アプリとこのマニュアルの用語を使います
バグ修正:
- 「VIF含めるルート」(
tun-included-routes)が効かなかった問題を修正:拡張モードのタイプが Helper utun と PacketTunnel のどちらでも、指定した CIDR がトンネルのルートに加わるようになり、本来なら物理インターフェース自身のサブネットや別の VPN に取られてしまう範囲も Chute を経由します。トンネルを切り離してしまうエントリ(ループバック、トンネル自身のサブネット、リンクローカル、マルチキャスト、ブロードキャスト、現在のデフォルトゲートウェイ、プレフィックス長 0)は拒否されてログに記録され、プライベートアドレスの範囲は警告付きで受け付けられます。このために特権ヘルパーを更新したため、macOS が一度だけ承認を求めます - 拡張モードの MitM を修正:MitM ルールに一致したホストがタイムアウトまで停止し、HTTPS の書き換え、モックレスポンス、復号キャプチャがアプリのトラフィックに一切適用されていませんでした。また、64 KB を超える復号済みのリクエストやレスポンスは、システムプロキシ経由でも停止していました
allow-wifi-accessが効かない問題を修正:ローカルの HTTP と SOCKS5 リスナーがループバックに留まり、ネットワーク上の他のデバイスから到達できませんでした。このフラグ(およびインポート時の sing-box のallow-lan)で両リスナーが広がり、無効にすると再バインドされます- 書き換えを修正:MitM の HTTP/1.1 でレスポンスのヘッダー書き換えが適用済みと記録されながらクライアントには元のヘッダーが届いており、平文 HTTP ではパスにしか照合されず、完全な URL で書いたパターンが一致しませんでした。モックレスポンスはリクエストヘッダーから応答を組み立てており、HTTP/2 では Map Local の
status-code=が無視され、再シリアライズされた HTTP/1.1 レスポンスの理由句が空になっていました - ルール照合を修正:スニッフィングで名前が得られると、
no-resolve付きの IP ルールが IP リテラル宛ての接続をスキップしていました。RULE-SET ペイロードで内容の後にオプションを持つ行が捨てられ、RULE-SET,<name>,<policy>,no-resolveからno-resolveが失われ、HOSTNAME-TYPE が一度も一致しませんでした。AND / OR / NOT 内の RULE-SET と DOMAIN-SET は常に false、SCRIPT は常に true と評価され、GEOIP と IP-ASN のUNKNOWNは一致せず、論理ルールでプロキシに振り分けられたドメインも実際に解決されていました。また、Host ヘッダー内の角括弧付き IPv6 リテラルがホスト名として読まれていました PROTOCOL,TCPとPROTOCOL,UDPがまったく一致しなかった問題を修正。AND ルールで QUIC をブロックする一般的な方法が機能するようになりました。PROTOCOL,HTTPは、ローカル HTTP プロキシを通る平文のリクエストにも一致するようになりました。システムプロキシのトラフィックはこの経路で届きますblock-quicが Surge の値のうち 1 つしか受け付けず、他の値ではまったく QUIC がブロックされなかった問題を修正- IP-ASN ルールがまったく機能しなかった問題を修正:
~/Chute/Contentにある GeoLite2 データベースが無視され、Chute 自身も ASN データベースを同梱していませんでした。現在は同梱しています - ルールセット内の PROCESS-NAME と PROCESS-PATH の行が小文字に変換され、
Chromeを指定したルールが一致しなかった問題を修正 - select グループが先頭以外のメンバーに設定された状態で Chute を起動すると「ポリシーグループが切り替わりました」通知が出て、その後の再構築がフラッピング警告を引き起こしていた問題を修正。記憶された選択が無いグループは、プロファイルの
default=に従います - スクリプト API を修正:
$klne.getPolicyGroups()とselectPolicy()が初回呼び出し時に例外を投げなくなり、reloadConfiguration()が実際に再読み込みを行い、getActiveConnections()が実際のホスト、ポート、ID を返し、closeConnection()が実際に接続を閉じ、startURLTest()が実際にテストを開始するようになりました。また、requires-bodyを指定した before-send スクリプトがボディを受け取れるようになりました [Replica] hide-crashlytics-requestが解析されるだけで適用されていなかった問題、keyword-filterがキーワードを含むかどうかを確かめずにホスト名全体と比較していた問題、external-http-controller = *:9090と:::9090が拒否されていた問題、optimistic-dns = falseでも期限切れのレコードを返していた問題を修正- XHTTP が高負荷時にクラッシュし、最初の書き込みの後で止まってそれを経由する TLS ハンドシェイクが完了しなかった問題を修正し、HTTP/1.1 上の stream-up のパディングも修正
- Hysteria2 が 1 つの QUIC DATAGRAM フレームに収まらない UDP データグラムを破棄し、アプリの HTTP/3 が TCP に戻っていた問題と、Hysteria2 のメンバーを含む url-test グループがクラッシュしていた問題を修正
- 拡張モードを再起動すると前回と同じ最初のローカルポートと TCP シーケンス番号を再利用し、古い接続を保持したままの WireGuard ピアからリセットが返されていた問題を修正
- WireGuard が 2 か所から同時に開始されるとクラッシュしていた問題、Shadowsocks 2022 がレスポンスの末尾を失っていた問題、SSH が 30 秒間停止し、アイドル時に CPU コアを 1 つ使い切っていた問題、REALITY / uTLS 接続が不正なレコードの後も閉じずに破損したダウンロードを渡していた問題を修正
- Tailscale を修正:同じネットワークに 2 つのインターフェースを持つ Mac で、もう一方のアドレスから応答されたハンドシェイクが完了せず、Tailscale の停止後には接続が止まったままになっていました
- 再読み込み後に 2 つのローカルリスナーが停止したままになる問題(予期せず停止したリスナーは再起動されるようになりました)、HTTP プロキシが認証のないリクエストに 407 と
Proxy-Authenticateで応答しなかった問題、旧来の XTLS のデッドロック、WebSocket トランスポートが Ping と Close を無視していた問題を修正 - macOS 10.15 でエンジンの起動時にクラッシュする問題を修正
- スクリプトエディターから保存すると、カンマを含むスクリプトの値(cron の
0 8,20 * * *や JSON の引数など)が最初のカンマで切れていた問題と、名前に空白やカンマを含むポリシーグループのメンバーが引用符なしで保存されていた問題を修正 - 各種の安定性とパフォーマンスの改善
バージョン 1.1.3 (230)
新機能:
- セットアップアシスタントを追加:初回起動時に、何もない状態から動作する設定までを案内します——サブスクリプションや共有リンクのインポート、サーバー情報の手入力、または手元にある設定ファイルの指定——そのうえで特権helperをインストールし、選択したトラフィックの引き受け方法を適用し、完了前に接続を検証します。以降もメニューからいつでも再度開けます
- 共有リンクのインポートを追加(
vmess://、ss://、ssr://、trojan://、vless://、hysteria2://、shadowtls://):リンクはローカルで変換され、共有リンクの一覧(base64でラップされたものを含む)を返すサブスクリプションも受け付けます - インポートシートにクリップボード検出を追加:クリップボード上のリンクは黙って入力されるのではなく、「使用」ボタンとして提示されます
chute://URLスキームを追加。Webページ上のインポートリンクをChuteで直接開けます。アドレスは形式を検査し、確認を経てから取得されます- AmneziaWGプロトコルのサポートを追加。難読化パラメータ(Jc/Jmin/Jmax、S1–S4、H1–H4、I1–I5)のエディタを含みます
- ポリシーエディタにTrojan、VMess、VLESS向けのXHTTPトランスポートを追加——mode、path、host、リクエストヘッダーとパディング、postサイズと間隔の上限、4つのXMUX境界、および独立したダウンロードエンドポイント
- ポリシーエディタにgRPCトランスポートを追加。service nameとmulti-modeを設定できます
- TLSポリシーにECH(Encrypted Client Hello)設定を追加:有効化スイッチ、固定の
ech-config、ech-public-nameによるカバー名の上書き - ポリシーごとのクライアントフィンガープリント(uTLS)と、一般設定でのプロファイル全体の既定値を追加
- Shadowsocksの暗号化方式にAEGIS-128LとAEGIS-256を追加
- TLS 1.3向けのX25519MLKEM768ポスト量子ハイブリッド鍵交換を追加
- VMessの暗号化方式の選択、MASQUEの証明書フィンガープリント固定、各ポリシーのUDP無効化スイッチ、およびHTTP系、Shadowsocks、ShadowsocksR、Trojan、ShadowTLS、Hysteria2の多重化スイッチを追加
- Tailscaleの出口ノード/サブネットルーターとしての提供を追加:このMacとその背後のネットワークを広告し、メニューバーから提供を切り替え、管理者が承認した際に通知を受け取り、トラフィックを担っている間はMacをスリープさせない設定も選べます
- プロファイル一覧に削除を追加:Chuteが管理するプロファイルはゴミ箱へ移動し、その場でインポートしたファイルは登録解除されるだけで元の場所に残ります
- 設定エラーレポートウィンドウを追加——行番号、重大度、エラー内容、元の行を並べたサイズ変更可能な一覧で、行の⌘Cコピーと「すべてコピー」に対応——画面の高さを超えることもあった従来のアラートを置き換えます
- [URL Rewrite]にMap Remoteを追加:
headerタイプのルールがリクエストラインと上流ホストを書き換えるようになり、キャプチャグループの展開にも対応します - モジュール引数(
#!arguments)を追加。同じモジュールを異なる値で再利用できます
改善:
- ポリシーエディタをプロトコルごとのフォームとして再構築:各プロトコルが自分のフィールドを持ち、無関係なプロトコルと入力欄を共有しなくなりました。プロトコルを追加しても以降の種別番号がずれません
- 保存時、ポリシーエディタは対応するフィールドを持たないオプション(ECH、ALPN、証明書ピンニング、
test-url、udp-relay、tfo)を保持するようになりました - TUIC、Hysteria2、MASQUE、AnyTLS、SSHからTCP Fast Openスイッチを削除しました。これらのアダプタは元々この設定を読み取りません。すでに
tfoを持つポリシーではそのまま保持されます - 公開されているClash、sing-box、Surge設定のインポートを改善。SurgeのMitM/Panel/Ponteセクション、各種REJECT記法、モジュール行、[SSID Setting]セレクタに対応します
- macOSが認証を求める前に、Chuteが特権helperの役割を説明するようになりました。システムのダイアログが文脈なく現れることはなくなります
- 初回起動時の画面順序を整理:ウィンドウを表示する前にライセンスを読み込み、通知の許可要求はセットアップアシスタントが閉じるまで待ちます
- 何も設定されていない場合、メニューバーはファイル選択だけでなく環境設定、メインウィンドウ、インポートの入口を提供します。Dashboardのスイッチは1分後に失敗を報告するのではなく、何が足りないかを直接伝えます。この状態のインストールは新しいメインウィンドウで起動します
- プロファイルの空状態とURLインポート項目が共有リンクに言及するようになり、ヘルプウィンドウはプロキシが有効になるまでに実際に何が必要かを説明します
- データパス、ルールマッチング、UDP処理のスループットとCPU効率を改善
- Macがネットワークを切り替えた後、置き換えられた古い経路の接続が再利用されなくなりました
バグ修正:
- 再起動後に有効なライセンスが不正と判定される問題を修正。一度の一時的な検証失敗でプロキシが停止し、ライセンスウィンドウが開いていました
- 「ライセンスを取り消す」の確認を押しても何も起きない問題を修正
- 設定エラーの確認でキャンセルを押しても壊れた設定が読み込まれて起動する問題、および破棄が既定ボタンになっていた問題を修正
- REALITY有効時にVLESSの
flowが失われる問題を修正し、宣言するだけだったXTLS Visionのフレーミングを実際に実装しました - エディタが表示できない種別のポリシーが、保存時にHTTPとして書き換えられる問題を修正
- 設定セクションを参照するWireGuard/AmneziaWGポリシーにポート0が書き込まれる問題を修正
- WebSocketスイッチがオフでも
ws-pathとws-headersが書き込まれる問題を修正 - インターフェース設定ページがスクロールしない問題を修正
- Shadowsocksの
obfs=httpが不正なリクエストラインを送信し、トンネルは接続済みなのに何も流れない問題を修正 - Shadowsocks 2022でペイロードが複数回の読み取りに分割された際に同期を失う問題を修正し、chacha20-poly1305のUDPフォーマットを訂正
[Host]のエイリアスが一度も一致しない問題を修正。エイリアス名へのAクエリが上流に流れ、NXDOMAINが返っていました- QUICのコネクションマイグレーションが
PROTOCOL,QUICルールとblock-quicオプションをすり抜ける問題を修正 - WireGuardがセッション再確立中にキューへ入ったパケットを破棄する問題を修正
- モジュールの
#!argumentsの説明行が、隣接する引数の既定値を上書きする問題を修正 - 各種の安定性とパフォーマンスの改善
バージョン 1.1.2 (210)
新機能:
- Tailscaleを組み込みプロキシタイプとして追加:Chute内で直接Tailscaleアカウントを設定し、tailnetに参加してTailscaleノード経由でトラフィックを転送できます。別のクライアントは不要です
- Tailscale設定ペインを追加:auth keyを安全に入力、接続を検証、tailnetノードを一覧表示し、出口ノードを切り替えできます
- DashboardにTailscaleステータスウィジェットを追加し、メニューバーから出口ノードを切り替えするショートカットを追加
- プロキシ診断のシステム通知を追加:未解決のポリシー参照、出口IPの変更、Tailscaleのイベントを通知し、設定でタイプごとにオン/オフを切り替えできます
- ポリシーエディタにMASQUEプロキシタイプを追加
- simple-hostnamesをデフォルトとし、no_proxyを自動エクスポートするbypass-listテーブルエディタを追加
- Trafficパネルで接続をアプリごとにグループ化して表示
- サポートするmacOS最低バージョンを10.14(Mojave)に引き上げ
改善:
- macOSのTUNスループットを向上
- 特権helper、システムプロキシ、DNS/TUNライフサイクルの安定性を向上
- TailscaleおよびWireGuardの接続安定性とスループットを向上
- システム拡張とVPNの自動継続の信頼性を向上
- 一時的なサーバーエラーを失効と誤判定しないようライセンス検証を改善
- 設定ファイル名をサニタイズし、無効なパス文字による読み込み失敗を防止
バグ修正:
- helperが既に実行中のVPNトンネルに再アタッチする問題を修正
- 言語切り替えの同時実行によるクラッシュを修正
- VPNトンネルが2回目の開始で失敗する問題を修正
- アップロード速度のスパークラインがダウンロードデータを描画していた問題を修正
- 各種の安定性とパフォーマンスの改善
バージョン 1.1.1 (202)
- Dashboardを備えた新しいメインUI: グラスモーフィズムデザイン、リアルタイム速度スパークラインチャート、カスタマイズ可能なウィジェットカード、マイクロインタラクションアニメーションを特徴とする再設計された4タブウィンドウ(Dashboard、Traffic、Config、Log)
- 新しいDashboardウィジェット: プロキシ状態、TUNモード、稼働時間、アクティブ接続数、ダウンロード/アップロードスループット、現在の設定プロファイル
- 設定プロファイルの切り替えと整理のための新しいプロファイル管理タブ
- 強化されたセッションフィルタリングとログ表示を備えたアップグレードされたトラフィックインスペクター
- 新しいVPN拡張モード: 従来のヘルパーutunに加えてPacketTunnelシステム拡張オプション、環境設定で選択可能
- 特権ヘルパーデーモンをSMJoblessからSMAppService(macOS 13以上)に移行
- ネットワーク拡張をOSSystemExtensionRequestアクティベーションフローでシステム拡張に移行
- Body Rewrite、Script、Module、WireGuardセクションの設定エディターを追加
- ルールDNS診断ツールを追加
- 主要機能を拡張したKLNEKitカーネルを更新
- マルチレイヤーパディング難読化を備えたAnyTLSプロトコル対応を追加
- TUICプロトコル対応を追加(QUICベースの多重化TCP/UDPリレー)
- Brutal輻輳制御を備えたHysteria2プロトコル対応を追加
- WireGuardプロトコル対応を追加(インラインおよびセクションベースの設定)
- TLSフィンガープリントカモフラージュを備えたShadowTLSプロトコル対応を追加
- VLESS REALITY検閲対策対応を追加
- Shadowsocks 2022暗号化メソッドを追加(2022-blake3-aes-128/256-gcm、chacha20-poly1305)
- VMessおよびVLESSプロトコル向けgRPCトランスポートを追加
- DNS-over-TLS(DoT)、DNS-over-QUIC(DoQ)、DNS-over-HTTP/3(DoH3)対応を追加
- ローカルDNSマッピングでドメインごとのDoT/DoQ/DoH3割り当てを追加
- JavaScriptスクリプトシステムを追加(7種類のスクリプトタイプ: rule、dns、request、response、generic、scheduled、dns-ttl)
- ボディ書き換えを追加: 正規表現(キャプチャグループ対応)またはJSONPathによるHTTPリクエスト/レスポンスボディの検索と置換
- モックレスポンスを追加: マッチしたリクエストにモックデータまたはMap Localコンテンツを返す
- プロトコルスニッフィングを追加: 実際の接続プロトコルを検出してそれに応じてルールを適用
- 5種類のイベントタイプ(connection-failure、proxy-unavailable、traffic-surge、config-update-failure、policy-group-switch)を持つ通知レポートを追加
- ランタイム監視と管理のためのHTTPコントロールAPIと組み込みWeb UIを追加
- モジュール式設定管理のためのモジュールシステム(.sgmodule)を追加
- 動的プロキシリスト更新のためのプロキシプロバイダーを追加
- ラウンドロビン、コンシステントハッシュ、スティッキーセッション戦略を備えたロードバランスポリシーグループを追加
- フォールバックポリシーグループ対応を追加
- IP-ASNルールタイプを追加(組み込みMaxMind GeoLite2 ASNデータベース)
- 論理結合ルールを追加: AND、OR、NOT
- 高度なマッチングルールを追加: SUBNET、HOSTNAME-TYPE、IN-TYPE、IN-USER、IN-NAME
- 新しいドメインベースルールタイプを追加: DOMAIN-WILDCARD、DOMAIN-REGEX、DOMAIN-SET
- PROTOCOLルールタイプを追加(検出されたプロトコルによるマッチ: HTTP、HTTPS、TLS、TCP、UDP、QUIC、STUN、DNS、DOH、DOQ)
- JavaScriptベースのカスタムマッチング用のSCRIPTルールタイプを追加
- 新しいプロセスルールタイプを追加: PROCESS-PATH、PROCESS-NAME-REGEX
- SRC-PORTルールタイプを追加
- ルールのextended-matchingおよびrequires-resolveオプションを追加
- URL書き換え拒否モードを追加: reject-200、reject-img、reject-dict
- ヘッダー書き換えのレスポンス方向対応を追加(header-response-add/del/replace)
- URL書き換えMap Localテンプレート変数対応を追加
- 選択的トラフィック記録のためのレプリカ対応を追加
- 自動更新間隔付きの管理設定対応を追加
- exclude-simple-hostnamesオプションを追加
- 指定されたIP範囲をダイレクトルーティングするBypass TUNオプションを追加
- interrupt-exist-connectionsグローバルオプションを追加
- network-frameworkオプションを追加
- disable-db-recordオプションを追加
- ポリシーグループオプションを拡張: expected-status、hidden、idle-timeout、lazy
- ルールシステムを6種類から37種類に拡張
- TUNスループットを最適化(UTUN_OPT_MAX_PENDING_PACKETS)
- IPv6のデフォルト値を修正(false → true)
- ログレベルのデフォルトを修正、noneおよびfatalレベルを追加
- Shadowsocks/ShadowsocksRの命名一貫性を修正
- 各種の安定性とパフォーマンスの改善
バージョン 1.0.7 (163)
- KLNEKitを更新
- SSHポリシー対応を追加
- UDP問題を修正
- バグ修正
バージョン 1.0.5 (155)
- KLNEKitを更新
- IPv4内部アドレスの問題を回避するためTUNネットワークを198.18.0.0/15に変更
- メニューアイコンのヘルプ機能を追加
- TUNのIPv6対応を実装
- TUNのping対応を有効化
- Dockメニュー消失問題を修正
- Chute終了後にプロキシ設定が復元されない問題を修正
- TUNネットワークを修正
- アプリ更新コンポーネントを修正
- バグ修正
バージョン 1.0.4 (145)
- VLESSプロトコル対応を追加
- VLESS用XTLSを追加
- ローカルIPの表示を追加
- Chute DashboardのUDPトンネル対応を追加
- 組み込みDNSサーバーを改善
- FINALルール処理を修正
- UDPトンネルを修正
- バグ修正
バージョン 1.0.3 (132)
- macOS 10.13対応(Network.framework対応なし)
- 設定ウィンドウのプロキシセクション読み込みを修正
- HTTPリクエストエラーを修正
- バグ修正
バージョン 1.0.2 (102)
- DNSサーバーを再構築
- 拡張機能のインストールを再構築
- バグ修正
バージョン 1.0.0 (88)
- 初回リリースバージョン
- TUN対応を追加
[ベータ] バージョン 0.4.9 (53)
- ルール順序を修正。
- 画面上のQRコードスキャン対応を追加。
- ポリシーグループを修正。
[ベータ] バージョン 0.4.5 (32)
- バグ修正。
[ベータ] バージョン 0.3.5 (25)
- バグ修正。
[ベータ] バージョン 0.3.0 (20)
- バグ修正。
[ベータ] バージョン 0.2.0 (8)
- 初回リリース。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。