ルール
Chuteはカスタマイズされたルールに応じて、リクエストを別のプロキシサーバーに転送するか、ホストに直接接続することができます。
優先順位
ルールは設定ファイルに現れる順序で、最初から最後までマッチングされます。つまり、リストの上位にあるルールが後続のルールよりも高い優先順位を持ちます。
構成
各ルールは3つの部分で構成されます: ルールタイプ、トラフィックマッチャー(FINALルールを除く)、プロキシポリシー: TYPE, VALUE, POLICY。例: DOMAIN-SUFFIX,apple.com, DIRECT IP-CIDR, 192.168.0.0/16,ProxyA
プロキシポリシーは、プロキシ、ポリシーグループ、DIRECT、またはREJECTのいずれかのポリシー名の下に名前が付けられている必要があります。ルールはデフォルトの動作を定義するFINALルールで終わる必要があります。
例:
[Rule]
DOMAIN-SUFFIX,company.com,ProxyA
DOMAIN-KEYWORD,google,DIRECT
GEOIP,US,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT
FINAL,ProxyB
ルールタイプ
ドメインベースルール
| タイプ | 構文 | マッチ条件 |
|---|---|---|
| DOMAIN | DOMAIN,www.apple.com,Proxy |
ドメインが完全一致 |
| DOMAIN-SUFFIX | DOMAIN-SUFFIX,apple.com,Proxy |
ドメインサフィックスが一致 |
| DOMAIN-KEYWORD | DOMAIN-KEYWORD,google,Proxy |
ドメインにキーワードが含まれる |
| DOMAIN-WILDCARD | DOMAIN-WILDCARD,*.apple.com,Proxy |
ワイルドカードドメインマッチ |
| DOMAIN-REGEX | DOMAIN-REGEX,^mail\..+\.com$,Proxy |
ドメイン正規表現マッチ |
| DOMAIN-SET | DOMAIN-SET,my-set,DIRECT |
ファイル/URLからの名前付きドメインセット |
IPベースルール
| タイプ | 構文 | マッチ条件 |
|---|---|---|
| IP-CIDR | IP-CIDR,192.168.0.0/16,DIRECT |
IPアドレスがCIDR範囲内 |
| IP-CIDR6 | IP-CIDR6,2001:db8::/32,DIRECT |
IPv6アドレスがCIDR範囲内 |
| GEOIP | GEOIP,US,DIRECT |
GeoIPデータベースの国コード |
| IP-ASN | IP-ASN,13335,DIRECT |
IPアドレスがASNに属する |
HTTPレベルのルール
| タイプ | 構文 | マッチ条件 |
|---|---|---|
| USER-AGENT | USER-AGENT,Instagram*,DIRECT |
User-Agentヘッダー |
| URL-REGEX | URL-REGEX,^http://google\.com,DIRECT |
URLが正規表現にマッチ |
| PROTOCOL | PROTOCOL,HTTPS,Proxy |
検出されたプロトコル(HTTP/HTTPS/TLS/SSHなど) |
プロセスルール(Macのみ)
| タイプ | 構文 | マッチ条件 |
|---|---|---|
| PROCESS-NAME | PROCESS-NAME,Telegram,Proxy |
プロセス名(ワイルドカードマッチング) |
| PROCESS-PATH | PROCESS-PATH,/Applications/Safari.app,Proxy |
完全なプロセスパス |
| PROCESS-NAME-REGEX | PROCESS-NAME-REGEX,^Safari$,DIRECT |
プロセス名(正規表現マッチング) |
ポートと送信元ルール
| タイプ | 構文 | マッチ条件 |
|---|---|---|
| DEST-PORT | DEST-PORT,80,DIRECT |
宛先ポート |
| SRC-IP | SRC-IP,192.168.20.100,DIRECT |
送信元IPアドレス |
| SRC-PORT | SRC-PORT,52345,DIRECT |
送信元ポート |
| IN-PORT | IN-PORT,6152,DIRECT |
Chuteの受信プロキシポート |
高度なマッチングルール
| タイプ | 構文 | マッチ条件 |
|---|---|---|
| SUBNET | SUBNET,TYPE:WIFI,Proxy |
ネットワークサブネット属性(TYPE、BSSID、SSID、ROUTER) |
| HOSTNAME-TYPE | HOSTNAME-TYPE,AAAA,Proxy |
DNSレコードタイプ(A/AAAAなど) |
| IN-TYPE | IN-TYPE,SOCKS5,Proxy |
インバウンド接続タイプ(HTTP/SOCKS5/TUN) |
| IN-USER | IN-USER,user1,Proxy |
インバウンド認証ユーザー名 |
| IN-NAME | IN-NAME,my-proxy,Proxy |
インバウンドプロキシサーバー名 |
論理結合ルール
| タイプ | 構文 | マッチ条件 |
|---|---|---|
| AND | AND,((DOMAIN,example.com),(DEST-PORT,443)),Proxy |
全てのサブルールがマッチ |
| OR | OR,((DOMAIN,example.com),(DOMAIN,test.com)),Proxy |
いずれかのサブルールがマッチ |
| NOT | NOT,((DOMAIN,example.com)),Proxy |
サブルールがマッチしない |
特殊ルール
| タイプ | 構文 | マッチ条件 |
|---|---|---|
| RULE-SET | RULE-SET,SYSTEM,DIRECT |
ファイル、URL、または組み込みセットからのルールバンドル |
| SCRIPT | SCRIPT,MyRuleScript,PROXY |
JavaScriptベースのカスタムルールマッチング |
| FINAL | FINAL,ProxyB |
他のルールがマッチしない場合のデフォルト(最後に配置する必要あり) |
オプション
no-resolve
GEOIP、IP-CIDR、またはIP-ASNルールに遭遇した場合、Chuteはリクエストのホスト名がドメインかどうかを確認するためにDNSクエリを送信します。no-resolveオプションを選択して、ドメインを持つリクエストに対してこのルールをスキップできます。
GEOIP,US,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
注意: 一部のドメインがローカルDNSサーバーで解決できない場合、そのドメインにマッチするルールの前にIPベースのルールがないことを確認してください。そうしないと、DNSエラーによりルールテストが失敗します。この問題を解決するために
no-resolveを使用することもできます。
force-remote-dns
ローカルDNSの代わりにリモートプロキシサーバーを介したDNS解決を強制します。
DOMAIN-SUFFIX,google.com,Proxy,force-remote-dns
extended-matching
ドメインベースのルールマッチングを拡張して、接続ホスト名に加えてHTTP Hostヘッダーも検査します。これはSNIまたはCONNECTターゲットがHostヘッダーと異なる場合に便利です。
DOMAIN-SUFFIX,example.com,Proxy,extended-matching
requires-resolve
SCRIPTルールの場合、スクリプトが評価される前にDNS解決が完了していることを保証します。これにより、スクリプト内で$request.dnsResultが利用可能になります。
SCRIPT,MyRuleScript,PROXY,requires-resolve
ドメインセット
Chuteは、外部ファイルやURLから名前付きドメインセットを定義し、DOMAIN-SETルールタイプで使用することをサポートしています。ドメインセットファイルの各行には、ポリシーなしのルール宣言が含まれます。