mirror of
https://github.com/by-sonic/tglock.git
synced 2026-09-05 18:16:09 +03:00
Диагностика от @alexsagaidak в #42 показала третий случай, которого ни один счётчик не различал. У него ноль отклонённых и живые туннели, то есть оба показателя говорят «всё хорошо»: соединений 17 · туннелей 6 · DC4 · Запасной Telegram IP · сбоев 0 · падений маршрутов 26 · отклонено 0 Клиент, который дошёл до прокси, но не сумел договориться, не попадал ни в blocked, ни в ws_failures. Ошибка из handle() выбрасывалась в `let _ =`, соединение закрывалось, и наружу это выглядело как active, дёрнувшийся вверх и обратно. По диагностике неотличимо от клиента, который подключился и работает. Теперь такие клиенты считает unknown_clients, а журнал называет адрес и причину. Причин две: MTProto-init не разбирается под текущим секретом. Почти всегда это ссылка tg://proxy от прошлого запуска: секрет — её половина, и клиент с сохранённой старой ссылкой попадает ровно сюда. Со стороны Telegram это и есть «прокси настроен неверно и будет отключён» — то, с чем пришли в #37 и что до сих пор нельзя было подтвердить со стороны прокси. SOCKS5-приветствие не разбирается. Сюда же попадает MTProto-соединение, ушедшее в SOCKS5-ветку по неоднозначному первому байту, если полный init не успел прийти за PROTOCOL_PROBE_TIMEOUT. На loopback этого не бывает, а через Wi-Fi с телефона — уже вопрос задержки. От ws_failures отличается тем, что тот растёт после успешного рукопожатия с клиентом: там договорились с клиентом, но не смогли с Telegram. Различать их важно, иначе непонятно, в какую сторону смотреть. В интерфейсе — метрика «Не опознаны» с пояснением, в строке статуса CLI — поле «не опознано N». Co-authored-by: by-sonic <171230345+by-sonic@users.noreply.github.com>
This commit is contained in:
@@ -97,6 +97,25 @@ LAN-режим превращал бы машину в открытый прок
|
||||
и дошёл, но попросил адрес, который мы не пропускаем. Первый виден как ноль
|
||||
соединений и ноль отказов, второй — как соединения есть, отказы растут.
|
||||
|
||||
Третий случай нашёлся, когда репортёр #42 прислал диагностику: у него было ноль
|
||||
отказов и работающие туннели, то есть оба счётчика говорили «всё хорошо».
|
||||
Клиент, который дошёл до прокси, но не сумел договориться, не попадал ни в
|
||||
один из них. Соединение просто закрывалось: `active` дёргался вверх и обратно.
|
||||
|
||||
Теперь такие клиенты считает `unknown_clients`, и журнал называет адрес и
|
||||
причину. Их две:
|
||||
|
||||
- MTProto-init не разбирается под текущим секретом. Почти всегда это ссылка
|
||||
`tg://proxy` от прошлого запуска: секрет — её половина, и клиент со
|
||||
сохранённой старой ссылкой попадает ровно сюда. Со стороны Telegram это и
|
||||
есть «прокси настроен неверно и будет отключён» (#37).
|
||||
- SOCKS5-приветствие не разбирается. Сюда же попадает MTProto-соединение,
|
||||
ушедшее в SOCKS5-ветку по неоднозначному первому байту, если полный init не
|
||||
успел прийти за `PROTOCOL_PROBE_TIMEOUT`.
|
||||
|
||||
Счётчик `ws_failures` от них отличается тем, что растёт после успешного
|
||||
рукопожатия с клиентом: там договорились с клиентом, но не смогли с Telegram.
|
||||
|
||||
## Учёт состояния
|
||||
|
||||
`Stats::ws` считает **установленные** туннели: счётчик поднимается после
|
||||
|
||||
Reference in New Issue
Block a user