Правила

Chute может перенаправлять запросы на другой прокси-сервер или подключаться к хосту напрямую, в зависимости от пользовательских правил.

Приоритет

Правила сопоставляются от первого к последнему в порядке их появления в файле конфигурации. Другими словами, правила в начале списка имеют более высокий приоритет, чем последующие. Правила, добавленные модулями, размещаются перед собственными правилами конфигурации в порядке загрузки модулей, а правила, которые Chute вставляет во время работы для Tailscale, идут раньше и тех, и других.

Состав

Каждое правило состоит из 3 частей: тип правила, сопоставитель трафика (кроме правила FINAL) и политика: TYPE, VALUE, POLICY. Например: DOMAIN-SUFFIX,apple.com,DIRECT IP-CIDR,192.168.0.0/16,ProxyA

Политика должна быть именем прокси-сервера, группы политик или встроенной политики, например DIRECT, REJECT (или одной из его разновидностей) или PROXY. Список правил должен заканчиваться правилом 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 обычного HTTP-запроса совпадает с регулярным выражением
PROTOCOL PROTOCOL,TLS,Proxy Распознанный протокол (HTTP/TLS/QUIC и др.)

Правила процессов (macOS и Android)

Тип Синтаксис Совпадение
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 Имя входящего прокси-сервера

Внимание: SUBNET и HOSTNAME-TYPE сопоставляются с реальным трафиком — SUBNET по сети, к которой устройство подключено сейчас (у Apple TV нет сетевой идентичности, поэтому там SUBNET никогда не совпадает). IN-TYPE и IN-USER тоже сопоставляются с реальным трафиком: IN-TYPE называет входящий интерфейс, через который пришло соединение (HTTP, SOCKS5 или TUN), а IN-USER — имя пользователя, которое этот входящий интерфейс проверил по http-auth; без настроенных учётных данных проверять нечего, и IN-USER не совпадает ни с чем. IN-NAME принимается для того, чтобы профиль Surge загрузился, но Chute запускает один безымянный HTTP-слушатель и один безымянный SOCKS5-слушатель, так что имени входящего интерфейса для сопоставления нет и правило не срабатывает никогда; используйте вместо него IN-TYPE или IN-PORT.

Логические правила

Тип Синтаксис Совпадение
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

В строке RULE-SET опция no-resolve распространяется на каждое правило на основе IP в наборе, как если бы она была указана у каждого из них: RULE-SET,https://example.com/cn-ip.list,DIRECT,no-resolve. Встроенные наборы SYSTEM и LAN разворачиваются в отдельные правила и её не принимают.

Внимание: Из-за двухпроходной оценки для запроса с доменным именем хоста более позднее правило не на основе IP может совпасть раньше, чем более раннее правило на основе IP. Если разрешение DNS завершается сбоем, правила на основе IP просто никогда не совпадают и применяется правило FINAL; оценка правил не прерывается.

force-remote-dns

Принудительное разрешение DNS через удалённый прокси-сервер вместо локального DNS.

DOMAIN-SUFFIX,google.com,Proxy,force-remote-dns

Внимание: Эта опция в настоящее время разбирается только для совместимости и не имеет эффекта в текущих релизах.

extended-matching

Расширяет сопоставление правил на основе доменов: помимо имени хоста соединения проверяется и заголовок HTTP Host. Заголовок берётся из первого запроса клиентского соединения со слушателем HTTP-прокси — для HTTPS это собственный заголовок Host запроса CONNECT, — поэтому опция помогает, когда клиент адресует запрос IP-адресу или имени, отличному от указанного в его заголовке Host. Соединения через TUN или SOCKS5 не несут заголовка Host, и для них опция ничего не меняет.

DOMAIN-SUFFIX,example.com,Proxy,extended-matching

requires-resolve

Для правил SCRIPT эта опция принимается парсером, но не откладывает выполнение скрипта. $request.dnsResult доступен в скрипте только когда сессия уже разрешена (например, запросы, отправленные напрямую на IP-адрес, или второй проход сопоставления после разрешения DNS).

SCRIPT,MyRuleScript,PROXY,requires-resolve

pre-matching

Допустимо только для правил, политика которых — REJECT или одна из его разновидностей (REJECT-DROP, REJECT-TINYGIF и т. д.). Правила pre-matching оцениваются в отдельном проходе перед кэшем результатов правил и основной таблицей правил, поэтому совпавший REJECT применяется на первом проходе — до любого разрешения DNS, которое инициировала бы таблица правил. Строка RULE-SET или DOMAIN-SET принимает pre-matching и сохраняет его, но набор в этом раннем проходе не сопоставляется: он по-прежнему участвует на своём месте в списке правил.

DOMAIN-SUFFIX,tracker.example.com,REJECT,pre-matching

dns-failed

Допустимо только для правила FINAL. Если для решения по запросу нужно локальное разрешение DNS и оно не удаётся, запрос передаётся политике FINAL, а не завершается ошибкой — см. Финальное правило.

FINAL,Proxy,dns-failed

notification-text

Отправляет системное уведомление при срабатывании правила. Заголовок — этот текст, в теле указаны назначение и политика (host:port → policy; на Android host:port · policy · process). notification-interval задаёт, сколько секунд должно пройти, прежде чем то же правило уведомит снова (по умолчанию 300). Эти опции можно указать у любого правила, включая FINAL. Строка RULE-SET или DOMAIN-SET принимает их и сохраняет, но совпадение внутри набора никогда не отправляет уведомление.

DOMAIN-SUFFIX,bank.example,DIRECT,notification-text="Bank site opened",notification-interval=60
FINAL,Proxy,notification-text=Fell%20to%20FINAL

Текст с пробелами заключите в кавычки или запишите каждый пробел как %20; запятую пишите как %2C. Chute отправляет уведомление сам и подчиняется соответствующему переключателю приложения — Разрешить уведомления на iPhone, Показывать уведомления о событиях на Mac, системное разрешение на уведомления для Chute на Android, — поэтому при выключенном переключателе ничего не показывается, а Apple TV не показывает их никогда. Каждое срабатывание также записывается как событие уведомления правила — см. Отчеты об уведомлениях.

Псевдонимы

  • DOMAIN-MATCH принимается как псевдоним DOMAIN-KEYWORD.
  • NETWORK принимается как псевдоним PROTOCOL.
  • DST-PORT принимается как псевдоним DEST-PORT.

Набор доменов

Chute поддерживает загрузку наборов доменов с внешнего URL с помощью типа правила DOMAIN-SET. Первое поле после типа должно быть http(s) URL. Необязательный параметр update-interval задаёт в секундах, насколько старой может стать загруженная копия, прежде чем её скачают снова; таймера нет — см. Внешние наборы правил.

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

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.

results matching ""

    No results matching ""