ルール
Chuteはカスタマイズされたルールに応じて、リクエストを別のプロキシサーバーに転送するか、ホストに直接接続することができます。
優先順位
ルールは設定ファイルに現れる順序で、最初から最後までマッチングされます。つまり、リストの上位にあるルールが後続のルールよりも高い優先順位を持ちます。
構成
各ルールは3つの部分で構成されます: ルールタイプ、トラフィックマッチャー(FINALルールを除く)、プロキシポリシー: TYPE, VALUE, POLICY。例: DOMAIN-SUFFIX,apple.com, DIRECT IP-CIDR, 192.168.0.0/16,ProxyA
プロキシポリシーは、プロキシ、ポリシーグループ、DIRECT、またはREJECTのいずれかのポリシー名の下に名前が付けられている必要があります。ルールはデフォルトの動作を定義するFINALルールで終わるべきです。設定にFINALルールが含まれていない場合、ChuteはFINAL,DIRECTが追加されたかのように動作します。
例:
[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,https://example.com/domains.txt,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,TLS,Proxy |
検出されたプロトコル(HTTP/TLS/QUICなど) |
プロセスルール(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アドレス(単一IPまたはCIDR) |
| 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 |
インバウンドプロキシサーバー名 |
注意: 高度なマッチングルールは設定パーサーに受け付けられますが、現在のChuteリリースはこれらがマッチ対象とするセッション属性をまだ設定しないため、これらのルールはランタイムでどのトラフィックにもマッチしません。将来のリリースのために予約されています。
論理結合ルール
| タイプ | 構文 | マッチ条件 |
|---|---|---|
| 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
ホスト名がドメインであるリクエストの場合、Chuteはルールリストを2パスで評価します。最初のパスでは、IPベースのルール(GEOIP、IP-CIDR、IP-ASN)はスキップされます。他のルールがマッチしない場合、ChuteはDNSでドメインを解決し、解決されたIPアドレスでルールを再評価します。no-resolveオプションを追加すると、IPベースのルールは2番目のパスでもスキップされたままになり、既にIPアドレスを持つリクエストにのみマッチするようになります。
GEOIP,US,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
注意: 2パス評価のため、ドメインホスト名を持つリクエストでは、後方の非IPルールが前方のIPベースルールより先にマッチすることがあります。DNS解決が失敗した場合、IPベースのルールは単にマッチせず、FINALルールが適用されます。ルール評価は中断されません。
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ルールの場合、このオプションはパーサーに受け付けられますが、スクリプトの評価を遅延させません。$request.dnsResultは、セッションが既に解決されている場合(例えば、IPアドレスに直接送信されたリクエスト、またはDNS解決後の2番目のマッチングパス)にのみスクリプト内で利用可能です。
SCRIPT,MyRuleScript,PROXY,requires-resolve
pre-matching
ポリシーがREJECTのルールでのみ有効です。ルールは通常のルールリストの前、およびルール結果キャッシュの前に、別のパスで評価されます。そのため、プロトコルスニッフィングやDNS解決の前でも拒否が適用されます。
DOMAIN-SUFFIX,tracker.example.com,REJECT,pre-matching
エイリアス
DOMAIN-MATCHはDOMAIN-KEYWORDのエイリアスとして受け付けられます。NETWORKはPROTOCOLのエイリアスとして受け付けられます。
ドメインセット
Chuteは、DOMAIN-SETルールタイプで外部URLからドメインセットを読み込むことをサポートしています。タイプの後の最初のフィールドはhttp(s) URLである必要があります。オプションのupdate-intervalパラメータは、N秒ごとにファイルを再ダウンロードします。
DOMAIN-SET,https://example.com/domains.txt,DIRECT
DOMAIN-SET,https://example.com/domains.txt,DIRECT,update-interval=86400
ドメインセットファイルには、1行に1つのベアドメインが含まれます: example.comは完全一致のドメインにマッチします。.example.comまたは+.example.comはそのドメインと全てのサブドメインにマッチします。#または//で始まる行はコメントです。