В админке: Ноды
Ретрансляция через ноду входа
Когда ретрансляция помогает тем, у кого сеть блокирует ноду за границей, чего она не решает, что видит нода входа, как добавить и проверить ретрансляцию, второй сервер в подписках и ограничения.
На этой странице
Ретрансляция — это порт на одной ноде, входе, который пересылает зашифрованный трафик сервера другой ноды, выхода, как есть. Тем, у кого сеть блокирует адрес выхода, достаточно подключиться ко входу: вход передаёт их байты на выход, а всё остальное делает выход. По дороге ничего не расшифровывается: сессия, как и раньше, идёт от телефона до выхода.
Вход пересылает средствами ядра (одна собственная таблица nftables, mistgate_relay, с правилом DNAT на каждую ретрансляцию), поэтому почти не тратит процессор и память. Ключей ретранслируемого сервера на нём нет.
Когда это помогает#
| Что блокирует человека | Через ретрансляцию |
|---|---|
| Адрес или подсеть выхода заблокированы у его оператора или в его регионе, а остальная страна до неё достаёт | Помогает. Люди подключаются к адресу входа; вход обращается к выходу из своего дата-центра. |
| Соединения с зарубежными хостингами замерзают после нескольких килобайт (в основном мобильные операторы) | Помогает, если сеть самого входа не в этом списке и плечо от входа до выхода не замерзает. |
| Белый список на мобильной сети: открываются только одобренные адреса | Только если адрес входа сам в списке. Обычный VPS, как правило, не в нём; проверьте, прежде чем что-то обещать. |
| IP выхода заблокирован по всей стране, включая дата-центр входа | Нет плечо от входа до выхода тоже закрыто. Проверка перед включением это покажет. |
| Под фильтр попал и вход (его адрес, диапазон его хостера) | Нет люди не достанут вход. Это видно по страновой проверке самой ноды входа в Доступности. |
| Протокол режется на всём пути | Нет ретрансляция передаёт тот же протокол, и он режется так же. |
Ретрансляция — средство против блокировки по адресу или по сети, а не по стране, и только при входе, до которого люди достают. Диалог показывает три подсказки до выбора: как страновая проверка видит выход, достаёт ли вход до выхода (известно, если ТСПУ-зонд работает с этой ноды) и достают ли люди до входа. «Нет данных» значит «неизвестно», а не «всё хорошо».
Что видит страна входа#
- Видит: адреса людей, которые подключаются (домашние и мобильные линии там привязаны к человеку), время, объёмы и адрес выхода.
- Не видит: сайты, содержимое и ключи. Сессия зашифрована от телефона до выхода. Оператор самого входа видит то же, что любой оператор: соединения с адресом.
- Изъятый вход даёт таблицу «порт → адрес выхода» и то, что нода хранит для своих собственных серверов. О том, куда ходят люди, на нём нет ничего.
Ретрансляция в стране с цензурой подчиняется закону этой страны: её хостер может быть обязан идентифицировать Вас и дать доступ к серверу. Ретрансляция видит адреса и объёмы, но не содержимое. Хостер может и закрыть сервер; ретрансляция убирается одним нажатием, и на входе нет сведений о том, куда ходят люди. Это не юридическая консультация: решите сами, подходит ли Вам и Вашим людям страна входа.
Как это работает#
- Вы выбираете сервер другой ноды и порт на входе (по умолчанию — порт самого выхода, если он свободен на входе).
- Панель проверяет плечо: нода входа пробует сервер выхода (для TCP порт должен отвечать как собственный сервер Mistgate; для UDP выход считает полученные пакеты).
- Ретрансляция включается: агент входа ставит пересылку.
- Панель проверяет путь: третья нода (не вход и не выход; сама панель — только если другой ноды нет) достаёт до сервера выхода через порт входа.
- Только после этого ретрансляция «Работает», и только тогда в подписках появляется второй сервер. Ретрансляция, не прошедшая любую проверку, снова выключается, а диалог говорит, на каком этапе она остановилась.
Учёт остаётся на выходе: трафик, квоты, лимиты скорости, устройства и защита от торрентов работают на каждого человека как раньше. Выход видит адрес входа вместо адреса человека. Трафик проходит вход дважды (от людей и к выходу), поэтому лимит трафика и нагрузка входа учитывают оба направления, а задержка — это путь от человека до входа плюс от входа до выхода. MTU не меняется.
Добавить ретрансляцию#
- Обновите агент ноды входа, если так сказано в Обновлениях: старые агенты не умеют пересылать («Обновите агент ноды, чтобы добавить ретрансляцию»). Фаервол сервера должен пропускать пересылаемый трафик; если он его отбрасывает (политика
FORWARDDROP, как по умолчанию у UFW и Docker), ретрансляция не заработает, и карточка скажет об этом. - Откройте ноду, до которой люди не достают: Ноды → эта нода → Входы → Добавить вход…. Если нода не открывается, окно начинается так: «Из России de1 не открывается у MTS. Дай этим людям другой путь — нода и её ключи не меняются».
- Выберите Через другую ноду: «Люди подключаются к ноде, которую видит их сеть; она пересылает трафик к de1 как есть». Лучший вариант подсказан («Подходит msk1: видна из MTS»). Вход по IPv6 пока серый, с причиной.
- Выберите ноду входа (Через какую ноду). Первыми идут Подходят: их видят из MTS, затем Остальные ноды; у каждой — код страны, видят ли её люди и, если ТСПУ-зонд запускается с неё, достаёт ли она до de1. Нода, которая уже пересылает серверы de1, пишет «Уже пересылает 2 сервера de1».
- Отметьте серверы для ретрансляции. У каждого есть порт на входе (авто — порт выхода, если свободен, иначе свободный). Сервер, который нельзя ретранслировать, серый, с причиной.
- Проверить и включить выполняет обе проверки и включает ретрансляцию. Только проверить выполняет плечо и добавляет ретрансляцию выключенной; включите её кнопкой Включить в её строке в течение 15 минут или проверьте снова (для включения нужна проверка плеча, пройденная не более 15 минут назад). Окно показывает ход выполнения и результат по каждому серверу; Назад возвращает к выбору ноды.
- В строке — «Работает, проверено 3 мин назад» или «Не включено» с этапом:
leg(вход не достаёт до сервера выхода: блокировка, маршрут, фаервол выхода),path(порт на входе недоступен снаружи: фаервол или хостер входа, либоFORWARDотбрасывает). Проверить сейчас повторяет проверки; Выключить и Удалить останавливают пересылку на входе.
Начать можно и со стороны входа: нода входа → Входы → группа Через msk1 ходят к → Ретранслировать другую ноду…. Это то же окно, но с серверами любой ноды, а не одной.
На ноде выхода каждая ретрансляция — вход Через msk1 на вкладке Входы; на ноде входа — строка в группе Через msk1 ходят к («→ DE de1»). Удаление профиля с ноды или вывод ноды из флота удаляют и зависящие от них ретрансляции; диалог говорит, сколько их.
Наблюдение#
Каждая включённая ретрансляция входит в круги проверок глазами клиента как отдельная цель: панель подключается через пробрасываемый порт входа с профилем и данными доступа выхода, как это делает приложение, и читает через него 64 КБ, поэтому передача, которая началась и остановилась, считается заморозкой.
- В строке ретрансляции виден последний круг: «Через ретрансляцию: работает, 182 мс, 4 мин назад» или этап, на котором случился сбой.
- Там же видно, сколько байтов и пакетов прошло через пересылку с тех пор, как агент входа её установил, и когда агент это прочитал. Старые агенты без счётчиков ничего не показывают.
- После двух неудачных кругов подряд на странице «Здоровье» открывается алерт
relay_down: «Ретрансляция de1 через msk1 не работает». Он называет этап словами:leg— вход не достаёт до выхода;entry— пересылка на входе не установлена;path— снаружи через вход ничего не проходит;freeze— передача зависает после первых килобайтов. Кнопка алерта Открыть вход открывает вкладку Входы ноды выхода на этом входе. - Алерт уступает место, пока открыт собственный алерт проверки выхода или
node_downлюбой из двух нод, и закрывается, когда ретрансляция снова работает. Telegram его тоже присылает.
Собственные проверки панели идут с сервера панели, из-за пределов страны входа, поэтому они ловят сломанное плечо или зависание на пути панели, но не заморозку, которую ТСПУ применяет к людям внутри страны; для неё смотрите отчёты bsbord и kl!ck в разделе «Доступность».
Второй сервер в подписках#
За каждую работающую ретрансляцию человек получает двойник сервера выхода сразу после него в подписке: те же ключи, SNI и отпечаток сертификата, но с адресом входа и портом ретрансляции. Имя заканчивается кодом страны входа: 🇩🇪 DE · VLESS · via RU (в русской подписке — через RU, в китайской — 经 RU), сжатое под лимит Happ в 30 символов. Двойник есть во всех форматах (список ссылок, Mihomo YAML, Xray JSON, sing-box JSON); в группе Mihomo это ещё один пункт того же селектора.
- Кому: всем, кому разрешён сервер выхода и разрешена нода входа. Новой настройки нет; ограничить можно выбором нод у человека.
- Когда: при следующем обновлении подписки (по умолчанию раз в 12 часов). У выключенной или сбойной ретрансляции двойника нет.
- Что видят люди: второй сервер, который можно выбрать, если первый не подключается. Серверы, которыми они пользуются, не меняются.
Что нельзя передать#
| Сервер | Почему | Что делать |
|---|---|---|
| VLESS за CDN | Люди подключаются к CDN, а не к ноде. | Ничего: ретрансляция ему не нужна. |
| Сервер с сертификатом Let's Encrypt, выписанным на IP-адрес ноды | На адресе входа приложения отвергнут этот адрес. | Взять сертификат на имя или самоподписанный с отпечатком. |
| Сервер с диапазоном port hopping | Ретрансляция передаёт один порт. | Двойник использует этот один порт: port hopping через ретрансляцию не работает. |
| AmneziaWG | Его двойник — отдельный ключ, и он ещё не сделан. | Позже. |
Ретрансляция работает только по IPv4: пересылка на входе идёт по IPv4 с обеих сторон.
С MCP#
Токены «Админ» читают и ведут ретрансляции: relays_list, relay_candidates и relay_check читают и проверяют, relay_plan / relay_apply создают, включают, переносят и удаляют (всегда с одобрения владельца). Ни один инструмент не показывает адрес ноды. См. MCP.