Telegram
Настройки, Telegram. В прежних версиях вкладка называлась MTProto-прокси; её адрес по-прежнему /settings/mtproto. Карточка «Telegram через WebSocket», прокси-сервер и общий транспорт к Telegram присутствуют всегда. Карточка секретов и карточка WEB-прокси Telegram Desktop появляются, только когда прокси-сервер включён, потому что без него ни та, ни другая ничего не делают. Карточка прокси и карточка WEB-прокси скрывают свои поля, пока их переключатели выключены.
Руководства по трём режимам работы с Telegram собраны в разделе Telegram. Здесь перечислены поля.
Telegram через WebSocket
Первая карточка вкладки. Её переключатель включает WebSocket-мост для всей сети, без участия сетов.

| Параметр | Описание | По умолчанию |
|---|---|---|
| Включить Telegram через WebSocket | system.mtproto.bridge.enabled. Направляет TCP-соединения к диапазонам адресов Telegram со всех устройств за b4 и с самого роутера в слушатель моста. Фильтрация устройств действует; ограничения по исходному интерфейсу или устройству нет. Пока страница не сохранена, карточка показывает Сохраните, чтобы применить, после сохранения переключатель применяется без перезапуска. Прокси-сервер не нужен. | Выкл |
Пока переключатель включён и сохранён, в заголовке карточки стоит Работает, если правило перенаправления установлено, слушатель моста запущен и выше правила перенаправления нет правила другой программы, проверяющего локальные сокеты, и Не работает в остальных случаях; подсказка на статусе называет, чего не хватает. Блок Состояние моста настроек не содержит:
| Элемент | Значение |
|---|---|
| Порт слушателя | Порт слушателя моста, 13443, фиксированный, и семейства адресов, на которых он слушает, либо не запущен |
| Активные соединения | Соединения через мост, открытые в данный момент |
| Диапазоны Telegram | Сколько диапазонов используется, откуда взят список поверх встроенного (telegram.org, зеркало b4, сохранённая копия, файл GeoIP или встроенный список, когда ни один источник недоступен) и когда он обновлялся. См. Список адресов |
| Переправлено сессий | Сколько сессий переправил мост и когда была последняя |
| Строка счётчиков | Появляется, когда хотя бы один из них больше нуля. Передано без разбора - соединения, которые не были MTProto или не сопоставились с дата-центром и ушли в Cloudflare Worker или напрямую, как описано в разделе Соединения, которые мост передаёт дальше. Ошибок подключения к дата-центру - сессии MTProto, для которых не подключился ни один маршрут. Закрыто без рукопожатия - соединения, которые закрылись или молчали всё время ожидания рукопожатия, так и не прислав первый байт |
| Кнопка | Что делает |
|---|---|
| Проверить снова | Повторяет проверку поддержки TPROXY в ядре |
| Обновить адреса | Скачивает список адресов заново, не дожидаясь ежедневного обновления, и сообщает число диапазонов или ошибку |
Предупреждения над блоком состояния, каждое из которых разобрано в разделе Устранение неполадок:
| Предупреждение | Значение |
|---|---|
| Нет поддержки TPROXY | В ядре нет модуля tproxy или socket, поэтому правило перенаправления не устанавливается, а заголовок показывает Не работает. Предупреждение называет пакеты, которые их добавляют, или недостающие модули |
| Настройка файрвола выключена | В разделе Настройки, Основные, Файрвол включено Пропустить настройку IPTables/NFTables, поэтому при старте b4 не устанавливает правил. Сохранение устанавливает правила маршрутизации до следующего перезапуска |
| Слушатель моста завершился с ошибкой | Порт 13443 занять не удалось, ошибка приводится. b4 повторяет попытки, а до успеха соединения Telegram идут обычным путём |
| Замечание о слушателе IPv6 | Показывается при включённой поддержке IPv6, когда не открылся только сокет IPv6. IPv4 идёт через мост, а Telegram по IPv6 идёт обычным путём |
| Не удалось скачать список адресов | Не ответили ни telegram.org, ни одно из зеркал b4. Используемый список сохраняется, и предупреждение называет его источник |
| Не проверено с TUN | b4 работает с движком захвата TUN, с которым мост не проверялся |
| Избыточные сеты | Сеты с режимом маршрутизации Telegram через WebSocket (встроенный), каждый со ссылкой, выключенные помечены выключен. Пока переключатель включён, они избыточны |
Примечание под блоком состояния сообщает, что голосовые звонки (UDP) и QUIC через мост не идут.
Прокси-сервер
| Параметр | Описание | По умолчанию |
|---|---|---|
| Включить MTProto прокси | Запускает слушающий сокет. От него зависят секреты и WEB-прокси: оба используют секреты этого сокета, и их карточки скрыты, пока он выключен. | Выкл |
| Адрес привязки | Адрес прослушивания. 0.0.0.0 - все интерфейсы, 127.0.0.1 - только сам хост. | 0.0.0.0 |
| Порт | Порт прослушивания. | 3128 |
| Доступ из интернета | system.mtproto.expose. Добавляет правило файрвола, которое принимает соединения на порт с любого адреса, по IPv4 и IPv6, и возвращает его после перезагрузки файрвола. Действует, пока прокси включён. См. Доступ из интернета. | Выкл |
| Домен для Fake SNI | Домен, который предъявляет fake-TLS рукопожатие, и сайт, к которому на порт 443 проксируется непрошедшее проверку соединение. Также используется при генерации секрета. | storage.googleapis.com |
При выключенном переключателе Доступ из интернета b4 не добавляет правил файрвола для порта: хост, чей файрвол отбрасывает входящие соединения, оставляет прокси недоступным снаружи, а хост без файрвола оставляет доступным. Правило действует только на этом хосте; роутер перед ним, CGNAT и файрвол облачного провайдера разобраны в разделе Что переключатель открыть не может.
Секреты
Список, а не одно значение. У каждой записи есть имя, свой переключатель, своя ссылка и своя метка в логе соединений.
Принимаются только fake-TLS секреты: hex, начинается с ee, не короче 17 байт. Padded-секрет (dd), голый ключ или base64-секрет отклоняются при сохранении конфигурации, и сохранение не проходит. Домен внутри секрета - метка, с именем, которое присылает клиент, он не сверяется.
Конфигурация, в которой у всех секретов выключены переключатели, стартует, пишет secrets: 0 и сразу закрывает каждое клиентское соединение.
Транспорт к Telegram
Общий для прокси-сервера и для моста «Telegram через WebSocket», включён ли он переключателем выше или режимом маршрутизации сета, поэтому действует и при выключенном прокси-сервере. Маршруты и порядок их перебора описаны на странице Транспорт к Telegram.
| Параметр | Описание | По умолчанию |
|---|---|---|
| Режим транспорта | Прямой TCP, Авто (WebSocket -> TCP) или Только WebSocket. Относится к прокси-серверу; мост принудительно использует Авто. | Авто |
| DC Relay | host:port VPS, пересылающего трафик к дата-центрам. Игнорируется мостом и режимом Только WebSocket. См. DC Relay. | пусто |
| Домен Cloudflare Worker | Одно или несколько имён *.workers.dev через запятую. Пробуется последним из маршрутов WebSocket. | пусто |
| Обрабатывать соединения с Worker сетами | system.mtproto.cfworker_dpi. Появляется, когда задан домен Worker. Отдаёт собственные соединения b4 с Worker в обработку пакетов, и сет, цели которого покрывают Worker, применяет к ним свою стратегию DPI. Домены через Cloudflare-прокси в любом случае идут без обработки DPI. См. Обработка DPI. | Выкл |
| CF-резерв | Использует ротируемый пул проксируемых через Cloudflare доменов для дата-центров, которые не обслуживает собственный узел Telegram. | Вкл |
| Свой WebSocket-домен | Один домен, проксирующий WebSocket-трафик к Telegram. b4 подставляет kws1., kws2. и так далее по дата-центрам. | пусто |
| IP edge-сервера Telegram | Заменяет адрес, на который идёт соединение с именем kws*.web.telegram.org. На свой домен не влияет. | 149.154.167.220 |
| Имя для фронтинга WS-узла Telegram | TLS-имя, например sprinthost.ru, которое пробуется на собственном узле Telegram, когда рукопожатие под его именами kws* остаётся без ответа. См. Имя для фронтинга. | пусто (выключено) |
WEB-прокси Telegram Desktop
| Параметр | Описание | По умолчанию |
|---|---|---|
| Включить WEB-канал | Отдаёт поток MTProto поверх HTTPS на хосте релея. | Выкл |
| Хост релея | Публичное DNS-имя без схемы, порта и пути, для международных имён - punycode. Нужен отдельный хост с публично доверенным TLS на 443. | пусто |
| Порт relay | Пусто отдаёт релей на порту веб-сервера, только по хосту релея. Значение открывает собственный слушатель, который отвечает на хост релея как релей, а на любое другое имя или IP - страницей-заглушкой, так что веб-интерфейс через него недоступен. Не может совпадать с портом веб-сервера или MTProto-прокси. Заполняется значением 443 при первом включении канала. | пусто |
| Доступ из интернета | system.mtproto.web_proxy.expose. Виден, пока в поле Порт relay указан порт, а также пока он включён при пустом поле, чтобы его можно было выключить. Добавляет правило файрвола, которое принимает соединения на порт релея с любого адреса, по IPv4 и IPv6. При пустом поле релей работает на порту веб-сервера, который открывает только собственный переключатель веб-сервера, вместе с интерфейсом. См. Доступ из интернета. | Выкл |
| Сертификат для хоста relay | PEM-пара, отдаваемая только на порту релея. Пусто: пара веб-сервера, которая тогда должна быть доверенной для хоста релея и переводит интерфейс только на HTTPS с предупреждением о несовпадении имени при входе по IP. Оба поля либо ни одного. | пусто |
| Страница-заглушка | Загрузка, скачивание и удаление самодостаточного HTML-файла до 1 МиБ, заменяющего встроенную заглушку; хранится как webproxy_page.html рядом с конфигурацией. | встроенная |
Переключатель и хост действуют со следующего запроса; порт и сертификат перезапускают только слушатель релея. Полный список предварительных условий - на странице WEB-прокси Telegram Desktop.
Дополнительно
Три тайм-аута, у которых 0 выбирает встроенное значение, а не отключает что-либо.
| Параметр | Описание | По умолчанию |
|---|---|---|
| Макс. подключений | Предел принятых TCP-соединений, считается до рукопожатия, поэтому его расходуют и пробы, и сканирование портов. Это не предел авторизованных клиентов, и к WEB-каналу он не относится. 0 - встроенное значение. | 2048 |
| TCP User Timeout (сек) | Принудительно закрывает клиентское соединение после стольких секунд неподтверждённых данных, поэтому телефон, ушедший из сети, обнаруживается примерно за две минуты вместо примерно пятнадцати. 0 - встроенное значение, -1 отключает. Относится только к принятому клиентскому сокету; соединения в сторону Telegram используют фиксированные 120 секунд. | 120 |
| Тайм-аут простоя (сек) | Закрывает ретранслируемую сессию после стольких секунд без трафика в обе стороны. 0 - встроенное значение, -1 отключает. | 300 |
Резервные источники
| Параметр | Описание | По умолчанию |
|---|---|---|
| URL списка CF-доменов | Откуда раз в час обновляется пул CF-доменов. | список tg-ws-proxy |
| Резервное зеркало списка DC | Использует зеркало ниже, когда собственный эндпоинт Telegram со списком дата-центров недоступен. | Вкл |
| URL зеркала списка DC | Какое зеркало использовать. Зеркало по умолчанию размещено автором b4 и получает IP-адрес запрашивающего, и ничего кроме. | зеркало автора b4 |
| Ожидание рукопожатия в мосте (сек) | Сколько мост ждёт первого байта от клиента, прежде чем разорвать соединение. Действует и для переключателя «Telegram через WebSocket», и для сетов в режиме маршрутизации «Telegram через WebSocket», поэтому поле находится здесь и видно при выключенном переключателе. 0 - встроенное значение; -1 означает ожидание без ограничения, а не отключение ожидания. | 180 |
Список дата-центров и пул CF-доменов скачиваются, только пока включён MTProto-прокси, переключатель «Telegram через WebSocket» или включённый сет в режиме маршрутизации «Telegram через WebSocket». Когда всё это выключено, b4 не обращается ни к Telegram, ни к хостам списков. Списки скачиваются при запуске и при сохранении, которое включает что-то из перечисленного или меняет URL либо переключатель списка, без перезапуска; затем пул CF-доменов обновляется раз в час. Неудачная загрузка повторяется через 30 секунд, и после каждой следующей неудачи ожидание удваивается, до часа, поэтому список, который не удалось скачать при запуске, например до поднятия внешнего канала, приходит без перезапуска. Пока загрузка не удалась, используются встроенные адреса и домены.
b4 сам перезапускает MTProto-прокси, когда меняется переключатель включения, порт, адрес привязки, Fake SNI, режим транспорта, свой WebSocket-домен, IP edge-сервера, имя для фронтинга или CF-резерв, и переносимые сессии при этом разрываются. Секреты и поля WEB-прокси применяются без его перезапуска; смена порта релея или сертификата перезапускает только слушатель релея. Переключатели Доступ из интернета меняют только правило файрвола. Переключатель «Telegram через WebSocket» действует после сохранения, без перезапуска сервиса.