Ретрансляторы
Что решают ретрансляторы
Когда 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:
- Устанавливает требуемые пакеты и включает BBR
- Настраивает firewall UFW (разрешение SSH + порт ретранслятора)
- Загружает бинарный файл Realm (версия закреплена, SHA256-проверен)
- Пишет конфиг Realm и запускает systemd-сервис
- Проверяет связь ретранслятор → exit
Флаги
| Флаг | По умолчанию | Описание |
|---|---|---|
--exit/-e EXIT | (требуется) | IP или имя exit-сервера |
--name NAME | (авто) | Дружественное имя ретранслятора (например, ru-moscow) |
--port/-p PORT | 443 | Порт прослушивания на ретрансляторе |
--user/-u USER | root | SSH-пользователь на ретрансляторе |
--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.