English | Русский
Автоматизированная установка MTProxy на Ubuntu 22.04 / 24.04 LTS с Fake TLS обфускацией,
мультисекретами пользователей, watchdog и защитой от DPI
Спонсоры проекта
|
Самый многофункциональный AI-чат в мире |
Все endpoint OpenRouter в России + каталог |
|
Сборка из исходников Telegram без бинарников и патчей. Прозрачно, проверяемо, без сюрпризов. |
Не ломает окружение: изолированный пользователь |
Watchdog, автообновление конфига и бинарника, |
git clone https://github.com/lingeniare/MTProxy.git && cd MTProxy && sudo bash install_mtproxy.shПосле завершения скрипт выведет готовую ссылку
tg://proxy?...и QR-код.
Откройте ссылку на телефоне — Telegram подхватит прокси автоматически.
| # | Действие |
|---|---|
| 1 | Устанавливает системные зависимости (включая cron, если отсутствует) |
| 2 | Настраивает синхронизацию времени (NTP) — сдвиг часов ломает MTProto-рукопожатие |
| 3 | Создает изолированного системного пользователя mtproxy |
| 4 | Компилирует MTProxy из официального репозитория Telegram |
| 5 | Загружает и валидирует конфигурационные файлы Telegram |
| 6 | Подбирает правдоподобный домен для Fake TLS из 11 «нейтральных» (проверка DNS + TLS 1.3 с валидным сертификатом, с учётом JA4/ECH) и генерирует секреты |
| 7 | Автоматически определяет NAT-конфигурацию для облачных VPS |
| 8 | Регистрирует systemd-сервис через wrapper /etc/mtproxy/run.sh (секреты не попадают в unit) с автозапуском, расширенным hardening и ограничением restart-storm |
| 9 | Настраивает watchdog: проверка каждые 2 минуты с защитой flock и автоперезапуском при 3 неудачах подряд |
| 10 | Настраивает ограничение частоты соединений через iptables |
| 11 | Создает задания планировщика: ежедневное обновление конфигурации Telegram и еженедельное обновление бинарника (с flock, валидацией и откатом, бэкап в $INSTALL_DIR) |
| 12 | Открывает порт в межсетном экране и сохраняет правила на случай перезагрузки |
Fake TLS подделывает TLS-рукопожатие под указанный домен. Если домен — google.com, а IP сервера не принадлежит Google, DPI тривиально выявляет подмену по несовпадению SNI ↔ владелец адреса (проверка JA4/ECH) — следом идёт активное зондирование и блокировка.
Поэтому установщик выбирает домен из 11 «нейтральных» сервисов (Microsoft, Discord CDN, Cloudflare, Bing, Adobe, Spotify, Dropbox и др.), проверяя DNS + TLS 1.3 с валидным chain-of-trust (curl --tlsv1.3 --fail, fallback HEAD для CDN). Свой список можно задать через --domain-list.
💡 Порт тоже маскировка. TLS-трафик на нестандартном порту выделяется из фона. Флаг
--port 443маскирует прокси под обычный HTTPS.
У каждого пользователя — собственный секрет
(/etc/mtproxy/secrets.d/<имя>.secret). Отзыв доступа одного не затрагивает остальных.
mtproxy-user.sh add alice # создать пользователя и получить ссылку
mtproxy-user.sh link alice # показать ссылку повторно
mtproxy-user.sh list # список пользователей
mtproxy-user.sh del alice # отозвать доступ| Механизм | Реализация |
|---|---|
| Изоляция привилегий | Выделенный системный пользователь mtproxy (без shell, без home) |
| Защита секретов | /etc/mtproxy/secrets.d (0600, root:root) + wrapper /etc/mtproxy/run.sh — секреты подставляются в рантайме, не видны через systemctl cat / ps |
| Обфускация протокола | Fake TLS с автовыбором из 11 доменов (DNS + TLS 1.3 + валидный сертификат, JA4/ECH) |
| Противодействие DPI | Rate-limiting iptables hashlimit; опция порта 443 |
| Мультисекреты | Отдельный секрет на пользователя (secrets.d), точечный отзыв доступа |
| Hardening | NoNewPrivileges, ProtectSystem=strict, PrivateTmp, LockPersonality, RestrictSUIDSGID, RemoveIPC, SystemCallArchitectures=native, лимиты TasksMax/MemoryMax |
| Watchdog | systemd timer: проверка каждые 2 мин с flock, автоперезапуск после 3 неудач |
| Время | NTP-синхронизация (timesyncd/chrony) |
| Устойчивость | Сохранение правил через netfilter-persistent |
| Автообновление | Конфиг — ежедневно, бинарник — еженедельно (с flock, валидацией и откатом) |
| NAT | Автоматическое определение --nat-info для облачных окружений |
Для большинства случаев параметры указывать не требуется. Значения по умолчанию оптимальны для небольших групп (до 5 человек).
| Аргумент | Описание | По умолчанию |
|---|---|---|
--domain, -D |
Домен для эмуляции TLS SNI | автовыбор из встроенного списка с валидацией |
--domain-list |
Свой список доменов через запятую для автовыбора | (опционально) |
--port |
Порт: auto, 443 (маскировка под HTTPS) или номер |
auto (случайный) |
--tag, -P |
Тег из @MTProxybot | (опционально) |
--rate-limit |
Лимит новых соединений на IP | 5/min |
--rate-burst |
Допустимый всплеск | 10 |
--tune-net |
Сетевой тюнинг sysctl: BBR, буферы, backlog | выкл |
--ipv6 |
Включить поддержку IPv6 (-6) и вывести IPv6-ссылку |
выкл |
Переменные окружения:
| Переменная | Описание | По умолчанию |
|---|---|---|
FORCE_UNSHARE=auto|1|0 |
Режим PID namespace workaround: auto включает unshare, если pid_max > 65535 или ns_last_pid > 65535; 1 включает всегда; 0 отключает |
auto |
На системах с большим kernel.pid_max (например 4194304) MTProxy может падать при старте:
mtproto-proxy: common/pid.c:42: init_common_PID: Assertion `!(p & 0xffff0000)' failed.
Причина: текущая версия mtproto-proxy ожидает PID в 16-битном диапазоне, а systemd может выдать PID > 65535.
Скрипт автоматически включает workaround через PID namespace (совместимо с Ubuntu 24.04 / systemd 255):
/usr/bin/unshare --pid --fork --mount-proc -- /opt/MTProxy/objs/bin/mtproto-proxy ...
Дополнительно в unit добавлены StartLimitIntervalSec=60 и StartLimitBurst=5 против restart-storm.
Как проверить, что workaround активен
systemctl cat MTProxy— вExecStartдолжен быть/etc/mtproxy/run.sh(с префиксомunshare, если активен); секреты (-S) не показываются.journalctl -u MTProxy -f— в логах PID обычно как[1],[2].systemctl status MTProxy—MainPIDбудет уunshare/run.sh, дочерниеmtproto-proxyработают в той же cgroup.
systemctl status MTProxy # статус службы
systemctl restart MTProxy # перезапуск
journalctl -u MTProxy -f # журнал в реальном времени
journalctl -t mtproxy-watchdog # журнал watchdog
curl localhost:2398/stats # диагностическая статистикаcd MTProxy && git pull && sudo bash install_mtproxy.shПовторный запуск сохраняет порт, секрет и домен из текущей конфигурации. Ранее выданные ссылки останутся рабочими.
sudo bash uninstall_mtproxy.shУдаляет сервис, watchdog, cron-задания, правила фаервола, пользователя и все файлы.
MTProxy проксирует только текстовые сообщения и медиафайлы. Голосовые и видеозвонки не поддерживаются. Для звонков используйте WireGuard или AmneziaWG с раздельным туннелированием.
- Ubuntu 22.04 LTS / 24.04 LTS
- Доступ с правами
root - Сетевое подключение к интернету
Вклад в проект • Безопасность • MIT License
© 2026 AI for people and business
