Skip to content

Latest commit

 

History

History
212 lines (155 loc) · 7.55 KB

File metadata and controls

212 lines (155 loc) · 7.55 KB

TeleGO Logo

TeleGO

Высокопроизводительный Telegram MTProxy на Go с TLS-маскировкой

EnglishВозможностиБыстрый стартКонфигурацияDocker


Telegram заблокирован? TLS-маскировка TeleGO делает ваш прокси неотличимым от обычного HTTPS-трафика для цензоров. Настройка за 2 минуты


Почему TeleGO?

Функция TeleGO mtg Официальный MTProxy
TLS-маскировка Да Да Нет
Защита от проб Да Да Нет
Метрики по пользователям Да Нет Нет
Лимит IP на пользователя Да Нет Нет
Умная блокировка IP Да Нет Нет
Защита от OOM Да Нет Нет
Горячая перезагрузка Да Да Нет
Поддерживается (2026) Да Частично Нет

Возможности

Сеть

  • Event-driven I/O — на базе gnet с epoll/kqueue
  • Zero-copy — прямая работа с буферами без копирования
  • Пул буферов — отсутствие аллокаций в горячих путях
  • Оптимизированный TCPTCP_NODELAY, TCP_QUICKACK, буферы 64KB

Безопасность

  • TLS-маскировка — получает реальные сертификаты от маскирующего хоста
  • Защита от проб — нераспознанные клиенты перенаправляются на маскирующий хост
  • Защита от replay-атак — 64-шардовый LRU-кэш с TTL
  • Обнуление ключей — чувствительные данные обнуляются при закрытии соединения
  • Динамический размер записей (DRS) — исходящие TLS ApplicationData начинаются с записей по 1369 байт и наращиваются до полного размера после 8 записей или 128 КБ, имитируя поведение Chrome/Firefox
  • Split-TLS — первая исходящая запись ApplicationData отправляется размером 1 байт, чтобы обойти пассивные сигнатуры по первой записи

Эксплуатация

  • Мульти-пользователь — именованные секреты с отслеживанием по пользователям
  • Лимиты подключений — ограничение IP на пользователя с умной блокировкой
  • Prometheus-метрики — статистика подключений и трафика по пользователям
  • Горячая перезагрузка — SIGHUP и отслеживание изменений файла конфигурации
  • SOCKS5 upstream — маршрутизация через SOCKS5 (Hysteria2, VLESS и др.)

Быстрый старт

1. Сгенерируйте секрет:

telego generate www.google.com
# secret=0123456789abcdef0123456789abcdef  <- в конфиг
# link=tg://proxy?server=...               <- ссылка для клиентов

2. Создайте config.toml:

[general]
bind-to = "0.0.0.0:443"

[secrets]
alice = "0123456789abcdef0123456789abcdef"

[tls-fronting]
mask-host = "www.google.com"

3. Запустите:

telego run -c config.toml -l

Флаг -l выводит ссылки для Telegram с автоопределением публичного IP.


Конфигурация

[general]
bind-to = "0.0.0.0:443"
log-level = "info"

# Защита от абьюза
max-connections-per-ip = 100  # Макс. подключений с одного IP (включая неавторизованные)
max-ips-per-user = 3          # Макс. IP на один секрет
ip-block-timeout = "5m"       # Время блокировки IP
# handshake-timeout = "5s"    # Таймаут хэндшейка (по умолчанию 5с)

[secrets]
user1 = "0123456789abcdef0123456789abcdef"
user2 = "fedcba9876543210fedcba9876543210"

[tls-fronting]
mask-host = "www.google.com"
# splice-host = "127.0.0.1"   # Куда перенаправлять нераспознанных клиентов
# splice-port = 8080
# splice-idle-timeout = "30s" # Таймаут бездействия для splice-соединений (по умолчанию 30с)

# Anti-DPI шейпинг записей (направление proxy -> client)
# enable-drs = true        # Сначала маленькие записи, потом полный размер (1369 -> 16384 байт после 8 записей или 128 КБ)
# enable-split-tls = true  # Первая запись ApplicationData размером 1 байт

[performance]
prefer-ip = "prefer-ipv4"
idle-timeout = "5m"

[upstream]
# socks5 = "127.0.0.1:1080"   # Upstream через SOCKS5

[metrics]
bind-to = "127.0.0.1:9090"

Docker

docker run -d \
  --name telego \
  -p 443:443 \
  -v /path/to/config.toml:/config.toml \
  scratchnet/telego:latest

Docker Compose

version: '3.8'
services:
  telego:
    image: scratchnet/telego:latest
    restart: unless-stopped
    ports:
      - "443:443"
    volumes:
      - ./config.toml:/config.toml:ro

Установка

Из исходников

git clone https://github.com/Scratch-net/telego.git
cd telego
make build

Готовые бинарники

Скачайте с Releases.

Go Install

go install github.com/scratch-net/telego/cmd/telego@latest

Метрики

Метрика Тип Описание
telego_connections_active Gauge Активные подключения
telego_ips_active Gauge IP с активными подключениями
telego_ips_tracked Gauge Уникальные IP в LRU кэше
telego_ips_blocked Gauge Заблокированные IP
telego_blocked_total Counter Всего блокировок
telego_traffic_in_bytes_total Counter Входящий трафик
telego_traffic_out_bytes_total Counter Исходящий трафик

Все метрики имеют лейбл user для разбивки по пользователям.


Лицензия

Apache License 2.0


Благодарности

  • mtg — оригинальная Go-реализация MTProxy
  • mtprotoproxy — Python референсная реализация
  • telemt — высокопроизводительная Rust-реализация