Ретрансляторы

Что решают ретрансляторы

Когда IP вашего exit-сервера блокируется, клиенты теряют доступ. Узел-ретранслятор даёт им отечественную точку входа, которую сложнее блокировать:

Клиент → Ретранслятор (отечественный IP) → Exit-сервер (за границей) → Интернет

Цензоры видят трафик на отечественный IP. Ретранслятор пересылает чистый TCP на exit-сервер — всё шифрование end-to-end между клиентом и exit-сервером. Ретранслятор никогда не видит открытый текст.

Как работают ретрансляторы

Ретранслятор использует Realm — лёгкий TCP-forwarder с нулевым копированием (~5МБ бинарный файл Rust). Он слушает порт 443 (настраивается) и пересылает весь трафик на порт 443 exit-сервера. Нет Docker, нет VPN-ПО, нет управляющей панели.

Все протоколы работают через ретранслятор:

  • Reality — end-to-end handshake, ретранслятор полностью прозрачен
  • XHTTP — маршрутизация через ретранслятор с явным параметром sni=
  • WSS — режим домена, маршрутизация с sni=domain&host=domain

Развёртывание ретранслятора

Сначала разверните exit-сервер нормально. Затем разверните ретранслятор, указав на него:

meridian relay deploy RELAY_IP --exit EXIT_IP

Provisioner:

  1. Устанавливает требуемые пакеты и включает BBR
  2. Настраивает firewall UFW (разрешение SSH + порт ретранслятора)
  3. Загружает бинарный файл Realm (версия закреплена, SHA256-проверен)
  4. Пишет конфиг Realm и запускает systemd-сервис
  5. Проверяет связь ретранслятор → exit

Флаги

ФлагПо умолчаниюОписание
--exit/-e EXIT(требуется)IP или имя exit-сервера
--name NAME(авто)Дружественное имя ретранслятора (например, ru-moscow)
--port/-p PORT443Порт прослушивания на ретрансляторе
--user/-u USERrootSSH-пользователь на ретрансляторе
--yes/-yПропустить подтверждающие подсказки

Пример со всеми параметрами

meridian relay deploy 10.0.0.5 --exit 1.2.3.4 --name ru-moscow --port 443 --user ubuntu

Как подключаются клиенты

После развёртывания ретранслятора все существующие страницы подключения клиентов автоматически переиспользуются. URL-адреса ретрансляторов показаны как рекомендуемое подключение, прямые URL-адреса — как резервные.

Когда вы добавляете новых клиентов, URL-адреса ретранслятора включаются автоматически:

meridian client add alice --server 1.2.3.4   # URL-адреса ретранслятора включены

Управление ретрансляторами

meridian relay list                    # все ретрансляторы на всех exit-серверах
meridian relay list --exit 1.2.3.4     # ретрансляторы для конкретного exit
meridian relay check RELAY_IP          # 4-точечная проверка здоровья
meridian relay remove RELAY_IP         # остановить сервис + удалить из конфига

Проверка здоровья

meridian relay check тестирует четыре вещи:

ПроверкаЧто тестируется
SSH к ретрансляторуМожно ли подключиться к серверу ретранслятора?
Сервис RealmАктивен ли systemd-сервис?
Ретранслятор → exit TCPМожет ли ретранслятор достичь exit-сервера на порту 443?
Локально → ретранслятор TCPМожет ли ваша машина достичь ретранслятора на его порту прослушивания?

Удаление ретранслятора

meridian relay remove RELAY_IP [--exit EXIT_IP] [--yes]

Это остановит сервис Realm, удалит ретранслятор из учётных данных exit-сервера и переиспользует все страницы подключения клиентов (обратно только на прямые URL-адреса).

Несколько ретрансляторов

Вы можете присоединить несколько ретрансляторов к одному exit-серверу — например, ретрансляторы в разных городах или ISP:

meridian relay deploy 10.0.0.5 --exit 1.2.3.4 --name ru-moscow
meridian relay deploy 10.0.0.6 --exit 1.2.3.4 --name ru-spb

Клиенты видят все варианты ретрансляторов на своей странице подключения.

Решение проблем

Конфликт портов

Другой сервис использует порт 443 на ретрансляторе. Проверьте с помощью ss -tlnp sport = :443 и остановите конфликтующий сервис, или используйте другой порт с --port 8443.

Блокирование firewall

Убедитесь, что порт 443 открыт на firewall облачного провайдера ретранслятора / группе безопасности, не только в UFW.

Exit-сервер недостижим

Ретранслятор должен быть способен достичь exit-сервера на порту 443. Тестируйте с curl -I https://EXIT_IP из ретранслятора, или запустите meridian relay check.

Сервис ретранслятора не запущен

Проверьте сервис Realm: systemctl status meridian-relay. Посмотрите логи: journalctl -u meridian-relay --no-pager -n 20.

On this page