Правила
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. Правила 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 соответствует домену и всем его поддоменам. Строки, начинающиеся с # или //, являются комментариями.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.