Правила
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 оценивает список правил в два прохода. На первом проходе правила на основе IP (GEOIP, IP-CIDR, IP-ASN) пропускаются. Если ни одно другое правило не совпало, Chute разрешает домен через DNS и оценивает правила снова с разрешенным IP-адресом. Добавьте опцию no-resolve, чтобы правило на основе IP пропускалось и на втором проходе — тогда оно будет совпадать только с запросами, которые уже содержат IP-адрес.
GEOIP,US,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
Примечание: Из-за двухпроходной оценки для запроса с доменным именем хоста более позднее правило не на основе 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).
SCRIPT,MyRuleScript,PROXY,requires-resolve
pre-matching
Допустимо только для правил, политика которых — REJECT. Правило оценивается в отдельном проходе перед обычным списком правил и перед кэшем результатов правил, поэтому отклонение применяется еще до определения протокола или разрешения DNS.
DOMAIN-SUFFIX,tracker.example.com,REJECT,pre-matching
Псевдонимы
DOMAIN-MATCHпринимается как псевдонимDOMAIN-KEYWORD.NETWORKпринимается как псевдонимPROTOCOL.
Набор доменов
Chute поддерживает загрузку наборов доменов с внешнего URL с помощью типа правила DOMAIN-SET. Первое поле после типа должно быть 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
Файл набора доменов содержит просто домены, по одному в строке: example.com соответствует точному домену; .example.com или +.example.com соответствует домену и всем его поддоменам. Строки, начинающиеся с # или //, являются комментариями.