Серверный роутинг (мост)
Серверный роутинг соединяет два ваших сервера так, что трафик пользователей делится по направлениям: одна часть сайтов открывается напрямую со входной ноды, другая уезжает туннелем на машину выхода. Пользователи ничего не замечают: та же подписка, те же адреса, та же скорость входа.
- Два направления. Русские и зарубежные сайты видят разные IP, и вы выбираете, какой адрес видит каждая сторона.
- Транспорт Shadowsocks. Один туннель
chacha20-ietf-poly1305между серверами, весь трафик, включая UDP. - Всё через панель. Профили, сквады и служебный пользователь создаются автоматически через API.
- Нода не нужна заранее. Скрипт поставит её сам по SSH, вместе с Docker и портом в ufw.
- Второй тип моста: VLESS Route. Каждый пользователь сам выбирает выход: у профиля появляется дополнительный хост в подписке.
Пункт находится в меню скрипта: 4. Расширения ноды → Серверный роутинг. Внутри выбирается тип: «Мост через Shadowsocks» (разделение по странам, описан ниже) или «Мост через VLESS Route» (свой выход для каждого, отдельный раздел). Нужна панель на этой машине и вторая машина.
Как это работает
Заголовок раздела «Как это работает»пользователь → входная нода ─┬─ RU-сайты и IP → напрямую (IP входа) └─ остальное → SS-туннель → машина выходаВ конфиг профиля входной ноды добавляется исходящий Shadowsocks и правила: куда отправлять российский трафик, а что оставить напрямую. На машине выхода поднимается нода с одним служебным инбаундом, она ничего не раздаёт пользователям, только завершает туннель.
Направление выбираете вы
Заголовок раздела «Направление выбираете вы»Главный вопрос настройки: куда должен идти российский трафик. Подсказка у каждого варианта прямо в меню говорит о последствиях, а выглядит результат так:
Режим «Через мост». Зарубежные сайты видят чистый иностранный IP входа, а русские сервисы получают родной российский адрес машины выхода. Капч «вы заходите из-за границы» на русских сервисах нет.
| Сервис | Видит IP |
|---|---|
yandex.ru/internet и RU-сайты |
машину выхода |
ifconfig.me и зарубежные |
входную ноду |
Режим «Напрямую со входной ноды». RU-сайты остаются на российском входе, а зарубежное уходит через вторую машину и получает иностранный адрес.
| Сервис | Видит IP |
|---|---|
yandex.ru/internet и RU-сайты |
входную ноду |
ifconfig.me и зарубежные |
машину выхода |
Режим можно поменять в любой момент одним прогоном «Настроить заново», и направление переключится без переустановки: объекты переиспользуются.
Настройка
Заголовок раздела «Настройка»- Машина выхода. Выбирается из машин с настроенным SSH-доступом (или вводится адрес вручную, и тогда скрипт сам предложит настроить доступ).
- Порт моста. По умолчанию
9999,EnterEnterEnterEnterEnterEnter оставит его. - Направление трафика. Таблица выше.
- Название моста. Одно имя для всех объектов в панели,
EnterEnterEnterEnterEnterEnter подставит название SSH-машины: сквадKazan bridge, служебный пользовательbridge-kazan, нода и профильKazan-bridge. - Нода на второй машине. Если её там нет, скрипт предложит установить всё удалённо: Docker (с зеркалами на случай блокировок), контейнер ноды, регистрацию в панели и открытие порта в ufw. Машине выхода не нужны ни домен, ни сертификаты: она просто слушает порт и завершает туннель.
- Профиль входной ноды. В него добавляется исходящий и правила. Позже можно подключить ещё профили, например когда появится вторая входная нода.
В конце мастер настройки проверяет связность живьём: подключена ли нода к панели, отвечает ли порт моста, и напоминает, как проверить результат с клиента.
Под капотом: правила в профиле
В режим «Через мост» в конфиг профиля добавляется исходящий и такие правила:
{ "ip": ["geoip:private"], "outboundTag": "BLOCK" },{ "protocol": ["bittorrent"], "outboundTag": "BLOCK" },{ "ip": ["geoip:ru"], "outboundTag": "SR_BRIDGE_SS" },{ "domain": ["geosite:category-ru"], "outboundTag": "SR_BRIDGE_SS" }В режиме «Напрямую со входной ноды» у geoip:ru и geosite:category-ru меняется outboundTag на DIRECT, и добавляется замыкающее правило: весь остальной трафик профиля уходит в SR_BRIDGE_SS. При расширенных RU-списках в конец добавляется ещё одно правило с ext:geosite-ruex.dat:ru-available-only-inside, ему всегда назначается мост.
Меню моста
Заголовок раздела «Меню моста»Серверный роутинг (мост): Kazan
Мост: 203.0.113.20:9999 Нода 203.0.113.20 подключена к панели Порт 9999 отвечает с этой машины
1. Подключить ещё профиль входная нода этого профиля пойдёт через тот же выход 2. RU-списки: расширенные (вернуть стандартные) переключатель общий для всех мостов; файл списков ставится на входные ноды 3. Настроить заново полная настройка с самого начала: машина выхода, порт, режим, профиль 4. Переименовать мост новое имя получат сквад, пользователь, нода и профиль 5. Убрать роутинг профили вернут прямой выход; нода и профиль моста останутсяМостов может быть несколько: каждое со своей машиной выхода, своими объектами в панели и своими подключёнными профилями. Если профиль уже занят другим мостом, скрипт предупредит и предложит перепривязать.
Мост через VLESS Route
Заголовок раздела «Мост через VLESS Route»Мост по странам решает за всех: направление одно на весь профиль. Второй тип отдаёт выбор пользователю. У профиля появляется дополнительный хост в подписке, например «Germany → Moscow», и выбрав его, пользователь целиком выходит через машину моста: и русские, и зарубежные сайты видят её IP. Обычный хост работает как раньше.
| Хост в подписке | RU-сайты видят | Зарубежные видят |
|---|---|---|
| Germany (обычный) | по общим правилам профиля | по общим правилам профиля |
| Germany → Moscow | IP машины моста | IP машины моста |
Хосты переключаются в клиенте в любой момент, без переустановки и второй подписки: телефон может жить на «Germany → Moscow» ради банков, а компьютер на обычном «Germany».
Как это устроено
Заголовок раздела «Как это устроено»Номер маршрута это штатное поле хоста в панели (vlessRouteId). Панель вшивает число в UUID ссылки, входная нода читает его и отправляет соединение через нужный исходящий. Пользователь ничего не настраивает: просто выбирает хост с понятным названием.
- Линия на каждый выход. Сколько машин выхода, столько линий, у каждой свой номер маршрута и своя статистика у сервисного пользователя в панели.
- Переиспользование выхода. Вторая линия на тот же выход создаётся без новой машины: тот же туннель, свой сервисный пользователь и свой учёт трафика.
- Несколько входов. Пункт «Подключить ещё профиль» добавляет хост «его вход → этот выход» на второй входной ноде тем же номером маршрута.
- Гео не мешает. Правила маршрутов стоят выше гео-правил: назначенный пользователь уезжает на свой выход целиком, остальные живут по общим правилам.
Под капотом: правила и UUID
В профиль входной ноды добавляются исходящий и правила с номерами маршрутов:
{ "vlessRoute": 1, "outboundTag": "DIRECT" },{ "vlessRoute": 2, "outboundTag": "SR_BRIDGE_SS_kazan" }Маршрут 1 служебный: прямой выход со входной ноды, хост для него создаётся, только если профиль уже разделён по странам. Номер живёт в третьей группе UUID: пользователь 9d5f42a1-7b3c-4d8e-… на маршруте 2 получает ссылку с 9d5f42a1-7b3c-0002-…, и именно эту пару байтов нода читает как номер.
Настройка
Заголовок раздела «Настройка»- Машина выхода. Новая машина по SSH или строка «Выход моста …» из уже настроенных: та же линия, свой сервисный пользователь.
- Порт и название. По умолчанию
9999и имя SSH-машины,EnterEnterEnterEnterEnterEnter оставит оба. - Профиль входной ноды. Только VLESS: маршрут ездит в UUID ссылки, у Trojan и Shadowsocks его нет. Профили, уже занятые другими мостами, помечаются в списке.
- Номер маршрута. Свободный номер предлагается сам, занятые не предложат.
- Название хоста. По умолчанию «вход → выход», например «Germany → Moscow».
Дальше скрипт работает сам: если на машине уже бежит контейнер ноды без записи в панели, предложит подключить его как есть, без переустановки. ufw на машине выхода включается автоматически: порты, которые уже слушают снаружи, остаются открытыми, закрывается всё прочее.
Меню моста
Заголовок раздела «Меню моста»Мост через VLESS Route: Kazan (маршрут 2)
Мост: 203.0.113.20:9999 Нода 203.0.113.20 подключена к панели Порт 9999 отвечает с этой машины Хост в подписке: Germany → Kazan
1. Скрыть хост из подписок 2. Подключить ещё профиль 3. Настроить заново 4. Переименовать мост 5. Убрать роутингОтключение мягкое: хост уходит из подписок, правила из профиля, а пользователь со старой закэшированной ссылкой просто возвращается к общим правилам, ничего не ломается.
Расширенные RU-списки
Заголовок раздела «Расширенные RU-списки»Стандартное правило geosite:category-ru покрывает все домены в зонах .ru, .su, .рф и именные списки. Но русские сервисы, живущие на иностранных доменах, в него не попадают и остаются не у дел.
Пункт «RU-списки» подключает списки проекта runetfreedom, обновляемые ежедневно. Добавляется одно правило для доменов, доступных только изнутри России (ext:ru-available-only-inside):
- Ничего не заменяется. Стандартные правила остаются как есть, новое правило добавляется поверх.
- Всегда российский выход. Доменам из списка обеспечен выход через РФ в любом режиме работы моста.
- Ставится на входные ноды. Решения о маршрутизации принимает входная нода, туда и ложится файл списков, отдельно от штатных геоданных Xray.
- Обновляется само. Каждый день в 4:30 свежая версия списков скачивается с зеркал и проверяется по контрольной сумме. Ноды перезапускаются только если файл изменился.
Под капотом: файлы и cron
Директория/usr/local/remnawave_reverse
Директорияserver-routing
- kazan.bridge (мост: машина, порт, режим, объекты панели)
- ruex.state (состояние расширенных списков)
- ruex-update.sh (ежедневный обновлятор)
- ruex-update.log (последние 50 строк журнала)
Строка в crontab -l выглядит так: 30 4 * * * bash /usr/local/remnawave_reverse/server-routing/ruex-update.sh. Обновлятор скачивает датник с четырёх зеркал, сверяет sha256 и раскладывает файл на входные ноды; рестарт нод вызывается через API панели и только при реальном изменении файла.
Проверка с клиента
Заголовок раздела «Проверка с клиента»Подключитесь пользователем из обычного сквада (где входная нода) и откройте два сайта:
yandex.ru/internet покажет IP входной ноды, ifconfig.me покажет IP машины выхода.
yandex.ru/internet покажет IP машины выхода, ifconfig.me покажет IP входной ноды.
Выберите у клиента хост моста, например «Germany → Moscow»: ifconfig.me покажет IP машины моста, обычный хост вернёт свой привычный адрес.
Отключение
Заголовок раздела «Отключение»«Убрать роутинг» возвращает профилям прямой выход, удаляет служебного пользователя и сквад, закрывает порт в ufw на второй машине. Нода и профиль моста остаются, они больше ничего не маршрутизируют, и их можно удалить в панели вручную, если они не нужны.
