MiddleProxy handshake всегда падает с error.EndOfStream — прокси откатывается в direct (auto), звонки Telegram не работают #219
Replies: 4 comments
-
|
Архитектура Telegram НЕ поддерживает звонки через MTProxy, а только через SOCKS5, который невозможно замаскировать Работать с mtproto они не будут |
Beta Was this translation helpful? Give feedback.
-
|
Сам баг у меня не воспроизводится, issue больше похож на сгенерированный bullshit |
Beta Was this translation helpful? Give feedback.
-
|
Чтобы можно было посмотреть предметно, нужна дополнительная диагностика с того же запуска:
Без этого указать на конкретную причину нельзя. Но даже если мы починим handshake - на звонки это не повлияет |
Beta Was this translation helpful? Give feedback.
-
|
Source IP для обоих MiddleProxy адресов = 109.172.101.111. NAT отсутствует. // ip -4 addr show // ip route get 91.108.4.221 // ip route get 91.105.192.110 AWG / WireGuard туннель Пространство имен в которых работает прокси: sysctl Единственное нестандартное правило — TCPMSS clamp для DPI-bypass: Полный конфиг: [server] [censorship] [access.users] [access.direct_users] [access.disabled_users] Поля upstream, public_ip, middle_proxy_nat_ip — не заданы. Но если это все равно не поможет, так как сам Telegram не поддерживает звонки через MTProto, то можно дальше на анализировать. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Proxy version
0.20.1
OS & kernel
Linux 6.8.0-107-generic
Telegram client & version
iOs 26.0
Pre-flight checklist
timedatectl statusshowsNTP synchronized: yes).ss -tlnp | grep <port>shows LISTEN).curl -v --connect-timeout 5 https://<server-ip>:<port>returns a TLS error, not a timeout).RLIMIT_NOFILEwarning (if present) is just a warning — I understand it does not block connections.journalctl -u mtproto-proxy -n 200 --no-pagerand the full output is attached below.config.toml (secrets redacted)
Full proxy log (last 200 lines)
Diagnostics output
Additional context
Что проверено
proxy_secret корректный. 128-байтовый секрет, зашитый в бинарник v0.20.1, совпадает с https://core.telegram.org/getProxySecret побайтово (проверено через xxd).
Адреса MiddleProxy корректные. Лог подтверждает успешное обновление кэша с адресами, совпадающими с живым getProxyConfig:
dc4 = 91.108.4.221:8888 ✓
dc203 = 91.105.192.110:443 ✓
secret_len = 128 ✓
TCP-соединение устанавливается, сбой — на уровне прикладного протокола. 91.105.192.110:443 напрямую доступен с сервера (подтверждено через nc, ss показывает ESTABLISHED). Сервер закрывает соединение после получения handshake-пакета, отправив 0 байт (have=0 need=16). Проблема не TCP-уровня.
Прокси корректно откатывается в Upstream mode: direct (auto). Сообщения и медиа в direct mode работают нормально. Broken — только звонки.
Влияние на звонки Telegram. При use_middle_proxy = true:
Прокси сразу после старта откатывается в direct (auto) из-за провалов handshake
Звонки Telegram зависают на «Соединение...» ровно ~20 секунд (таймаут Telegram на установку relay)
После чего звонок обрывается автоматически
P2P отключён на всех устройствах — не влияет
Гипотеза
MiddleProxy-сервер закрывает соединение на step=waiting_rpc_handshake_response — после того как прокси отправил handshake-запрос, но до того как сервер отправил 16-байтовый ответ. Это означает, что сервер отвергает сам handshake-пакет (неверный MAC, неверный формат или несовместимость версии протокола). Поскольку proxy_secret и адреса верны, проблема вероятно в том, как конструируется или шифруется handshake frame.
Beta Was this translation helpful? Give feedback.
All reactions