その他オプション
[General]
ipv6 = true
loglevel = notify
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
tun-included-routes = 192.168.1.12/32
共通オプション
完全なIPv6サポートを有効にする(デフォルト: true)
ipv6 = true
loglevel(デフォルト: warning)
loglevel = notify
none、fatal、warning、notify、info、verboseのいずれか。verboseを日常使用で有効にすることは推奨されません。パフォーマンスが大幅に低下するためです。
skip-proxy
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
iOS版では、このオプションはこれらのドメイン/IP範囲への接続をChuteプロキシではなくChute TUNで処理するよう強制します。macOS版では、「システムプロキシとして設定」が有効な場合にこれらの設定がシステムに適用されます。このオプションは一部のアプリとの互換性問題を修正するために使用されます。
- 単一のドメインを指定するには、ドメイン名を入力します(例: apple.com)。
- ドメイン上の全てのWebサイトを指定するには、ドメイン名の前にアスタリスクを使用します(例: *apple.com)。
- ドメインの特定の部分を指定するには、各部分を指定します(例: store.apple.com)。
- IPアドレスでホストまたはネットワークを指定するには、192.168.2.11のような特定のIPアドレス、または192.168.2.*や192.168.2.0/24のようなアドレス範囲を入力します。
注意: IPアドレスまたはアドレス範囲を入力した場合、そのアドレスを使用してそのホストに接続する場合にのみプロキシをバイパスでき、そのアドレスに解決されるドメイン名でホストに接続する場合にはバイパスできません。
プロキシサーバーのリッスン
interface = 127.0.0.1
port = 8118
socks-interface = 127.0.0.1
socks-port = 8119
interface / portはHTTPプロキシサーバーのリッスンアドレスとポートを制御します(デフォルト127.0.0.1:8118)。socks-interface / socks-portはSOCKS5プロキシサーバーを制御します(デフォルト127.0.0.1:8119)。
互換性エイリアス:
doh-serverはdohのエイリアスとして受け付けられます。http-listen/socks5-listen(例:0.0.0.0:6152、[::]:6153、またはポート番号のみ)は上記のinterface/port設定にマッピングされます。ワイルドカードのリッスンホスト(0.0.0.0、::、*)はallow-wifi-access = trueも設定します。
インバウンドプロキシ認証
http-auth = username:password
ChuteのHTTPおよびSOCKS5プロキシサーバーを使用する前に、クライアントに認証を要求します。この行を繰り返して複数の認証情報を許可できます。
システムリクエストをバイパス
bypass-system = true
有効にすると、システムプロセスから送信されたリクエストはChuteの処理をバイパスします。
デフォルト:
true。
常に実IPを使用
always-real-ip = *.example.com, tracker.example.org
ChuteがハイジャックされたDNSクエリに対して偽のIPアドレスを提供する場合(hijack-dnsを参照)、このカンマ区切りリストにマッチするホスト名には、代わりに常に実際に解決されたIPアドレスが返されます。ワイルドカードがサポートされています。
既存の接続を中断
interrupt-exist-connections = true
有効にすると、任意のポリシーグループで選択されたポリシーを(URLテスト、フォールバック、ロードバランス、SSID、または手動選択によって)変更した際に、古いポリシーを使用していた既存の接続を正常に切断します。これにより、接続が古いプロキシに残り続けることなく、新しく選択されたプロキシを即座に使用するようになります。
影響を受ける各接続は、強制切断される前に3秒のタイムアウトで正常に閉じられます。
デフォルト:
false。これはグローバル設定であり、全てのポリシーグループに影響します。
Network Framework(macOS / tvOS)
network-framework = true
アウトバウンド接続にApple Network.frameworkを有効にします。Network.frameworkを使用すると、サポートされているプラットフォームでより良いパフォーマンスと最新のTLSスタック統合が得られます。
デフォルト: macOSでは
true、iOSとtvOSではfalse。
単純なホスト名を除外
exclude-simple-hostnames = true
有効にすると、単純なホスト名(ドットを含まない単一ラベル名、例: localhost)へのリクエストはプロキシルールをバイパスし、ローカルで解決されます。これにより、ローカルネットワーク名に対する不要なDNSルックアップを回避できます。
Chute Macでは、初回起動時に一度だけ実行されるマイグレーションによってこのオプションがデフォルトで有効になります。ユーザーが明示的にオフに設定した場合は、その設定が尊重されます。
デフォルト:
false。
データベース記録を無効にする
disable-db-record = true
有効にすると、Chuteはトラフィックレコードのローカルデータベースへの書き込みを停止します。これによりパフォーマンスが向上しストレージ使用量が削減されますが、Chute Dashboardでトラフィック履歴が利用できなくなります。
デフォルト:
false。
メニューバー速度表示(Macのみ)
menu-bar-show-speed = true
有効にすると、Chute Macは現在のアップロードおよびダウンロード速度をメニューバーに表示します。
デフォルト:
false。
他のDNSサーバーをハイジャック
hijack-dns = 8.8.8.8:53
デフォルトでは、ChuteはChute DNSアドレス(198.18.0.2)に送信されたDNSクエリに対してのみ偽のIPアドレスを返します。標準DNSに送信されたクエリは単に転送されます。
一部のデバイスやソフトウェアは常にハードコードされたDNSサーバーを使用します(例えば、Google Speakersは常に8.8.8.8を使用します)。このオプションを使用してクエリをハイジャックし、偽のアドレスを取得できます。
hijack-dns = *:53を使用して全てのDNSクエリをハイジャックすることもできます。
除外ルート
tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
Chute VIFはTCPおよびUDPプロトコルのみを処理できます。このオプションを使用して特定のIP範囲をバイパスし、全てのトラフィックを通過させます。
注意: このオプションは拡張モードのVIF(utun)タイプでのみ機能し、PacketTunnel VPNタイプを使用する場合は効果がありません。Chuteプロキシサーバーによって処理されるリクエストは影響を受けません。'skip-proxy'と'tun-excluded-routes'を組み合わせて、特定のHTTPトラフィックがChuteをバイパスするようにしてください。
このオプションはシステムエラーENOMEM(メモリを割り当てられません)を引き起こす可能性があります。これはiOSシステムのバグのようです。可能であればこのオプションを使用しないでください。
含めるルート
tun-included-routes = 192.168.1.12/32
デフォルトでは、Chute VIFインターフェースは自身をデフォルトルートとして宣言します。しかし、Wi-Fiインターフェースがより小さいルートを持っているため、一部のトラフィックがChute VIFインターフェースを通過しない場合があります。このオプションを使用してより小さいルートを追加します。
注意: このオプションは拡張モードのVIF(utun)タイプでのみ機能し、PacketTunnel VPNタイプを使用する場合は効果がありません。
プロトコルスニッフィング
sniffing-enabled = true
sniffing-timeout = 100
Chuteは初期バイトを検査することで接続の実際のプロトコルを検出できます。これにより、非HTTPインバウンド接続でもPROTOCOL,TLS,Proxyのようなルールが正しく機能します。
sniffing-enabled(デフォルト: false)
sniffing-enabled = true
TCP接続のプロトコル検出を有効にします。
sniffing-timeout(デフォルト: 100ms)
sniffing-timeout = 200
プロトコルを判断するために初期データを待つ最大時間(ミリ秒)。遅い接続でプロトコル検出が失敗する場合は、この値を増やしてください。
QUICのブロック
block-quic = auto
検出されたQUIC(HTTP/3を含む)トラフィックをChuteが拒否するかどうかを制御します。QUICはUDP上で動作するため、ChuteのHTTP MitMでは復号できません。QUICを拒否すると、対応するクライアントにTCPでの再試行を促し、TCPベースのプロキシ処理や、設定済みの場合はHTTPS復号を適用できるようになります。
| 値 | 動作 |
|---|---|
off |
QUICのグローバルブロックを適用しません(デフォルト)。検出されたQUICトラフィックは通常のルーティングルールに従います。 |
on |
DIRECTにルーティングされたトラフィックを含め、検出されたすべてのQUICフローを拒否します。 |
auto |
最終的な送信ポリシーがプロキシの場合にのみ、検出されたQUICを拒否します。DIRECTにルーティングされたトラフィックは許可され、REJECTにルーティングされたトラフィックはそのルールによって引き続き拒否されます。 |
TUN経由のトラフィックでは、拒否されたQUICフローにICMP/ICMPv6 Port Unreachableメッセージを返すため、対応するクライアントはQUICのタイムアウトを待たずにTCPへフォールバックできます。
block-quicのQUIC検出は自動的に行われ、sniffing-enabledは必要ありません。sniffing-enabledはTCPのプロトコルスニッフィングを制御します。QUICフローをルール単位で処理する場合は、PROTOCOL,QUIC,...ルールを使用してください。
TUNをバイパス
bypass-tun = 192.168.0.0/16, 10.0.0.0/8
skip-proxyと似ていますが、TUN/VIFルーティングレベルで動作します。これらのIP範囲への接続はTUNインターフェースを完全にバイパスし、システムネットワークスタックを直接通過します。
注意: このオプションは拡張モードのVIF(utun)タイプでのみ機能します。PacketTunnel VPNタイプを使用する場合は効果がありません。
拒否時にエラーページを表示
show-error-page-for-reject = true
有効にすると、Chuteは拒否されたリクエストに対して接続を単に切断する代わりに、ユーザーフレンドリーなエラーページを返します。
楽観的DNS
optimistic-dns = false
有効にすると、Chuteはバックグラウンドでレコードを更新しながら、キャッシュされたDNS結果を即座に返します。これにより、古いDNSレコードを返す可能性と引き換えに接続レイテンシが削減されます。
デフォルト:
true。無効にするにはoptimistic-dns = falseを設定してください。
Wi-Fiアクセスを許可
allow-wifi-access = true
同じWi-Fiネットワーク上の他のデバイスがChuteのHTTP/SOCKS5プロキシポートにアクセスできるようにすることを意図しています。このスイッチはChuteアプリに表示され、値は設定に保持されます。
注意: カーネルは現在このフラグを保存しますが、まだ強制していません。
管理設定
#!MANAGED-CONFIG https://example.com/config.conf interval=86400 strict=false
先頭行に #!MANAGED-CONFIG ヘッダーを持つ設定は、そのURLから自動的に再取得されます。ヘッダーのパラメータと更新の動作についてはマネージド設定を参照してください。
レプリカ / トラフィック記録
replica = true
[General] の replica キー(replica = true)がトラフィック記録を有効にします。[Replica] セクションは Chute Dashboard に表示される内容のフィルタリングを担当し、そのキーは Replica に記載されています。
外部コントローラーアクセス(Chute Dashboard)
external-controller-access = password@0.0.0.0:6155
Chute Dashboardが使用するリモートコントロールサーバーを起動します。値はpassword@host:portです。パスワードの前にオプションでユーザー名を付けられます(user:password@host:port)。iOSでは、付随するUSBチャンネルがport + 1で開かれます(macOSでは開かれません)。
HTTPコントロールAPIとWeb UI
[General]
external-http-controller = 127.0.0.1:9090
external-http-secret = your-secret-token
external-http-ui = true
external-http-cors = false
Chuteは、ClashやSurgeのダッシュボードと同様の組み込みHTTPコントロールAPIとWebベースの管理UIを提供します。APIはRESTエンドポイントを通じてカーネルステータス、トラフィック、接続、DNS、ポリシー制御、設定管理を公開します。
external-http-controller(デフォルト: 無効)
external-http-controller = 127.0.0.1:9090
HTTPコントロールサーバーのアドレスとポート。ローカルのみのアクセスには127.0.0.1を使用してください。特定の非ループバックアドレス(例えば192.168.1.5:9090)にバインドするには、空でないexternal-http-secretが必要です — 設定されていない場合、サーバーは起動を拒否し、警告をログに記録します。なお、0.0.0.0は全てのインターフェースでリッスンするにもかかわらず、このチェックを通過してしまいます: 空のsecretと組み合わせると、API全体が認証なしでネットワークに公開されるため、0.0.0.0にバインドする場合は必ずsecretを設定してください。
external-http-secret(デフォルト: 空)
external-http-secret = your-secret-token
API認証に使用されるBearerトークン。リクエストにはヘッダーAuthorization: Bearer <secret>を含める必要があります — トークンはこのヘッダーでのみ受け付けられ、クエリパラメータでは決して受け付けられず、比較は定数時間で行われます。secretが空の場合、全てのエンドポイントは認証なしで提供されます。認証に失敗すると401が返され、レスポンスは{"ok": false, "error": {"code": "unauthorized", "message": "missing or invalid token"}}です。認証で保護されるのは/api/*パスとClash互換エイリアスのみで、Web UIの静的アセットは常に提供されます。
external-http-ui(デフォルト: true)
external-http-ui = true
有効にすると、Chuteはコントローラーアドレスで組み込みWeb UIを提供します。Web UIは概要ダッシュボード、接続管理、DNS検査、トラフィック監視、ポリシー制御、設定編集を提供します。APIを有効にしたままUIを無効にするにはfalseに設定します。
external-http-cors(デフォルト: false)
external-http-cors = true
APIレスポンスにCORS(Cross-Origin Resource Sharing)ヘッダーを有効にします。Web UIやサードパーティツールが異なるオリジンからAPIにアクセスする必要がある場合に便利です。
APIエンドポイント:
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET |
/api/status |
ランタイムステータス、ポート、稼働時間 |
GET |
/api/traffic |
グローバルおよびポリシーごとのトラフィックカウンター |
GET |
/api/connections |
現在のアクティブな接続 |
DELETE |
/api/connections/:id |
接続を閉じる |
GET |
/api/connections/history |
履歴接続レコード |
GET |
/api/connections/processes |
プロセスごとの接続統計 |
GET |
/api/connections/:id/request |
接続のキャプチャされたリクエストデータ |
GET |
/api/connections/:id/response |
接続のキャプチャされたレスポンスデータ |
GET |
/api/dns |
DNSキャッシュレコード |
DELETE |
/api/dns/cache |
DNSキャッシュを消去 |
DELETE |
/api/dns/records/:domain |
単一のDNSレコードを削除 |
GET |
/api/config |
現在の設定 |
PUT |
/api/config |
設定を再読み込み |
GET |
/api/policies |
ポリシーグループと現在の選択 |
PUT |
/api/policies/:group |
ポリシーグループの選択を変更 |
PUT |
/api/mode |
アウトバウンドモードを設定 |
GET |
/api/features |
機能スイッチの状態 |
PUT |
/api/features/mitm |
MitMを切り替え |
PUT |
/api/features/record-traffic |
トラフィック記録を切り替え |
GET |
/api/rules |
読み込まれたルール |
GET |
/api/logs |
最近のログエントリ |
エンドポイントの注意点:
GET /api/connectionsはlimit(正の整数、デフォルトおよび最大は1000)とcursor(カーソルより大きいidを持つ接続のみを返す)を受け付けます。レスポンスのdataにはconnections、total、page_size、has_moreが含まれ、さらにページがある場合はnext_cursorも含まれます。GET /api/connections/historyはlimit(デフォルト100、最大1000)とcursor/before(同義。両方を渡すと拒否されます)を受け付けます。GET /api/connections/:id/requestと.../responseは{"connection_id": <id>, "data": "<base64>"}を返します。2 MiBを超えるキャプチャは413を返します。GET /api/configは、機密値(http-auth、external-http-secret、ca-p12、ca-passphrase、WireGuardの鍵など)を<redacted>に置き換えた設定を返します — 結果をそのままPUT /api/configに送り返さないでください。プレースホルダーがそのまま設定に書き込まれてしまいます。PUT /api/configはJSON{"configuration": "<全文>"}、または生の設定テキストをリクエストボディとして受け付けます(上限1 MB)。成功するとカーネルが再読み込みされます — 実行されていなかった場合は起動します。PUT /api/policies/:groupは、ボディのキーpolicy、name、selected、selectのうち最初に存在するものから選択値を取ります。値はポリシー名でも、数値インデックスの文字列でも構いません。特殊なグループ名GLOBALはグローバル選択ポリシーを設定します。PUT /api/modeはJSON数値を必要とします:{"mode": 0}—0はルール、1は直接接続、2はプロキシです。PUT /api/features/mitmとPUT /api/features/record-trafficは{"enabled": true}を取ります。GET /api/logsはsince(Unix秒)を受け付けます。インメモリバッファは最新の1000エントリを保持し、各エントリは{timestamp, level, section, message}です。
例 — ステータスを読み取り、ポリシーグループを切り替える:
curl -H "Authorization: Bearer your-secret-token" http://127.0.0.1:9090/api/status
{"ok":true,"data":{"running":true,"outbound_mode":0,"mitm":false, ...}}
curl -X PUT -H "Authorization: Bearer your-secret-token" \
-d '{"policy": "ProxyB"}' http://127.0.0.1:9090/api/policies/MainGroup
{"ok":true,"data":{"outbound_mode":0,"selectable_groups":[...], ...}}
注意: この機能はデフォルトで無効です。全てのレスポンスは、成功時には
{"ok": true, "data": {...}}、エラー時には{"ok": false, "error": {"code": "...", "message": "..."}}のエンベロープを使用します。リクエストボディの上限は1 MBです。
PUTエンドポイントはPATCHも受け付けます。サードパーティのダッシュボード向けに、Clash互換のエイリアスパスが利用可能です:/version、/traffic、/connections、/configs、/proxies、/rules— パスには到達できますが、レスポンスはClashのスキーマではなくChute自身のエンベロープとフィールド名を使用するため(/versionは{"name", "run_id"}のみを返します)、Clashダッシュボードはそのままでは動作しません。
クライアントフィンガープリント
global-client-fingerprint = chrome
独自の fingerprint を持たない すべてのポリシーにTLSクライアントフィンガープリントを設定します。ポリシー側の値が 常に優先されるため、これは上書きではなくデフォルト値です。
指定できる値は chrome、firefox、safari、ios に加えて edge、360、qq、
android、random で、後者はいずれもChromeとして扱われます。認識できない値は
無視され、プラットフォームのTLSスタックが使用されます。
デフォルト: 空(プラットフォームのTLSスタック)。読み取るのはTrojan、VMess、VLESS、 ShadowTLSのポリシーだけです。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。