Skip to content

Liafanx/MTproxy-reanimation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MTproxy-reanimation

MTproxy-reanimation — утилита для серверов с Telemt / MTProxyMax, которая помогает стабилизировать первичное TCP-подключение клиентов с помощью inbound SYN limiter через nftables и применяет базовый безопасный тюнинг Telemt.

За основу взяты мануалы сообщества: Ссылка №1 · Ссылка №2 · Ссылка №3

Установка и обновление

curl -fsSL https://raw.githubusercontent.com/Liafanx/MTproxy-reanimation/main/install.sh | sudo bash

После установки запускается мастер настройки. При повторной установке — обновляет скрипт. Также скрипт автоматически проверяет обновления при каждом запуске mtpr.

Открыть меню:

mtpr

Перед использованием ознакомтесь с readme, и обратите внимание на раздел Советы

Обновления

1.0.8 от 16.06.2026
  • Добавлено восстановление конфигурации из бэкапа при удалении реаниматора
  • При удалении можно выбрать:
    • восстановить конфиг из бэкапа
    • или оставить бэкап и восстановить его позже вручную
  • Исправлен Fix для iOS вариант 1:
    • теперь сохраняются исходные значения tcp_keepalive_* перед применением
    • при откате восстанавливаются именно исходные значения, а не жёстко 7200 / 75 / 9
  • Улучшены сообщения при откате и удалении
  • Мелкие правки логики и текста в меню
1.0.7 от 15.06.2026
  • Для Docker bridge добавлен выбор режима:
    • Простой режим — правило только по порту
    • Точный Docker-режим — внутренний IP контейнера + watcher
  • Обновлён README
  • Теперь при применении тюнинга недостающие разделы в конфиге могут создаваться через скрипт автоматически, все будет предложено при первой установке.
1.0.6 от 15.06.2026
  • Автоматическая проверка обновлений при запуске
  • При установке Fix для iOS №1 по умолчанию N
  • Значения в Fix для iOS №1 теперь можно редактировать
  • После изменения сетевых параметров скрипт предлагает сразу применить новые NFT-правила (по умолчанию Y)
  • При первом запуске перед применением тюнинга подробнее показывается, какие параметры будут выставлены
  • Если в конфиге Telemt нет секций [general] или [timeouts], скрипт предлагает создать их автоматически
  • Логика привязки к IP улучшена:
    • можно заранее выбрать, использовать ли конкретный IP
    • если IP не указывать, правило будет работать для всех IP сервера на выбранном порту
  • Readme приведён в порядок, добавлен раздел "Советы"
1.0.5 от 14.06.2026
  • Изменены значения тюнинга по умолчанию:
    • tg_connect = 30 (было 10)
    • client_handshake = 90 (было 15)
    • client_keepalive = 120 (было 60)
  • Сообщество сообщает что новые значения работают лучше стоковых
  • Параметры тюнинга всегда можно изменить в настройках
  • Пробуйте и делитесь опытом в https://t.me/telemtrs
1.0.4 от 11.06.2026
  • Добавлен Фикс для iOS вариант 1 (TCP keepalive через sysctl)
    • Можно менять значения keepalive_time, keepalive_intvl, keepalive_probes
  • Добавлен Фикс для iOS вариант 2 (MSS + redirect на отдельный порт)
    • Рекомендуется перевести iOS-клиентов на отдельный порт
  • Исправлена работа с Telemt Panel (конфиги Panel не затрагиваются)
  • Исправлена работа с голым Telemt (systemd, /etc/telemt/telemt.toml)

Требования

  • Linux с systemd
  • nftables (устанавливается автоматически)
  • curl
  • Права root

Что делает

  • Находит Telemt автоматически: MTProxyMax, Docker, systemd, локальный процесс
  • Telemt Panel игнорируется — её конфиги не затрагиваются
  • Определяет нужный netfilter hook:
    • input — если Telemt работает на хосте / через host network
    • forward — если Telemt работает в Docker bridge
  • Для Docker bridge предлагает два режима:
    • Простой режим — правило только по порту
    • Точный Docker-режим — внутренний IP контейнера + watcher
  • Применяет per-client inbound SYN limiter через nftables
  • Безопасно применяет тюнинг Telemt (с бэкапом конфига перед изменениями)
  • При удалении может восстановить конфигурацию из сохранённого бэкапа
  • Фикс для iOS вариант 1 — TCP keepalive через sysctl (настраиваемые значения)
  • Фикс для iOS вариант 2 — MSS + redirect на отдельный порт для iOS-клиентов
  • Ставит systemd-службу с автозапуском

Советы

  • Поставьте реаниматор, на все нажмите enter, если реанимировался прокси, то отлично лучше ничего не трогать. Если хотите, можете поиграться с настройками, чтобы увеличить скорость подключения.
  • В 95% случаев все заводится на Стандартный конфиг + Реаниматор.
  • client_mss = tspu не работает с реаниматором во многих случаях, лучше закомментировать если есть.
  • Если есть проблемы с iOS клиентами, пробуйте фиксы. Их всегда можно мгновенно откатить.
  • Если у вас telemt в Docker bridge:
    • сначала пробуйте Точный Docker-режим
    • если не помогает, используйте Простой режим, он по умолчанию при установке так как точно работает.
  • Если у вас Double Hop, ставьте реаниматор на входящей ноде, он скажет, что не находит на сервере telemt, так и должно быть, просто жмете на все enter, но не забудьте указать правильный порт подключения обычно это 443, значения тюнинга можно прописать вручную на принимающей ноде, где стоит telemt.
  • В последнем обновлении telemt 3.4.18 были добавлены функции, которые использует реаниматор, выбирайте что-то одно, либо новые параметры в telemt, либо реаниматор. Но эксперименты никто не отменял.
  • Если удаляете реаниматор и выбираете восстановление из бэкапа, все изменения, внесённые в конфиг Telemt после установки реаниматора, будут потеряны.

Принцип работы

Ограничение входящих SYN-пакетов отдельно для каждого IP клиента:

tcp dport <PORT>
tcp flags & (syn | ack) == syn
meter { ip saddr timeout 60s limit rate over 1/second burst 1 packets }
counter drop

Каждый клиентский IP получает свой независимый bucket.

Про IP-адрес в правилах:

  • Если указан IP → правила применяются только к трафику на этот адрес и порт
  • Если IP пустой → ко всему входящему трафику на указанный порт
  • В Docker bridge режиме внешний IP может не совпадать с destination после NAT, поэтому там часто лучше использовать:
    • Простой режим — без IP-привязки
    • или Точный Docker-режим — по внутреннему IP контейнера

Параметры тюнинга

Параметр По умолчанию Описание
tg_connect 30 Таймаут подключения к Telegram DC
client_handshake 90 Ожидание начального handshake
client_keepalive 120 Ожидание активности клиента

Все параметры можно изменить в настройках скрипта (пункт [3]).

Пресеты SYN limiter

Пресет Rate Burst Описание
Жёсткий 1/second 1 Рекомендуется как основной
Средний 1/second 3 Если жёсткий слишком строг, можно попробовать
Мягкий 2/second 5 Для серверов с большим числом клиентов

iOS фиксы

Вариант 1 — TCP keepalive

Ускоряет обнаружение мёртвых сокетов через sysctl.
Подходит, если iOS-клиенты после закрытия/сна не могут нормально переподключиться.

Значения можно менять прямо из меню.
Перед применением сохраняются исходные системные значения tcp_keepalive_*, и при откате они восстанавливаются.

По умолчанию:

  • time = 60
  • intvl = 15
  • probes = 3

Примерное время обнаружения мёртвого соединения: ~105 сек


Вариант 2 — MSS + redirect

Создаёт отдельный порт для iOS (по умолчанию 4443) с MSS=92 и прозрачным редиректом на основной порт Telemt.

Важно: если в конфиге Telemt есть client_mss = ..., его нужно убрать перед использованием Варианта 2.

В этом режиме:

  • Telemt-конфиг не меняется
  • Android / Desktop продолжают использовать основной порт
  • iOS-клиентам нужно заменить только порт в ссылке

Пример:

  • было: tg://proxy?server=IP&port=443&secret=...
  • стало: tg://proxy?server=IP&port=4443&secret=...

Основные команды

mtpr

Открыть меню управления.

Проверить активную службу

Обычный режим:

systemctl status mtpr-syn-limit.service --no-pager

Точный Docker-режим:

systemctl status mtpr-bridge-watch.service --no-pager

Посмотреть текущие nft-правила

nft list table inet telemt_limit

Посмотреть все правила Reanimation

nft list ruleset | grep -A20 -B5 mtpr

Если используется MTProxyMax

Тюнинг применяется через штатные команды, без прямого редактирования config.toml.

Для отката:

mtproxymax tune clear tg_connect
mtproxymax tune clear client_handshake
mtproxymax tune clear client_keepalive
mtproxymax restart

Если используется голый Telemt или Docker

Перед изменением telemt.toml или config.toml создаётся бэкап (*.mtpr-backup-*).

Для отката:

ls /etc/telemt/telemt.toml.mtpr-backup-*
cp /etc/telemt/telemt.toml.mtpr-backup-<timestamp> /etc/telemt/telemt.toml
systemctl restart telemt

Удаление

Из меню: клавиша u / U

При удалении скрипт может предложить:

  • восстановить конфигурацию Telemt из бэкапа
  • или оставить бэкап на диске для ручного восстановления позже

Тюнинг MTProxyMax и изменения после установки реаниматора автоматически не сохраняются при восстановлении старого бэкапа.

Важно

  • Скрипт не трогает конфиги Telemt Panel
  • Скрипт не является заменой Telemt или MTProxyMax
  • NFT-правила работают на уровне ядра
  • В Docker bridge режиме лучше сначала пробовать Точный Docker-режим, а потом уже простой если не помогает.
  • При использовании Fix для iOS вариант 2:
    • уберите client_mss = ... из конфига Telemt
    • не забудьте открыть iOS-порт в фаерволе, если закрыт
  • При смене сетевых параметров лучше сразу пере-применять NFT-правила из меню

MTproxy-reanimation by LiafanX · GitHub

About

Telemt inbound SYN limiter + tuning manager

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages