Узлы ретранслятора
Что решают ретрансляторы
Заголовок раздела «Что решают ретрансляторы»Когда IP сервера выхода заблокирован, пользователи теряют доступ. Ретранслятор даёт им точку входа на отечественном сервере, которую сложнее заблокировать:
Клиент → Ретранслятор (отечественный IP) → Сервер выхода (за границей) → InternetЦензоры видят трафик к отечественному IP. Ретранслятор пересылает необработанный TCP выходу; шифрование от конца к концу между клиентом и выходом, поэтому ретранслятор никогда не видит открытый текст.
Как работают ретрансляторы
Заголовок раздела «Как работают ретрансляторы»Ретранслятор запускает Realm, маленький TCP форвардер с нулевым копированием. Он слушает на портс 443 (конфигурируется) и пересылает слушателю Reality выхода. Нет Docker и нет панели работающей на ретрансляторе.
Ретрансляторы несут трафик Reality. XHTTP, WSS и Hysteria2 остаются на собственном адресе и домене выхода и остаются в той же подписке как альтернативы.
Развернуть ретранслятор
Заголовок раздела «Развернуть ретранслятор»Разверните выход сначала, затем укажите ретранслятор на него:
meridian relay add 203.0.113.10 --exit 198.51.100.10Meridian добавляет ретранслятор в вашу топологию и применяет её:
- Подготавливает сервер ретранслятора (пакеты, BBR, затвердевание SSH, брандмауэр, который открывает только SSH и портс ретранслятора)
- Устанавливает Realm (версия-закреплена, SHA256-проверена) как сервис systemd
- Указывает ретранслятор на слушатель Reality выхода
- Публикует ретранслятор в подписке каждого клиента
| Флаг | По умолчанию | Описание |
|---|---|---|
--exit/-e EXIT | (требуется) | IP или имя сервера выхода |
--name NAME | (авто) | Дружественное имя для ретранслятора (например ru-moscow) |
--port/-p PORT | 443 | Портслушания на сервере ретранслятора |
--sni HOST | цель выхода | Цель маскировки Reality для этого ретранслятора; пропустите для использования выхода |
--user/-u USER | root | SSH пользователь на ретрансляторе |
--ssh-port PORT | 22 | SSH портс на сервере ретранслятора |
--yes/-y | Пропустить диалоги подтверждения |
Пример со всеми вариантами
Заголовок раздела «Пример со всеми вариантами»meridian relay add 203.0.113.10 --exit 198.51.100.10 --name ru-moscow \ --port 443 --sni dl.google.com --user ubuntu --ssh-port 2222 --yesКак клиенты подключаются
Заголовок раздела «Как клиенты подключаются»Существующие клиенты получают ретранслятор при следующем обновлении подписки, и их страницы подключения перечисляют его. Новые клиенты получают его автоматически:
meridian client add alice # ретранслятор включенУправление ретрансляторами
Заголовок раздела «Управление ретрансляторами»meridian relay list # все ретрансляторыmeridian relay list --exit 198.51.100.10 # ретрансляторы для одного выходаПроверьте хопы ретранслятора — каждый сервис Realm запущен, каждый хоп достигает следующего, и публичный вход принимает соединения — затем протестируйте реальный трафик через весь маршрут:
meridian check 203.0.113.10meridian testCheck также измеряет каждый хоп: из каждого хопа это загружает сайт маскировки выхода через следующий хоп, отправляя тот же SNI который клиенты отправляют, и сообщает время подключения, время до первого байта и сколько байт пришло. Передача которая замёрзает между примерно 8 и 32 КБ это подпись дросселирования на том хопе и сообщается как предупреждение; обычное исправление это хост ретранслятора у другого провайдера (другая сеть или ASN). Если домашняя страница сайта маскировки меньше чем 32 КБ, проверка хопа неубедительна вместо прохождения.
Чтобы вывести ретранслятор из эксплуатации, удалите цепи через него. Meridian показывает то, что будет удалено, запрашивает подтверждение и очищает сервис Realm, правила брандмауэра и опубликованные точки входа; существующие клиенты теряют ретранслятор при следующем обновлении подписки:
meridian relay remove 203.0.113.10Несколько ретрансляторов
Заголовок раздела «Несколько ретрансляторов»Присоедините несколько ретрансляторов к одному выходу, например в разных городах или сетях:
meridian relay add 203.0.113.10 --exit 198.51.100.10 --name ru-moscowmeridian relay add 203.0.113.11 --exit 198.51.100.10 --name ru-spbКлиенты получают каждый ретранслятор в их подписке. Для цепей ретранслятора с более чем одним каналом используйте meridian setup.
Белые списки мобильных операторов
Заголовок раздела «Белые списки мобильных операторов»Во время некоторых ограничений мобильного интернета в России операторы пропускают только утверждённый список сайтов и адресов. Отчёты варьируются по оператору, региону и неделе, и ни один оператор не опубликовывает свой список. Meridian не обнаруживает или отслеживает белые списки; этот раздел охватывает что вы можете установить сегодня и что остаётся ручным.
Что развёртыватели сообщают
Заголовок раздела «Что развёртыватели сообщают»- Сети отличаются. Некоторые, похоже, смотрят только на имя сервера (SNI) которое подключение объявляет. Другие также проверяют IP адрес назначения. Где только имя проверяется, прямой путь Reality с разрешённым именем может пройти. Где IP также проверяется, первый хоп должен быть адресом на списке.
- Адреса облака отечественных провайдеров обычно первый хоп. Не каждый адрес от провайдера в списке: люди описывают одну подсеть диапазона провайдера быть разрешённой пока другая из того же провайдера не является. Провайдеры могут также ограничить приватных клиентов, ограничить как часто вы можете пересоздать сервер или дротель пропускную способность.
- Иностранные CDN адреса обычно не разрешены на мобильных сетях. Относитесь к режиму домена через Cloudflare как резервный для домашних подключений, не как ответ белого списка.
- Ссылка ретранслятора на выход может быть нарушена тоже. Ретранслятор который достигает пользователей может всё ещё потерять его подключение к иностранному выходу.
Ретранслятор на разрешённом адресе
Заголовок раздела «Ретранслятор на разрешённом адресе»Арендуйте маленький сервер на отечественном провайдере чей адрес разрешён на мобильных сетях ваших пользователей. Списки разрешённых диапазонов поддерживаемые сообществом существуют, но только тест с мобильного подключения пока ограничения активны доказывает это. Затем добавьте его как ретранслятор и дайте ему разрешённое имя:
meridian relay add 203.0.113.10 --exit 198.51.100.10 --name ru-mobile --sni allowed.example.comС --sni, только этот вход ретранслятора в подписке объявляет то имя. Meridian добавляет имя в слушатель Reality выхода (те же ключи) и даёт ретранслятору его собственный слушатель на выходе. Он маршрутизирует только то имя в Reality, отправляет всё остальное в сайт маскировки и достижим только с последнего хопа ретранслятора. Собственная цель маскировки выхода и его другие записи не меняются. Имя не должно быть достижимо с выхода, потому что выход всё ещё представляет свою собственную цель маскировки. Зондировщик который достигает ретранслятора без действительного ключа поэтому переправлен на ту цель вместо получения ответа прокси.
Затем проверьте ретранслятор и тестируйте с сети которая имеет значение:
meridian check 203.0.113.10meridian testmeridian test с вашей собственной машины не может сказать вам что разрешённая мобильная сеть пропускает. Попробуйте это на реальном устройстве на той сети.
Выберите SNI выхода
Заголовок раздела «Выберите SNI выхода»--sni на meridian deploy и meridian node add установлено цель маскировки для прямого пути Reality выхода. Цель должна быть сайтом который выход может достичь с TLS 1.3, и deploy проверяет реальный трафик через это и останавливается если ничего не проходит. Перед разворачиванием проверьте кандидата с meridian check IP --sni HOST. На сети которая проверяет только имена, разрешённое имя может позволить прямому пути пройти, но будто имя работает зависит от оператора, поэтому тестируйте каждое.
Что Meridian не делает
Заголовок раздела «Что Meridian не делает»- Это не говорит вам либо ретранслятор IP на каком-либо списке оператора или ограничения активны.
- Это не устанавливает фронтирование через облако отечественного CDN. Режим домена построен и протестирован для Cloudflare.
- Ретранслятор несёт только Reality. XHTTP, WSS и Hysteria2 остаются на выходе.
- Это не туннель через третью сторону вызывает или сервисы сообщений.
Устранение неполадок
Заголовок раздела «Устранение неполадок»Конфликт портов
Заголовок раздела «Конфликт портов»Другой сервис использует портс слушания на ретрансляторе. Проверьте с ss -tlnp sport = :443 и остановите его или выберите другой портс с --port 8443.
Блокировка брандмауэра
Заголовок раздела «Блокировка брандмауэра»Убедитесь, что портс ретранслятора открыт в брандмауэре вашего облачного провайдера или группе безопасности, не только в UFW.
Выход недостижим
Заголовок раздела «Выход недостижим»Ретранслятор должен достичь портс Reality выхода. Запустите meridian test для проверки маршрута от конца к концу и meridian check EXIT для проверки выхода самого.
Сервис ретранслятора не работает
Заголовок раздела «Сервис ретранслятора не работает»На сервере ретранслятора, выведите сервисы форвардера и прочитайте их логи. Хосты ретранслятора используют нейтральные имена (модули netfwd-*, конфиги /etc/netfwd/) так ничего на них не называет Meridian, Realm или ретранслятор:
systemctl list-units 'netfwd-*'journalctl -u 'netfwd-*' --no-pager -n 20