Перейти к содержанию

Журнал изменений

4.9.0

Поддержка PROXY protocol v1/v2 (#50).

  • PROXY protocol — приём заголовков HAProxy PROXY protocol v1 (текст) и v2 (бинарный) на клиентских портах. Необходимо при работе за балансировщиком нагрузки (HAProxy, nginx, AWS NLB), который передаёт IP клиента. Включение: --proxy-protocol (CLI), proxy_protocol = true (TOML) или PROXY_PROTOCOL=true (Docker).
  • Автоматическое определение v1 и v2, извлечение реального IP клиента, повторная проверка IP ACL по реальному адресу.
  • Команда v2 LOCAL принимается для health-check зондов балансировщика.
  • Новые метрики Prometheus: teleproxy_proxy_protocol_connections_total, teleproxy_proxy_protocol_errors_total.
  • Исправлено: автоматически сгенерированный секрет не записывался в TOML-конфиг.
  • Документация: полная SEO-оптимизация с уникальными мета-описаниями страниц, OpenGraph-тегами, JSON-LD и robots.txt.
  • Переводы: русская документация на 100%, фарси и вьетнамский расширены до 38%.
  • Добавлен TON-кошелёк как вариант пожертвования наряду с Tribute.

4.8.0

Зонды состояния DC (#47).

  • Зонды задержки DC - периодическое измерение TCP-рукопожатия со всеми 5 дата-центрами Telegram, публикация в виде гистограмм Prometheus (teleproxy_dc_latency_seconds), счётчиков ошибок и gauge последней задержки. Помогает операторам диагностировать медленную загрузку и выбирать оптимальную маршрутизацию DC.
  • По умолчанию отключено. Включение: --dc-probe-interval 30 (CLI), dc_probe_interval = 30 (TOML) или DC_PROBE_INTERVAL=30 (Docker env).
  • Зонды выполняются только в master-процессе. Завершение отслеживается через неблокирующий poll для сохранения субмиллисекундной точности.
  • Текстовый эндпоинт статистики включает поля задержки, среднего значения, счётчика и ошибок по каждому DC.

4.7.0

Посекретные квоты, лимиты уникальных IP и срок действия (#26).

  • Квота трафика - ограничение суммарного объёма переданных данных по секрету; при исчерпании активные подключения закрываются, новые отклоняются. Настраивается в байтах или в читаемом формате (quota = "10G")
  • Лимит уникальных IP - ограничение числа уникальных клиентских IP, одновременно использующих секрет (max_ips = 5). Дополнительные подключения с уже подключённого IP всегда разрешены
  • Срок действия секрета - автоматическое отключение секрета после метки времени (expires = 2025-12-31T23:59:59Z). Существующие подключения продолжают работать; отклоняются только новые
  • Счётчики отклонений по причинам в Prometheus и текстовой статистике (rejected_quota, rejected_ips, rejected_expired)
  • Docker env: SECRET_QUOTA_N, SECRET_MAX_IPS_N, SECRET_EXPIRES_N
  • Поддержка upstream-прокси SOCKS5 (#22)
  • Страница быстрого развёртывания в облаке
  • Документация: инструкции установки/обновления, документация SOCKS5, ссылка на Observatory

4.6.0

Устойчивость к DPI и эксплуатационные улучшения.

  • Вариативность размера ServerHello расширена с ±1 до ±32 байт, имитируя естественное разнообразие размеров цепочки сертификатов и сессионных тикетов реальных TLS-серверов
  • Фрагментация ServerHello: ServerHello и CCS+AppData теперь отправляются как отдельные TCP-сегменты, нейтрализуя DPI, который сопоставляет полный ответ рукопожатия в одном пакете
  • Healthcheck Docker учитывает пользовательский STATS_PORT - ранее был жёстко задан 8888, теперь использует ${STATS_PORT:-8888} (#38)
  • install.sh поддерживает несколько секретов через SECRET с разделителем-запятой или пронумерованные SECRET_N
  • Эндпоинт /link отдаёт ссылки подключения как HTML-страницы со сканируемыми QR-кодами

Новая документация: Устойчивость к DPI - серверные контрмеры, рекомендуемая настройка и инструменты обхода на стороне клиента.

Обнаружение на стороне клиента

Основной вектор обнаружения MTProxy fake-TLS в России - TLS-отпечаток клиента Telegram, который невозможно исправить на стороне сервера. Telegram Desktop исправил несколько артефактов отпечатка; обновляйте клиенты. Для затронутых сетей помогут инструменты обхода DPI на стороне клиента: zapret и GoodbyeDPI.

4.5.0

QR-коды для ссылок подключения.

  • Подкоманда teleproxy link выводит URL прокси и отображает сканируемый QR-код в терминале с помощью символов UTF-8 half-block
  • Docker start.sh и install.sh теперь автоматически показывают QR-коды при запуске - наведите камеру телефона на экран для подключения
  • Встроенный nayuki/QR-Code-generator (MIT) для рендеринга QR без внешних зависимостей на любой платформе
  • E2E-тесты декодируют отрисованный QR-код с помощью pyzbar и проверяют совпадение с ожидаемым URL
  • Документация: новая страница «Ссылки подключения» (en + ru)

4.4.0

  • Диагностическая подкоманда teleproxy check - валидация конфигурации и тестирование подключений перед приёмом клиентов. Проверяет доступность DC, NTP-дрейф часов, зондирование домена fake-TLS и совпадение SNI/DNS. Коды выхода: 0/1/2 (успех/ошибка/неверные аргументы).

4.3.0

Устойчивость подключений в прямом режиме.

  • Автоопределение IPv6: проверка при запуске, включение без -6 если доступен
  • Несколько адресов на DC с синхронным failover при ошибке подключения
  • Повторные попытки подключения с экспоненциальным backoff (200-800 мс, 3 попытки)
  • --dc-override dc_id:host:port для добавления или замены адресов DC (повторяемый). Docker: DC_OVERRIDE=2:1.2.3.4:443,2:5.6.7.8:443
  • Новая метрика: direct_dc_retries / teleproxy_direct_dc_retries_total

4.2.1

  • Исправление сборки aarch64: удалён неиспользуемый x86-специфичный include sys/io.h
  • Добавлена нативная ARM64 glibc-сборка в CI (выявляет платформоспецифичные проблемы, скрытые Alpine/musl)

4.2.0

  • Флаг --stats-allow-net CIDR для расширения доступа к эндпоинту статистики за пределы RFC1918-диапазонов (повторяемый). Docker: STATS_ALLOW_NET=100.64.0.0/10,fd00::/8

4.1.0

Улучшения совместимости с транспортным протоколом MTProto.

  • Обнаружение и логирование транспортных кодов ошибок (-404, -429 и т.д.) от DC в прямом режиме
  • Обнаружение транспортных кодов ошибок в пути разбора клиентских данных medium mode
  • Счётчик пакетов quick ACK: teleproxy_quickack_packets_total
  • Счётчик транспортных ошибок: teleproxy_transport_errors_total

4.0.0

Ребрендинг в Teleproxy. Бинарный файл переименован из mtproto-proxy в teleproxy.

  • Имя бинарного файла: teleproxy (было mtproto-proxy)
  • Префикс метрик Prometheus: teleproxy_ (было mtproxy_)
  • Docker пользователь/пути: /opt/teleproxy/ (было /opt/mtproxy/)
  • Переменные окружения: TELEPROXY_* (старые MTPROXY_* принимаются с предупреждением об устаревании)
  • Docker-образ включает symlink обратной совместимости mtproto-proxy -> teleproxy
  • CLI-флаги и поведение без изменений