Skip to content

Mekotofeuka/MTPROTO_FIX_By_MEKO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

159 Commits
 
 
 
 
 
 
 
 

Repository files navigation

MTPROTO FIX By MEKO

Latest Release Stars Forks

Для чего нужен метод: Помогает решить проблему, которая появилась с 4 июня, когда telegram клиент не может подключиться к mtproto прокси-серверу. Признаки: Подключение может зависать, долго устанавливаться или нестабильно проходить начальный TCP-этап, с дальнейшей блокировкой доступа клиента к серверу на 2 минуты после первого подключения. Проверен на: Telemt, MTProto.zig, Mtg, MTProtoProxy, JSMTProxy

Данный скрипт используется для серверов с MTPROTO - (telemt,mtproto zig и тд.), фиксит проблему долгого первичного TCP-подключения клиентов, в отличие от созданных и популярных в сообществе ранее фиксов с SYN limit имеет ряд преимуществ:

  • Быстрое подключение за <3-8 сек. (Оригинальный SYN Limit: >10-20сек.) даже при большом количестве юзеров
  • Один порт для Ios/Android/Macos/Desktop etc.
  • Медиа грузят практически с прежней скоростью
  • Ставится в один клик

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

Внимание, данный скрипт платный, цена: 1 ⭐ на репозиторий

  1. Установить стандартный Telemt версии 3.4.18 (версия новее работает нестабильно, появляются реконнекты и медиа могут грузить хуже.) Также альтернативой вы можете поставить "MTPROTO.zig", но тогда при установке необходимо указать --no-dpi, например sudo mtbuddy install --port 443 --domain rutube.ru --no-dpi --yes
  2. Установить/обновить наш скрипт:
curl -fsSL https://raw.githubusercontent.com/Mekotofeuka/MTPROTO_FIX_By_MEKO/main/install.sh | sudo bash
  1. Выполнить удаление старого SYN limit, (если он уже стоял на сервере ранее) нажав 1(либо удалить в ручную). Выполнить установку нашего фикса снова нажав 1.
  2. Отключить встроенные MSS и SYN из конфига телемт нажав 2 (если он уже был добавлен в конфиг телемт на сервер ранее)
  3. Готово.
  • Дополнительно: Кнопка 3 выполнит базовую оптимизацию сервера под прокси.

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

mekopr

Как работает:

Применяет к серверу набор правил, который разделяет устройства на 2 вида - ios и не ios и применяет к каждому свой лимит

  • 1 слой - Проверяет является ли устройство ios или нет.
    • Если да - Оставляем устройство на первом слое и применяем к нему правила конкретно для ios.
    • Если нет - Переходим на второй слой и применяем к нему правила второго слоя для всех устройств.

Более подробное описание

  • Решает проблему мёртвого соединения Ios/android
    • Проблема: мобильный клиент сворачивается, после чего сокет не закрывается чисто, из-за чего сервер держит мёртвое соединение и при возврате клиент зависает на умершем сокете.
    • Скрипт делает так, чтобы мёртвый коннект рвался за пару минут, вместо нескольких часов. Клиент при возврате из фона сразу видит "сокет мёртв" и переподключается без зависания.
  • Решает проблему TCP-рукопожатия, которое режется с помощью технических средств ограничения траффика
    • Скрипт ограничивает частоту входящих SYN на 1.1/сек. с одного IP, так как тех. средства ограничивают TCP соединение только если их >1 в секунду.
  • iOS отдельно
    • У iOS в отличии от Android и Desktop разные паттерны подключений. В одном лимите они мешают друг другу. Разделение на порты конечно решение, но костыльное. Наш фикс производит разделение этих клиентов по TTL+Length, таки образом с одного порта могут сидеть клиенты любых устройств без лишней мороки
  • 54/minute (а не 1 сек)
    • В iptables модуль hashlimit не поддерживает миллисекунды. 54/минута = 1.1 сек на соединение. Запас в 100 мс нужен, чтобы исключить погрешность возникающую при мгновенном Reject, которая приводит к блокировке подключения с вашего устройства к серверу с mtproto на 2 минуты
  • REJECT вместо DROP
    • DROP просто обрывает соединение клиента, не сообщая ему об этом, из-за чего происходят таймауты (3-5 сек) -> ретраи с бОльшими паузами -> бОльшая задержка. REJECT с RST же в свою очередь обрывая соединение даёт мгновенный ответ клиенту об обрыве из-за чего он(клиент) пробует переподключаться без ожидания, из-за чего подключение к telegram происходит куда быстрее
  • В MSS просто нет необходимости для данного билда, поэтому в скрипте добавлена функция его отключения. Если вы оставите у себя правило, либо настройку в конфиге с MSS или другим вариантом SYN ограничения, то медиа и скорость так и будут урезаны, так что их рекомендуется закомментировать/удалить с сервера до применения фикса.

Как сделать прокси из РФ напрямую, с работающим MiddleProxy(полезно для тех, кто использует "канал спонсор")

В данном мануале описан способ для запуска прокси напрямую на сервере, доступ с которого к ME/DC серверам телеграм ограничен. Работает с android/ios/desktop

  1. Ставим MTPROTO ZIG
curl -fsSL https://raw.githubusercontent.com/sleep3r/mtproto.zig/main/deploy/bootstrap.sh | sudo bash
sudo mtbuddy install --port 443 --domain rutube.ru --middle-proxy --yes
  1. Ставим скрипт MEKO
curl -fsSL https://raw.githubusercontent.com/Mekotofeuka/MTPROTO_FIX_By_MEKO/main/install.sh | sudo bash
  1. Пропускаем информацию про Telemt, открывается меню скрипта, жмём 1 и жмём y
  2. Подключаемся к прокси и пользуемся

Возможные проблемы("почему у меня может не работать?")

Если вам не помог фикс, наибольшая вероятность в том, что у вас более старая модель ios(если проблема в подключении только с Ios) и его ttl/длина пакета отлична, либо у вас на сервере остались какие-то старые настройки, это встречается пока в большинстве случаев.

  • Наиболее полезное, простое и рабочее решение в 99% случаев, если у клиента, с которого не работает прокси не старый айфон, это:
    • Переустановить ОС, поставить чистый телемт 3.4.18 и наш фикс.
    • Проверить все правила, настройки/кфг сервера, возможно там остались старые правила SYN,MSS возможно другие, их все необходимо убрать. Также в кфг телемт необходимо отключить встроенные SYN и MSS
    • Установить более старую версию(на телемт 3.4.19 работает не стабильно, на данный момент самый стабильный вариант - 3.4.18)
    • Смена подсети/провайдера/просто айпи. В целом провайдеру клиента, с которого не работает прокси может не нравиться айпи текущего сервера(весьма частое явление), либо он может быть заблокирован не только у вашего провайдера, а в целом везде.

Важно также сказать, что все тесты проводились на моделях айфона 11 и выше, а также без сторонних надстроек - хапрокси, амнезия,даблхоп/каскад и тд., поэтому с какими-либо изменениями оригинального прокси может не работать, дайте нам знать по поводу возникших проблем, если есть способ это исправить - сообщите нам, попробуем что-то с этим сделать. Если же вы нашли решение сами - аналогично сообщите нам ;)

⭐ Поддержать проект

MEKO fix — создан в свободное время для сообщества.
Ваша поддержка поможет проводить дальнейшие тесты;)

Вы можете поддержать проект, поставив ⭐ этому репозиторию (сверху справа этой страницы)

💰 Криптовалюта:

image

от 0.1 USDT

Также вы можете поддержать меня, воспользовавшись моим сервисом:

MEKO bot

Stars History

Отдельное спасибо за вклад в разработку:

Contributors

About

MTProto fix - stable fixes the limitations that occurred on June 4

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages