Перейти к содержимому
RU

Главная / Блог / Правила и маршрутизация

Удалённые наборы правил через rule-providers — behavior, format и стратегия обновления

Правила и маршрутизация2026-07-211118 слов3 мин чтения
Удалённые наборы правил через rule-providers — behavior, format и стратегия обновления

Писать сотни правил DOMAIN-SUFFIX руками непрактично, и за изменениями сайтов так не угнаться. rule-providers позволяет ссылаться на внешние поддерживаемые списки, которые обновляются по расписанию.

Базовая структура

Два шага: определить провайдер, затем сослаться на него из rules.

rule-providers:
  cn-domain:
    type: http
    behavior: domain
    format: text
    url: "https://example.com/rules/cn-domain.txt"
    path: ./ruleset/cn-domain.txt
    interval: 86400
    proxy: DIRECT

rules:
  - RULE-SET,cn-domain,DIRECT
  - MATCH,PROXY

По полям

ПолеЗначенияСмысл
typehttp / file / inlineУдалённо, локальный файл или прямо в конфиге
behaviordomain / ipcidr / classicalОбязано соответствовать содержимому файла
formattext / yaml / mrsФормат файла
urlАдрес файла правилОбязателен при type http
pathПуть локального кешаОтносительно каталога конфигурации
intervalСекундыИнтервал обновления; 86400 = одни сутки
proxyИмя политикиПо какому маршруту качать файл

behavior: три типа не взаимозаменяемы

Здесь чаще всего всё ломается — неверный behavior не выдаёт ошибку, правила просто молча ничего не делают.

Какого содержимого ждёт каждый behaviordomainпростой по одному домену или +.домену на строкуникаких IP и типов правилсамый частыйipcidrпростой по одному CIDR на строкуникаких доменовclassicalполный скаждая строка это "тип,значение"можно смешивать любые типысамый гибкий и самый медленный
Получив файл правил, откройте его и посмотрите содержимое, прежде чем выбирать behavior

domain

Файл выглядит так:

google.com
+.youtube.com
www.github.com

Префикс +. эквивалентен DOMAIN-SUFFIX (включая все поддомены); без него совпадение точное.

ipcidr

1.0.1.0/24
8.8.8.8/32
2001:4860::/32

classical

DOMAIN-SUFFIX,google.com
DOMAIN-KEYWORD,youtube
IP-CIDR,8.8.8.8/32,no-resolve
PROCESS-NAME,Telegram.exe

Обратите внимание: файл classical не содержит имён политик. Политику задаёт строка RULE-SET, которая на него ссылается.

format: text, yaml и mrs

text: обычный текст, по записи на строку, # начинает комментарий. Самый распространённый.

yaml:

payload:
  - google.com
  - "+.youtube.com"

mrs: бинарный формат, специфичный для Mihomo, компактный и быстро загружающийся. Поддерживает только domain и ipcidr, но не classical.

Стоимость загрузки трёх форматов (относительно, один и тот же список из 100 000 доменов)mrs бинарныйсамый быстрый, минимум памятиtext обычныйумеренное время разбораyamlтребует полного разбора YAMLДля небольших наборов разница пренебрежима; свыше десяти тысяч записей mrs заметно уходит вперёд

Для очень больших наборов (десятки тысяч записей и больше) берите вариант mrs, если источник его предоставляет.

interval: как часто обновлять

Вид набора правилРекомендуемый интервал
Региональные списки доменов / IP86400 (сутки)
Списки блокировки рекламы86400
Списки разблокировки стриминга43200 (полсуток)
Небольшие списки, которые вы ведёте сами3600 или больше

Ставить очень мало бессмысленно — эти списки не меняются по нескольку раз в день, а вы просто нагружаете того, кто их хостит.

Полная рабочая конфигурация

Комбинация наборов, закрывающая обычные потребности:

rule-providers:
  # блокировка рекламы
  reject:
    type: http
    behavior: domain
    format: text
    url: "https://example.com/reject.txt"
    path: ./ruleset/reject.txt
    interval: 86400
    proxy: DIRECT

  # домены, которые должны идти напрямую
  direct:
    type: http
    behavior: domain
    format: text
    url: "https://example.com/direct.txt"
    path: ./ruleset/direct.txt
    interval: 86400
    proxy: DIRECT

  # домены, которым нужен прокси
  proxy:
    type: http
    behavior: domain
    format: text
    url: "https://example.com/proxy.txt"
    path: ./ruleset/proxy.txt
    interval: 86400
    proxy: DIRECT

  # внутрирегиональные диапазоны IP
  cncidr:
    type: http
    behavior: ipcidr
    format: text
    url: "https://example.com/cncidr.txt"
    path: ./ruleset/cncidr.txt
    interval: 86400
    proxy: DIRECT

  # loopback и приватные диапазоны
  lancidr:
    type: http
    behavior: ipcidr
    format: text
    url: "https://example.com/lancidr.txt"
    path: ./ruleset/lancidr.txt
    interval: 86400
    proxy: DIRECT

rules:
  - RULE-SET,lancidr,DIRECT,no-resolve
  - RULE-SET,reject,REJECT
  - RULE-SET,proxy,🚀 Выбор
  - RULE-SET,direct,DIRECT
  - RULE-SET,cncidr,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,🐟 Прочее

Следите за порядком: приватные → блокировка → прокси → прямые → диапазоны IP → географический перехват → MATCH.

Список прокси идёт перед списком прямых, потому что некоторые домены встречаются в обоих, и приоритет прокси соответствует ожиданиям.

inline: небольшие наборы прямо в конфигурации

Когда ради трёх записей не хочется заводить отдельный файл:

rule-providers:
  my-work:
    type: inline
    behavior: domain
    payload:
      - "+.mycompany.com"
      - "+.internal.corp"
      - "gitlab.internal"

file: использование локального файла

Для правил, которые вы ведёте сами:

rule-providers:
  personal:
    type: file
    behavior: classical
    path: ./ruleset/personal.list

С заданным interval часть версий ядра периодически перечитывает файл. Надёжный путь — перезагрузить конфигурацию после правки.

Что проверять, когда набор правил не работает

Порядок разбирательстваПроверьте, что behavior соответствует содержимому файла (самая частая ошибка с большим отрывом)Проверьте, скачался ли файл по указанному pathПоищите в логе имя провайдера и посмотрите на ошибки загрузкиОткрывается ли url прямо в браузереНе перехватывает ли строку RULE-SET какое-то правило вышеНе оказалось ли MATCH случайно выше строк RULE-SET

Загляните в кешированный файл

Файл, названный в path, лежит в каталоге конфигурации; просто откройте его:

  • Файла нет → загрузка не прошла; проверьте url и настройку proxy
  • В файле HTML → url вернул веб-страницу (например, страницу 404); адрес неверный
  • Файл выглядит нормально, но правила не работают → несоответствие behavior

На Windows каталог конфигурации обычно:

%APPDATA%\io.github.clash-verge-rev.clash-verge-rev\

Прочитайте лог

Переключите уровень логирования в debug и поищите имя провайдера; вы увидите всю последовательность загрузки и разбора:

INFO Start initial provider cn-domain
INFO Provider cn-domain loaded, 12043 rules

loaded, N rules означает, что всё получилось. Если N равно 0 — неверный behavior или формат.

Соображения производительности

Потребление ресурсов большими наборами1Памятьпримерно несколько МБ на каждые десять тысяч доменных правил; на масштабе в сотню тысяч за этим стоит следить2Первая загрузкаскачивание и разбор добавляют к старту несколько секунд3Стоимость сопоставлениядоменные наборы используют суффиксное дерево и близки к O(1); classical сравнивает построчно и намного медленнее4Советпредпочитайте наборы domain

Если ваши наборы в сумме превышают сотню тысяч записей, а устройство скромное (софт-роутер, старый телефон), подумайте о том, чтобы:

  • Перейти на формат mrs
  • Выбросить наборы, которыми вы не пользуетесь (стриминговые платформы, которые вы не смотрите)
  • Заменить часть доменных списков на GEOSITE, который берёт встроенную базу ядра и не требует загрузки

Коротко

  • behavior обязан соответствовать содержимому файла; ошибётесь — откажет молча
  • Добавляйте no-resolve при ссылке на IP-наборы
  • Задавайте каждому провайдеру поле proxy, чтобы обновления не падали
  • Порядок наборов: приватные → блокировка → прокси → прямые → IP → GEOIP → MATCH
  • Когда ничего не происходит, сначала посмотрите, что лежит в кешированном файле

Дальше практика: сосуществование корпоративной сети, прямого локального доступа и зарубежного прокси.


Смежные документы

Справочник по типам правил Clash — DOMAIN, IP-CIDR, GEOIP, PROCESS-NAME и остальные
Правила и маршрутизация Справочник по типам правил Clash — DOMAIN, IP-CIDR, GEOIP, PROCESS-NAME и остальные

Синтаксис, логика сопоставления и относительная стоимость каждого типа правил, что на самом деле делает no-resolve, почему порядок правил решает всё, и как узнать, какое правило сработало.

2026-07-251168 слов3 мин чтения
Раздельное туннелирование на практике — корпоративная сеть, локальный доступ и зарубежный прокси вместе
Правила и маршрутизация Раздельное туннелирование на практике — корпоративная сеть, локальный доступ и зарубежный прокси вместе

Полная конфигурация, обслуживающая одновременно корпоративный VPN, прямой локальный доступ и проксируемые зарубежные сервисы: домены и диапазоны IP, маршрутизация DNS и типичные конфликты.

2026-07-171165 слов3 мин чтения
Маршрутизация отдельных программ правилами PROCESS-NAME
Правила и маршрутизация Маршрутизация отдельных программ правилами PROCESS-NAME

Полная картина маршрутизации по процессам: включение find-process-mode, поиск имени процесса, PROCESS-NAME против PROCESS-PATH, стоимость по производительности и почему написанное правило ничего не делает.

2026-06-221122 слов3 мин чтения