Маршрутизация и DNS
Маршрутизация решает, что происходит с каждым соединением, дошедшим до узла: какой аутбаунд его понесёт или будет ли оно заблокировано. DNS решает, как узел разрешает имена. И то и другое входит в шаблон, на его вкладках Маршрутизация и DNS, поэтому все узлы шаблона маршрутизируют одинаково.
Как работает маршрутизация
Для каждого нового соединения узел проверяет правила сверху вниз. Решает первое подошедшее правило. Соединение, не подошедшее ни под одно правило, уходит в Исходящее по умолчанию.
Если правил нет совсем, всё уходит в аутбаунд по умолчанию — встроенный direct, если вы не выбрали другой. Это разумное начало: добавляйте правила только для трафика, который должен идти куда-то ещё.
Как писать правила
На вкладке Маршрутизация шаблона:
- В Наборы правил выберите списки, которые будут проверять ваши правила. Правило может ссылаться только на выбранные наборы. См. Наборы правил.
- Нажмите Добавить правило.
- В Условие задайте, что проверяет правило.
- Выберите Действие, а для
route— Исходящее. - Сохраните правило, затем сохраните шаблон.
Список нумерует правила в том порядке, в каком их проверяет узел. Новое правило добавляется в конец; чтобы изменить порядок, переместите его на вкладке JSON.
Что может проверять правило
Правило может сочетать несколько условий. Должны совпасть все, если только вы не отметили Invert match. Названия условий панель показывает по-английски на любом языке.
| Условие | Что проверяет |
|---|---|
| Domain, Domain suffix, Domain keyword, Domain regex | Имя адресата |
| IP CIDR, IP is private, IP version | Адрес адресата |
| Port, Port range | Порт адресата |
| Rule set | Любой список, выбранный шаблоном; Rule set matches source IP вместо этого сверяет с ним адрес пользователя |
| Network | tcp или udp |
| Protocol | Что определило распознавание: tls, http, quic, dns, bittorrent и другие |
| Inbound | Тег инбаунда, через который пришло соединение |
| Auth user (panel user) | Имя учётной записи пользователя |
| Source IP CIDR, Source port, Source IP is private | Откуда пришло соединение |
Правила о том, что видно только приложению на телефоне или компьютере, например процесс приложения или сеть Wi-Fi, отклоняются при сохранении: узел никогда этого не видит, поэтому такое правило не сработало бы ни разу.
Действия
| Действие | Результат |
|---|---|
route | Отправляет соединение в выбранный аутбаунд. |
reject | Отклоняет соединение. |
sniff | Читает начало соединения, чтобы определить протокол и домен, затем переходит к следующему правилу. |
resolve | Разрешает домен, чтобы последующие правила по адресу могли его проверить. |
hijack-dns | Отвечает на соединение как на DNS-запрос собственным DNS узла. |
route-options | Задаёт параметры соединения, не выбирая аутбаунд. |
Распознавание протокола
Многие соединения приходят с адресом, но без имени. Правило sniff читает из начала соединения имя сервера TLS или хост HTTP, а также протокол. После этого следующие правила могут проверять домен и Protocol. Ставьте правило sniff первым, если последующие правила проверяют домены или протоколы.
Распознавание — это определение, а не гарантия: трафик, который оно не узнало, переходит к следующему правилу без совпадения.
Аутбаунд по умолчанию
Исходящее по умолчанию забирает все соединения, не подошедшие ни под одно правило. Это значение по умолчанию для узлов шаблона. На отдельном узле его переопределяют две вещи: собственная маршрутизация узла (см. ниже) и узел, который ведёт ровно один туннель как ретранслятор, — тогда аутбаундом по умолчанию становится этот туннель.
Когда формы не хватает
Вкладка JSON показывает весь блок маршрутизации точно в том виде, в каком его получают узлы. Там можно записать то, чего нет в форме. Панель всё равно отклоняет параметры, из-за которых узел отказался бы от конфигурации.
DNS
Вкладка DNS шаблона задаёт резолверы, которыми узел пользуется для собственных запросов: для правил resolve, для аутбаундов, подключающихся к серверу по имени, и для hijack-dns.
Добавляйте серверы кнопкой Добавить сервер и выбирайте тип: обычный UDP или TCP, шифрованные tls, https, quic или h3, системный резолвер узла (local), его файл hosts (hosts), dhcp или fakeip. Сервер может отправлять свои запросы через аутбаунд — поле Обход (исходящее). Правила DNS под списком серверов направляют выбранные имена на выбранные серверы.
Если в шаблоне больше одного DNS-сервера, задайте DNS-резолвер по умолчанию на вкладке Маршрутизация. Без него узел не может разрешить имена серверов аутбаундов и отказывается от всей конфигурации. Редактор предупреждает, когда он не задан.
Пресеты
Из пресета на вкладках Маршрутизация и DNS применяет готовый блок. Список пресетов приведён в Шаблоны.
- Пресет маршрутизации заменяет правила шаблона, потому что порядок правил и есть маршрутизация. Исключение — Блокировать торренты: он добавляется перед вашими правилами. Нужные пресету наборы правил добавляются к выбранным.
- Пресет DNS заменяет блок DNS на Cloudflare, Google, Quad9 или AdGuard по DNS-over-TLS либо на системный резолвер узла.
Списки, которые нужны пресету
Пресет хорош настолько, насколько хороши его списки. Если у панели нет копии списка, который использует пресет, панель исключила бы этот список и все проверяющие его правила, и пресет молча ничего бы не делал. Поэтому диалог сначала проверяет:
- список, которого у вас ещё нет, называется, и Добавить списки и применить сначала его скачивает;
- список, который у панели значится, но копии которого нет, называется, и сначала его нужно исправить на странице наборов правил;
- список, для которого каталог не указывает источника, отклоняется сразу.
Блокировка торрентов
Блокировать торренты добавляет правило sniff и отправляет то, что похоже на BitTorrent, в блокирующий аутбаунд block-torrent. Узел считает то, что заблокировал: это число видно в строке узла и в метриках панели, а выше заданной вами частоты оно порождает событиеnode.rejections_high.
Это работает по мере возможности. Распознавание узнаёт рукопожатие BitTorrent, а клиенты, которые его шифруют (большинство делает это по умолчанию), проходят. Понимайте счётчик как то, что удалось поймать, а не как всё, что было.
Пресеты для стран
Иран + блокировка рекламы, Китай + блокировка рекламы и Россия + блокировка рекламы отправляют домены и адреса этой страны прямо наружу с узла, чтобы внутренний трафик не уходил дальше, и отклоняют список рекламы. На ретрансляторе это не пускает локальный трафик в туннель. Результат настолько полон, насколько полны списки страны; если нужен более полный охват, направьте каталог на более полный список (см. ниже).
Собственные пресеты
Подборки пресетов (наборы правил, инбаунды, маршрутизация и DNS) берутся из каталога, который отдаёт панель. Его можно дополнять или заменять в нём записи, не дожидаясь выпуска:
- Положите файл
.jsonв каталог пресетов:/var/opt/nexora/presets/при стандартной установке или каталог, заданный в Настройки → Общие → Каталог пресетов → Каталог файлов. - Снова откройте диалог пресетов. Перезапуск не нужен.
Каждый файл *.json в этом каталоге вливается во встроенный каталог в порядке имён файлов. Запись с новым ключом или тегом добавляется; запись с существующим ключом или тегом заменяет встроенную. Файл, который не удалось разобрать, пропускается с отметкой в журнале панели, а страница настроек показывает действующие файлы.
Например, файл, который добавляет страну в подборку наборов правил из зеркала под вашим управлением:
{
"version": 1,
"ruleSets": {
"countries": [
{
"key": "tr",
"label": "Turkey",
"items": [
{ "tag": "geoip-tr", "url": "https://mirror.example.com/geoip-tr.srs", "label": "IP ranges" }
]
}
]
}
}Запись страны целиком заменяет встроенную запись с тем же key, поэтому чтобы перенаправить один список встроенной страны, повторите в своей записи и остальные списки этой страны. Сервисы наборов правил объединяются по tag; пресеты инбаундов, маршрутизации и DNS — по key.
Собственная маршрутизация узла
Узел может заменить маршрутизацию своего шаблона собственной. Откройте панель Конфигурация узла из его строки и заполните Маршрутизация (переопределение для узла). Она главнее шаблона только на этом узле, включая аутбаунд по умолчанию. Используйте её для того одного сервера, который должен маршрутизировать иначе, а всё остальное держите в шаблоне.
Проверка маршрута
Проверка маршрута в меню строки узла или пользователя проходит по собственным правилам узла для описанного вами соединения (адресат, порт и, при желании, распознанные протокол и домен) и называет правило и аутбаунд, которые его заберут. Проверить и подключиться вдобавок открывает с узла одно настоящее соединение по этому пути. См. Узлы.
Связанные страницы
- Наборы правил: списки, которые проверяют правила.
- Аутбаунды: куда правила отправляют трафик.
- Шаблоны: где находятся маршрутизация и DNS.
- Путь пакета: путь соединения через узел.
