Писать сотни правил 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По полям
| Поле | Значения | Смысл |
|---|---|---|
type | http / file / inline | Удалённо, локальный файл или прямо в конфиге |
behavior | domain / ipcidr / classical | Обязано соответствовать содержимому файла |
format | text / yaml / mrs | Формат файла |
url | Адрес файла правил | Обязателен при type http |
path | Путь локального кеша | Относительно каталога конфигурации |
interval | Секунды | Интервал обновления; 86400 = одни сутки |
proxy | Имя политики | По какому маршруту качать файл |
behavior: три типа не взаимозаменяемы
Здесь чаще всего всё ломается — неверный behavior не выдаёт ошибку, правила просто молча ничего не делают.
domain
Файл выглядит так:
google.com
+.youtube.com
www.github.comПрефикс +. эквивалентен DOMAIN-SUFFIX (включая все поддомены); без него совпадение точное.
ipcidr
1.0.1.0/24
8.8.8.8/32
2001:4860::/32classical
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.
Для очень больших наборов (десятки тысяч записей и больше) берите вариант mrs, если источник его предоставляет.
interval: как часто обновлять
| Вид набора правил | Рекомендуемый интервал |
|---|---|
| Региональные списки доменов / IP | 86400 (сутки) |
| Списки блокировки рекламы | 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 часть версий ядра периодически перечитывает файл. Надёжный путь — перезагрузить конфигурацию после правки.
Что проверять, когда набор правил не работает
Загляните в кешированный файл
Файл, названный в 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 rulesloaded, N rules означает, что всё получилось. Если N равно 0 — неверный behavior или формат.
Соображения производительности
Если ваши наборы в сумме превышают сотню тысяч записей, а устройство скромное (софт-роутер, старый телефон), подумайте о том, чтобы:
- Перейти на формат mrs
- Выбросить наборы, которыми вы не пользуетесь (стриминговые платформы, которые вы не смотрите)
- Заменить часть доменных списков на
GEOSITE, который берёт встроенную базу ядра и не требует загрузки
Коротко
- behavior обязан соответствовать содержимому файла; ошибётесь — откажет молча
- Добавляйте no-resolve при ссылке на IP-наборы
- Задавайте каждому провайдеру поле
proxy, чтобы обновления не падали - Порядок наборов: приватные → блокировка → прокси → прямые → IP → GEOIP → MATCH
- Когда ничего не происходит, сначала посмотрите, что лежит в кешированном файле
Дальше практика: сосуществование корпоративной сети, прямого локального доступа и зарубежного прокси.
Смежные документы
Синтаксис, логика сопоставления и относительная стоимость каждого типа правил, что на самом деле делает no-resolve, почему порядок правил решает всё, и как узнать, какое правило сработало.
Полная конфигурация, обслуживающая одновременно корпоративный VPN, прямой локальный доступ и проксируемые зарубежные сервисы: домены и диапазоны IP, маршрутизация DNS и типичные конфликты.
Полная картина маршрутизации по процессам: включение find-process-mode, поиск имени процесса, PROCESS-NAME против PROCESS-PATH, стоимость по производительности и почему написанное правило ничего не делает.