Первый раз я поймал это на созвоне с клиентом из Дубая. Прокси в Telegram стоял уже месяц: чаты летали, файлы уходили за секунду. А звонок рвался каждые две минуты. В статистике провайдера узла я потом увидел свой домашний IP. Причина - выключенная галочка «Использовать прокси для звонков». Один чекбокс, который в интерфейсе выглядит второстепенной мелочью, а на деле решает, пойдет голос через узел или напрямую.
Дальше - куда нажимать на десктопе и на телефоне, почему чат и звонок в Telegram ведут себя по-разному, какой узел брать под голос и как проверить, что звонки идут через прокси, а не мимо него.
Где в Telegram живет нужный чекбокс
На десктопе: «Настройки», «Продвинутые настройки», «Тип соединения». По умолчанию там автоматический режим, его нужно переключить на «Использовать собственный прокси» и выбрать SOCKS5. В полях «Хост» и «Порт» - адрес и порт узла, в «Логин» и «Пароль» - данные авторизации, если провайдер их выдает. Жмете «Сохранить».
Сразу под этими полями появляется галочка «Использовать прокси для звонков». Вот она и есть тот самый переключатель. Пока она пустая, весь голосовой и видеотрафик идет напрямую, мимо вашего туннеля. После сохранения статус должен смениться на «Подключен».
На телефоне логика та же, но спрятано глубже. Android: «Настройки», «Данные и хранилище», раздел «Прокси» (в некоторых сборках - «Тип соединения»), «Добавить прокси», SOCKS5, адрес, порт, логин, пароль, сохранить. iOS: «Настройки», «Данные и хранилище», «Прокси», «Добавить прокси». После добавления узел нужно активировать и отдельно включить тумблер для звонков.
Момент, на котором спотыкаются почти все: на мобильном опция для голоса не появляется, пока не добавлен хотя бы один узел и он не выбран активным. Сначала сохраняем прокси, потом возвращаемся в тот же экран и включаем опцию для звонков. Сделать наоборот - интерфейс просто не покажет переключатель.

Зачем вообще заворачивать голос в прокси
С текстом все понятно: переписка, файлы, вложения. Со звонками история другая, и причин держать их под туннелем как минимум три.
Первая - публичные и полупубличные сети. Гостевой Wi-Fi в отеле, коворкинге или аэропорту часто режет голосовой трафик целиком, оставляя только обычный веб. Через собственный узел звонок проходит предсказуемо: вы не зависите от того, какие порты открыл администратор точки доступа. В корпоративных сетях, где на UDP висит жесткое правило, спасает то же самое.
Вторая - единый адрес во всех сценариях. Если вы ведете переговоры с партнерами из одной страны и держите стабильную геолокацию, странно выглядеть в чате голландским адресом, а в звонке домашним. Собеседник редко смотрит на такие детали, а службы, которые фиксируют подключения, смотрят всегда.
Третья - тестирование собственных сценариев. Команды, которые делают продукты с голосовыми функциями, проверяют, как звонок ведет себя из другой страны. Свой узел в нужном регионе дает воспроизводимую картину: одинаковый маршрут, одинаковая задержка, никакой зависимости от случайного мобильного оператора.
Без галочки звонок уходит с вашего реального IP
Telegram разделяет транспорт для разных типов трафика. Текстовые сообщения, медиа и обновления ленты идут по одному каналу, голосовые и видеозвонки - по другому. Это не прихоть разработчиков, а физика: голосу нужна низкая задержка, а TCP с подтверждениями и повторной отправкой пакетов для нее плохо подходит. Звонки исторически едут на UDP, где потеря одного пакета не блокирует следующие.
Прокси из настроек по умолчанию заворачивает только основной канал. Звонковый транспорт остается на прямом соединении. Отсюда классическая картина: чат работает через узел, а звонок выходит с адреса вашего провайдера. Если важно, чтобы собеседник и сеть видели один и тот же адрес во всех сценариях, галочку ставят обязательно.
Пример из практики. Клиент вел переговоры с партнерами из трех стран и держал один стабильный адрес в Нидерландах, чтобы не прыгать по геолокациям. Через месяц выяснилось: все видеозвонки шли с домашнего IP, потому что опцию для звонков никто не включил. Для чатов все было ровно, для голоса - нет. Мелочь, которая ломает всю аккуратную схему.
Что происходит с голосом на уровне протокола
SOCKS5 - не шифрование, а транспорт. Он работает на уровне сессии и просто пересылает пакеты между клиентом и целевым сервером, не заглядывая внутрь. Шифрование в Telegram живет отдельно, на уровне протокола MTProto, и сохраняется независимо от того, есть прокси или нет. Узел не делает переписку безопаснее, он меняет точку выхода в сеть.
Для звонков важна деталь реализации SOCKS5 под названием UDP ASSOCIATE. Расширение разрешает гонять через прокси датаграммы, а не только TCP-соединения. На Reddit в тредах, где администраторы жалуются на «звонок соединяется, а звука нет», причина почти всегда одна: узел умеет только TCP CONNECT. Чат при этом работает, звонок - нет. Многие дешевые прокси этим грешат, и про UDP в описании тарифа обычно молчат.
MTProto-прокси устроен иначе: отдельная точка входа в инфраструктуру Telegram, и трафик звонков через нее тоже требует поддержки на стороне узла. Разница в архитектуре простая. SOCKS5 - универсальный транспорт, который видят все приложения. MTProto - специализированный шлюз только для Telegram. Под голос чаще берут SOCKS5: его проще контролировать, и он предсказуемее по задержке.
Отдельно про балансировку. Если у вас несколько узлов в одном регионе, клиент не выбирает лучший под голос автоматически, он берет активный в настройках. Ручное переключение перед важным звонком на узел с меньшим пингом дает больше, чем любые автоматические схемы. Проверяется элементарно: короткий тестовый звонок и субъективная оценка задержки.
Почему чат летает, а звонок не соединяется
Причина номер один - отсутствие UDP на узле. Проверяется косвенно: если после включения галочки звонок висит на «Соединении», а текстовые сообщения идут без проблем, дело почти наверняка в этом. Вторая по частоте - блокировка UDP в вашей локальной сети. Корпоративные фаерволы и гостевые Wi-Fi в отелях режут датаграммы целиком, оставляя только TCP.
Третья причина - задержка. Голос чувствителен к RTT и джиттеру, и узел, который нормально тянет переписку, может быть непригоден для звонков. Прокси в другой части света добавляет к каждому пакету лишние 150-250 мс. Разговор превращается в переговоры по рации: говорите, ждете, слушаете.
Четвертая - банальная нехватка полосы на самом узле. Тариф с лимитом в пару мегабит спокойно держит чат и полностью разваливается на голосе, особенно если параллельно идет загрузка файлов. Голосовой сессии нужно немного, но стабильно, а не «в среднем».
Задержка, джиттер и потери: что реально слышно
По опыту, до 60 мс дополнительной задержки разговор не меняется. От 60 до 120 мс появляется легкое ощущение паузы, собеседники начинают перебивать друг друга. Выше 150 мс диалог становится неудобным, выше 250 мс им пользуются только по необходимости.
Джиттер важнее среднего пинга. Ровные 90 мс слышны хуже, чем скачущие от 30 до 200. Провайдеры прокси редко показывают эту метрику в панели, поэтому единственный способ проверить узлы в деле - несколько коротких звонков в разное время суток. Вечерний пик и утренние часы дают совсем разную картину на одном и том же адресе.
Потери пакетов до 1% обычно маскируются кодеком и почти не слышны. От 3% появляются металлические призвуки и обрывы слов. Выше 5% разговор теряет смысл. Такая картина на узле с хорошим пингом говорит о перегруженном канале, а не о расстоянии.
Какой узел брать под голос
Правило простое: чем ближе узел к вам и к собеседнику, тем лучше. Идеальный вариант - обе стороны в одном регионе, прокси там же. Для регулярных созвонов с Европой я держу узлы в Амстердаме и Франкфурте, для азиатских партнеров - в Сингапуре. Разница в 80 мс слышна, разница в 200 мс делает разговор неудобным.
Тип узла тоже имеет значение. Резидентские адреса выглядят для сети как обычный домашний пользователь, мобильные - как абонент сотового оператора. Для голоса это часто важнее, чем для сбора данных: звонковый трафик идет в реальном времени, и любые переподключения слышны. Датацентровые узлы дешевле и быстрее, но их пул адресов плотнее, и качество канала скачет при массовой нагрузке.
Нюанс, о котором редко говорят: не берите один узел под все задачи сразу. Если через тот же адрес параллельно идет сбор данных или работа с API, полоса упирается в потолок, и звонок рассыпается именно в момент пика. Для голоса лучше отдельный узел, пусть даже с меньшим лимитом трафика.
Настройка на телефоне: Android и iOS
Android и iOS различаются мелочами интерфейса, логика одна. Сначала добавляете узел в разделе прокси, потом активируете его, потом включаете использование для звонков. На Android переключатель для голоса лежит в том же окне, где список прокси. На iOS он появляется после того, как вы выбрали добавленный прокси активным.
Отдельно про мобильный интернет. При переключении между Wi-Fi и сотовой сетью TCP-соединение переживает переезд, а UDP-сессия для звонка часто рвется. Если разговор прерывается ровно в момент выхода из дома или офиса, дело не в прокси, а в смене сети. Помогает привычка начинать важный звонок уже в стабильной сети.
И про энергосбережение. Агрессивные настройки батареи на Android умеют усыплять фоновые сетевые процессы, включая поддержание туннеля. Симптом: первые минуты разговора все хорошо, потом звук пропадает. Лечится добавлением Telegram в исключения оптимизации батареи.
Проверка, что звонки реально идут через прокси
Статус «Подключен» ничего не говорит о звонках. Он означает лишь то, что основной канал поднялся. Проверять нужно отдельно и лучше двумя способами сразу.
Первый способ - тестовый звонок на второй аккаунт, где вы видите входящий. Если на принимающей стороне в деталях соединения отображается адрес вашего узла, а не домашний, все работает. Второй способ - панель прокси-провайдера: во время разговора там должен появиться рост потребления трафика на выбранном узле. Нет трафика при активном звонке - голос идет мимо.
Третий, косвенный, но быстрый: сравните поведение звонка с включенной и выключенной галочкой. Если с включенной опцией звонок соединяется на 2-3 секунды дольше, это нормально, добавляется один хоп. Если не соединяется совсем, узел не держит UDP.
Если статус не становится «Подключен»
Первое, что проверяю, - порт. Провайдеры часто выдают нестандартный порт, и его легко перепутать с соседней строкой в письме. Второе - формат логина: у некоторых сервисов он выглядит как длинная строка с префиксом страны, и лишний пробел при копировании молча ломает авторизацию.
Третье - локальный фаервол и антивирус. На Windows защита сети иногда блокирует исходящие соединения на нестандартный порт, и Telegram не может достучаться до узла. Проверяется временным отключением защиты на минуту, не дольше. Соединение появилось - добавьте клиент в исключения, а защиту верните на место.
Четвертое - сам узел. Прокси мог быть отозван провайдером или уйти на обслуживание, а в панели это не всегда видно сразу. Перезапуск Telegram помогает реже, чем принято думать, но попробовать стоит: клиент кеширует состояние соединения и иногда не перечитывает настройки до полной перезагрузки приложения.
Пятое - два прокси одновременно. Если в системе уже настроен туннель на уровне ОС, а вы добавляете еще один внутри Telegram, они начинают спорить за маршрут. Оставьте один слой, иначе диагностика превращается в угадайку.
Где брать узлы под голосовые звонки
Под звонки я держу отдельный набор адресов и беру их в каталоге 3seller.com/proxy. Фильтры по стране и типу там есть, это удобно, когда нужно быстро подобрать узел под регион партнера, а не перебирать наугад. Для голоса смотрю на три параметра: поддержка UDP, география и лимит одновременных подключений.
Практика такая: под созвоны беру резидентский адрес в нужной стране, под рабочие чаты оставляю датацентровый в том же регионе, чтобы не смешивать нагрузку. Каталог удобен тем, что параметры видны сразу и не нужно выпрашивать их у поддержки в переписке. Плюс можно взять небольшой пакет на пробу и понять, как ведет себя регион именно на вашем канале.
Что реально экономит время: заранее проверить узел коротким звонком на тестовый аккаунт и посмотреть на джиттер. Три минуты проверки спасают сорокаминутный разговор с постоянным «алло, ты меня слышишь?».
Мелкие настройки, которые влияют на звук
В самом Telegram есть переключатель качества звонков. В мобильном клиенте он спрятан в настройках данных и хранилища, на десктопе - в продвинутых настройках. Если канал узкий, снижение битрейта дает более стабильный звук, чем попытка держать высокое качество на грани. При прокси с лимитом трафика это заметно и по расходу.
Еще помогает отключить автозагрузку медиа в мобильной сети на время разговора. Параллельная загрузка видео в фоне забивает канал и добавляет джиттер именно в голосовую сессию. Проверено на себе: разница между «нормально» и «идеально» часто лежит в фоновых загрузках, а не в прокси.
И про гарнитуру. Bluetooth-наушники добавляют собственную задержку в 100-200 мс, она складывается с задержкой узла. Если разговор кажется ватным, попробуйте проводную гарнитуру, прежде чем менять прокси. Пару раз я менял регион узла зря, когда проблема была в беспроводных наушниках.
Короткий чек-лист перед важным звонком
Проверьте статус прокси, убедитесь, что галочка для звонков включена, сделайте тестовый звонок на второй аккаунт и посмотрите на задержку. Если все три пункта сходятся, голос пойдет через ваш узел, а не через домашний интернет. Дальше дело за сетью собеседника, и тут вы уже мало что решаете.
И последнее. Настройки в Telegram живут отдельно от системных, после обновления приложения их стоит перепроверять. У меня опция для звонков один раз слетела после крупного апдейта на десктопе, заметил только по статистике провайдера. Теперь открываю 3seller.com/proxy, сверяю активный узел и проверяю галочку перед каждым созвоном, где на кону что-то важнее моего удобства.