---
date: 2026-07-25
tags:
  - clash
  - mihomo
  - маршрутизация
  - правила
  - новичкам
aliases:
  - Правила Clash
  - Маршрутизация mihomo
  - rules Clash
  - Рецепты правил
---

# 🧭 Правила маршрутизации: рецепты и отладка

> [!info] О чём заметка
> Практическая часть про блок `rules` в конфиге [[Clash/02-mihomo|mihomo]]: как читаются правила, как заставить конкретный сайт, приложение или устройство ходить нужным путём, откуда брать готовые списки и как понять, какое правило сработало. Устройство конфига целиком — в [[Clash/01-clash-core|Ядре Clash]], полный перечень типов правил в современном ядре — в [[Clash/06-features-protocols|возможностях mihomo]].

## TL;DR

- Правила читаются **сверху вниз до первого совпадения**, поэтому порядок важнее содержания: частное — выше, общее — ниже, `MATCH` — всегда последним.
- Формат строки: `ТИП,ЗНАЧЕНИЕ,ЦЕЛЬ`. Цель — это `DIRECT` (напрямую), `REJECT` (оборвать) или имя группы из `proxy-groups`.
- Ссылайтесь в правилах **на группы, а не на конкретные узлы** — иначе при смене серверов придётся переписывать весь список.
- Для больших списков (реклама, категории сайтов) используйте **готовые наборы правил** через `rule-providers`, а не тысячу строк в конфиге.
- Самый быстрый способ понять, что происходит, — вкладка **соединений** в клиенте: там видно, какое правило сработало для каждого соединения.
- Типовая ошибка новичка — правило `GEOIP` выше доменных: оно требует разрешения имени в адрес и перехватывает больше, чем задумано.

## Как читается список правил

Каждая строка — это условие и действие. Ядро берёт новое соединение и идёт по списку сверху вниз: первое подошедшее правило определяет судьбу соединения, остальные не проверяются.

```yaml
rules:
  - DOMAIN-SUFFIX,gosuslugi.ru,DIRECT
  - DOMAIN-KEYWORD,youtube,PROXY
  - DOMAIN-SUFFIX,doubleclick.net,REJECT
  - GEOIP,RU,DIRECT
  - MATCH,PROXY
```

Читается это так: всё на домене `gosuslugi.ru` — напрямую; всё, где в имени встречается `youtube`, — через группу `PROXY`; рекламный домен — оборвать; всё, что ведёт на российские адреса, — напрямую; всё остальное — через `PROXY`.

**Три специальные цели** нужно запомнить сразу: `DIRECT` — соединение идёт мимо туннеля, `REJECT` — обрывается (так блокируют рекламу и трекеры), имя группы — уходит в туннель через выбранный в этой группе узел.

Проще говоря: список правил — это анкета, которую ядро заполняет за вас на каждое соединение, а `MATCH` в конце — ответ «во всех остальных случаях».

## Основные типы правил

| Тип | По чему сравнивает | Пример |
|---|---|---|
| `DOMAIN` | Точное имя хоста | `DOMAIN,example.com,PROXY` |
| `DOMAIN-SUFFIX` | Домен и все поддомены | `DOMAIN-SUFFIX,ya.ru,DIRECT` |
| `DOMAIN-KEYWORD` | Подстрока в имени | `DOMAIN-KEYWORD,google,PROXY` |
| `IP-CIDR` / `IP-CIDR6` | Подсеть назначения | `IP-CIDR,10.0.0.0/8,DIRECT,no-resolve` |
| `GEOIP` | Страна адреса назначения | `GEOIP,RU,DIRECT` |
| `SRC-IP-CIDR` | Адрес источника (кто в вашей сети) | `SRC-IP-CIDR,192.168.1.50/32,PROXY` |
| `DST-PORT` | Порт назначения | `DST-PORT,25,REJECT` |
| `PROCESS-NAME` | Имя приложения | `PROCESS-NAME,Telegram.exe,PROXY` |
| `RULE-SET` | Готовый набор правил из провайдера | `RULE-SET,ads,REJECT` |
| `MATCH` | Всё остальное | `MATCH,PROXY` |

В [[Clash/02-mihomo|mihomo]] к этому добавлены `GEOSITE` (категории доменов), `IP-ASN` (по номеру автономной системы), `DOMAIN-REGEX`, логические `AND`/`OR`/`NOT` и правила по типу входящего соединения — их перечень с пояснениями собран в [[Clash/06-features-protocols|возможностях ядра]].

> [!note] Что делает `no-resolve`
> Правила по IP-адресу требуют знать адрес, а в начале соединения ядро часто видит только домен. Без флага `no-resolve` оно сходит в DNS, чтобы проверить правило, — и это и задержка, и лишний запрос наружу. Флаг говорит: «если адреса ещё нет, просто пропусти это правило». Ставьте его на все `IP-CIDR` и `GEOIP`, которые стоят выше доменных правил.

## Рецепты

Ниже — готовые фрагменты под частые задачи. Вставляются в блок `rules` вашего конфига; если конфиг приходит из подписки, ищите в клиенте раздел вроде «переопределения», «override» или «слияние профиля» — он позволяет дописать свои правила поверх присланных, не теряя их при обновлении.

**Российские сайты напрямую, остальное через туннель.** Базовая раскладка, с которой начинают почти все.

```yaml
rules:
  - DOMAIN-SUFFIX,ru,DIRECT
  - DOMAIN-SUFFIX,su,DIRECT
  - DOMAIN-SUFFIX,рф,DIRECT
  - GEOIP,RU,DIRECT,no-resolve
  - MATCH,PROXY
```

**Локальная сеть и роутер — всегда напрямую.** Иначе домашние устройства и веб-интерфейс роутера уедут в туннель и перестанут открываться.

```yaml
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
```

**Реклама и трекеры — в обрыв.** Точечно это делается доменами, но по-настоящему удобно — набором правил (см. следующий раздел).

```yaml
  - DOMAIN-SUFFIX,doubleclick.net,REJECT
  - DOMAIN-KEYWORD,adservice,REJECT
```

**Конкретное приложение через туннель.** Работает на десктопе, где ядро видит имя процесса.

```yaml
  - PROCESS-NAME,Telegram.exe,PROXY
  - PROCESS-NAME,discord.exe,PROXY
```

**Одно устройство в доме через туннель, остальные напрямую.** Пригодится, когда mihomo стоит шлюзом для всей квартиры.

```yaml
  - SRC-IP-CIDR,192.168.1.50/32,PROXY
  - MATCH,DIRECT
```

**Торренты мимо туннеля.** Многие продавцы не разрешают P2P, да и скорость через прокси обычно хуже.

```yaml
  - PROCESS-NAME,qbittorrent.exe,DIRECT
```

**Разные страны для разных сервисов.** Если в подписке есть группы по регионам, правило может указывать на конкретную группу.

```yaml
  - DOMAIN-SUFFIX,netflix.com,Streaming-NL
  - DOMAIN-SUFFIX,openai.com,US-Nodes
```

> [!tip] Ссылайтесь на группы, а не на узлы
> Правило `DOMAIN-SUFFIX,openai.com,US-Nodes` переживёт смену серверов: сменились узлы в подписке — группа наполнилась новыми, правило работает. Правило, указывающее на конкретный узел «США-3», сломается в тот день, когда продавец переименует сервер.

## Готовые наборы правил

Списки рекламных доменов, категорий сайтов и подсетей исчисляются десятками тысяч строк — держать их в конфиге бессмысленно. Для этого есть **`rule-providers`**: набор загружается по URL, обновляется по расписанию и подключается одной строкой.

```yaml
rule-providers:
  ads:
    type: http
    behavior: domain
    url: "https://example.com/ads.yaml"
    path: ./ruleset/ads.yaml
    interval: 86400

rules:
  - RULE-SET,ads,REJECT
  - MATCH,PROXY
```

Ключевые поля: **`behavior`** — какого вида список (`domain` — только домены, `ipcidr` — подсети, `classical` — полноценные правила любых типов), **`interval`** — как часто обновлять (в секундах), **`path`** — где хранить локальную копию.

Формат файла задаётся полем `format`: `yaml`, `text` или **`mrs`** — компактный бинарный формат mihomo, который экономит память на больших списках. Готовые наборы и геоданные команда MetaCubeX публикует в репозитории **meta-rules-dat** (подробнее — в [[Clash/06-features-protocols|возможностях ядра]]).

> [!warning] Чужой набор правил — это доверие
> Подключая список по чужому URL, вы отдаёте его автору право решать, какие домены у вас блокируются, а какие идут напрямую. Испорченный или враждебно изменённый набор может, например, направить банковский домен в туннель или заблокировать нужный сервис. Берите наборы из репозиториев с историей и не подключайте десяток списков «на всякий случай».

## Как понять, какое правило сработало

Здесь начинается отладка, и она проще, чем кажется.

**Вкладка соединений.** В любом клиенте на ядре mihomo есть список активных соединений (в веб-дашбордах — Connections). Для каждого показано: хост назначения, сработавшее правило, выбранный узел, объём трафика. Открыли проблемный сайт — увидели, какое правило его перехватило. Это отвечает на 90 % вопросов «почему оно идёт не туда».

**Логи.** Уровень `info` показывает основные события, `debug` — подробности разрешения имён и выбора маршрута. Держать `debug` постоянно не стоит: он шумный и пишет в файл историю ваших соединений.

**Приём «сравни с Global».** Если в режиме `Global` сайт открывается, а в `Rule` нет — виноваты правила, и надо смотреть, какое из них перехватывает соединение. Если не открывается и в `Global` — дело не в правилах, а в узле, протоколе или блокировке (см. [[Clash/05-troubleshooting|диагностику проблем]]).

## Частые ошибки

**`GEOIP` слишком высоко.** Правило по стране требует адреса, поэтому оно тянет за собой разрешение имени и перехватывает соединения раньше доменных правил. Держите его ниже доменных и с флагом `no-resolve`.

**Забытый `MATCH`.** Без завершающего правила поведение для «всего остального» определяется настройкой `final`, и она может оказаться не той, что вы ожидаете. Проще явно поставить `MATCH` последней строкой.

**Правила выше, чем локальная сеть.** Если `MATCH,PROXY` стоит раньше исключений для `192.168.0.0/16`, веб-интерфейс роутера и сетевые принтеры уедут в туннель.

**Дубли и противоречия.** Два правила на один домен с разными целями — не ошибка синтаксиса: просто сработает верхнее. Если поведение непонятно, ищите первое совпадение сверху, а не последнее.

**Правки поверх подписки затираются.** Если конфиг приходит из подписки, ваши правки при обновлении исчезнут — используйте механизм переопределений в клиенте, а не редактирование скачанного файла.

## 📚 См. также

- [[Clash/03-first-run|Первый запуск]] — если клиент ещё не настроен.
- [[Clash/01-clash-core|Ядро Clash]] — как правила связаны с группами, DNS и режимом fake-ip.
- [[Clash/06-features-protocols|Возможности и протоколы mihomo]] — расширенные типы правил, `GEOSITE`, `IP-ASN`, логические условия и формат `.mrs`.
- [[Clash/05-troubleshooting|Типичные проблемы]] — что делать, когда правило вроде верное, а результат не тот.
- [[xray/routing|Маршрутизация в Xray]] — как та же задача решается в соседней экосистеме.
- [[Clash/09-glossary|Словарь терминов]] — расшифровка встреченных понятий.

---

> [!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ
> При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: [исходник этой заметки](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main/Clash/04-rules.md) · [весь репозиторий](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main).
