🛣️ Правила маршрутизации Remna
Эта статья объясняет, как писать правила маршрутизации для профилей Remnawave/Remnanode: от базовых понятий до практических примеров с DIRECT, WARP, BLOCK и каскадными маршрутами.
📘 Базовые понятия (кратко по логике документации Remnawave)
В конфигурации Remnawave (на базе Xray-совместимого формата) обычно участвуют следующие блоки:
- 📥 inbounds — где и как клиентский трафик принимается на сервере.
- 📤 outbounds — куда трафик уходит дальше (напрямую, в прокси, в туннель, в blackhole и т.д.).
- 🧭 routing — правила, которые решают, какой трафик в какой
outboundотправлять. - 🧩 tag — имя маршрута/узла, по которому routing связывает правило и конкретный outbound.
⚠️ Важный принцип: правила в
routing.rulesпроверяются сверху вниз, поэтому порядок правил критически важен.
🧱 Основные элементы маршрутизации
1) 📤 outbounds
outbounds определяют каналы выхода трафика.
- 🟢 DIRECT — прямой выход без VPN/прокси.
- ☁️ WARP — выход через SOCKS5-прокси WARP.
- ⛔ BLOCK — блокировка трафика (blackhole).
Пример:
"outbounds": [
{
"tag": "DIRECT",
"protocol": "freedom"
},
{
"tag": "WARP",
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 40000
}
]
}
},
{
"tag": "BLOCK",
"protocol": "blackhole"
}
]
2) 🧭 routing.rules
В routing вы задаёте условия (домены, geosite, IP, protocol и т.д.) и назначаете outboundTag.
Пример:
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"domain": [
"regexp:\\.ru$",
"regexp:\\.su$",
"regexp:\\.рф$",
"regexp:\\.xn--p1ai$"
],
"outboundTag": "DIRECT"
},
{
"domain": [
"geosite:category-ads-all"
],
"outboundTag": "BLOCK"
},
{
"domain": [
"domain:youtube.com",
"domain:chat.openai.com"
],
"outboundTag": "WARP"
}
]
}
🔍 Как это работает
- 🇷🇺 Домены
.ru,.su,.рф,.xn--p1aiидут черезDIRECT. - 🚫 Рекламные домены из
geosite:category-ads-allблокируются черезBLOCK. - 🌍 Выбранные сервисы (
youtube.com,chat.openai.com) идут черезWARP.
🧠 Полезные приёмы
- 🧪 Регулярные выражения:
"regexp:\\.ru$"— все домены, оканчивающиеся на.ru"regexp:^www\\."— все домены, начинающиеся сwww.
- 🗂️ geosite-категории:
geosite:category-ads-all— рекламные домены- при необходимости можно добавлять другие категории (например, foreign/china и т.д.)
- ⛔ Блокировка:
- для запрета трафика достаточно направить правило в
"outboundTag": "BLOCK".
- для запрета трафика достаточно направить правило в
🧪 Дополнительные шаблоны
Шаблон 1: WARP для выбранных доменов, RU — напрямую
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"domain": [
"regexp:\\.ru$",
"regexp:\\.su$",
"regexp:\\.рф$",
"regexp:\\.xn--p1ai$"
],
"outboundTag": "DIRECT"
},
{
"domain": [
"domain:youtube.com",
"domain:chat.openai.com"
],
"outboundTag": "WARP"
}
]
}
Шаблон 2: Только один сайт через WARP
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"domain": [
"domain:example.com"
],
"outboundTag": "WARP"
},
{
"domain": [
"regexp:\\.ru$",
"regexp:\\.su$"
],
"outboundTag": "DIRECT"
}
]
}
🧬 Каскадная схема: RU ➜ DE ➜ WARP
Ниже логика для multi-hop сценария:
- 🇷🇺 Российские домены — через локальный/российский маршрут.
- 🇩🇪 Иностранный трафик — через узел в Германии.
- ☁️ Отдельные сервисы (например YouTube/ChatGPT) — через WARP.
- 🚫 Реклама — в
BLOCK.
Пример конфигурации (адаптируйте под свои ключи/адреса)
{
"log": {
"loglevel": "info"
},
"inbounds": [
{
"tag": "YANDEX-RU",
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
},
"streamSettings": {
"network": "raw",
"security": "reality",
"realitySettings": {
"dest": "ads.x5.ru:443",
"show": false,
"xver": 0,
"shortIds": ["*****"],
"privateKey": "*****",
"serverNames": ["ads.x5.ru"]
}
}
}
],
"outbounds": [
{
"tag": "TO-DE",
"protocol": "vless",
"settings": {
"vnext": [
{
"port": 443,
"users": [
{
"id": "2d809255-059f-4bae-8667-b7f5f7832b23",
"flow": "xtls-rprx-vision",
"level": 0,
"encryption": "none"
}
],
"address": "cloud-3.wksdns.ru"
}
]
},
"streamSettings": {
"network": "raw",
"security": "reality",
"realitySettings": {
"shortId": "*****",
"publicKey": "*****",
"serverName": "github.com"
}
}
},
{
"tag": "DIRECT",
"protocol": "freedom"
},
{
"tag": "BLOCK",
"protocol": "blackhole"
},
{
"tag": "WARP",
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 40000
}
]
}
}
],
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"domain": ["geosite:category-ads-all"],
"outboundTag": "BLOCK"
},
{
"domain": [
"regexp:.*\\.ru$",
"regexp:.*\\.su$",
"regexp:.*\\.xn--p1ai$"
],
"outboundTag": "DIRECT"
},
{
"domain": ["geosite:category-foreign"],
"outboundTag": "TO-DE"
},
{
"domain": ["domain:youtube.com", "domain:chat.openai.com"],
"outboundTag": "WARP"
}
]
}
}
✅ Итог
Чтобы написать свои правила маршрутизации в Remnawave:
- Определите набор
outbounds(напримерDIRECT,WARP,BLOCK,TO-DE). - Опишите
routing.rulesпо доменам/категориям/IP. - Проверьте порядок правил сверху вниз.
- Протестируйте профиль и при необходимости уточните исключения регулярными выражениями.
Такой подход даёт гибкую и управляемую маршрутизацию под любые сценарии: от простого split-трафика до каскадного multi-hop.