Telegram выпустил официальный MTProto Proxy Server

    image

    Наконец-то дождались, после пристального рассматривания и реверс инжениринга протокола MTProto Proxy, Telegram решил выпустить официальный вариант, с поддержкой монетизации promoted каналов, да еще и сразу в Docker образе.

    Что такое MTProto Proxy


    Это специфический прокси-сервер и протокол от создателей Telegram позволяющий обходить блокировки и монетизировать его использование.

    Официальный прокси


    В прошлой публикации была представлена масса неофициальных реализаций прокси сервера, многие из них написаны пользователями Habr.

    Теперь же у нас есть и официальный вариант:

    github.com/TelegramMessenger/MTProxy

    hub.docker.com/r/telegrammessenger/proxy

    Что он может?


    1. Поддерживает до 16 разных ключей на 1 прокси
    2. До 60000 подключений на 1 ядро
    3. Имеет API для сбора статистики (доступно только локально)
    4. Готовый образ в Docker
    5. Показ Promoted Каналов

    Как настроить?


    До безобразия просто:

    docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest

    После этого делаем:

    docker logs mtproto-proxy

    В качестве вывода вы получите:

    
    ####
    #### Telegram Proxy
    ####
    
    [+] No secret passed. Will generate 1 random ones.
    [*] Final configuration:
    [*]   Secret 1: afajkfhjksajkahkhkjkkk
    [*]   tg:// link for secret 1 auto configuration: tg://proxy?server=127.0.0.1&port=443&secret= afajkfhjksajkahkhkjkkk
    [*]   t.me link for secret 1: https://t.me/proxy?server=127.0.0.1&port=443&secret= afajkfhjksajkahkhkjkkk
    [*]   Tag: no tag
    [*]   External IP: 127.0.0.1
    [*]   Make sure to fix the links in case you run the proxy on a different port.
    
    [+] Starting proxy...
    
    

    Собственно базовая настройка закончена.

    Показ Promoted канала


    Eсли вы хотите показывать канал при подключении к прокси, прокси нужно зарегистрировать:
    С этим поможет официальный бот @MTProxybot

    Ему следует отправить IP:Port + ключ, в ответ вы получите рекламный tag.

    Этот tag нужно передать как параметр при запуске контейнера:

    docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data -e TAG=ВАШ_TAG telegrammessenger/proxy:latest

    Далее возвращаемся к боту, выбираем свой прокси и «Set promotion» — теперь осталось только отправить любой канал для отображения.

    Вот собственно и все, теперь у вас есть официальный Telegram Proxy с Promotion каналом, который будет показыватся всем пользователям.

    Дополнительные настройки
    По умолчанию, при запуске будет автоматически сгенерирован ключ и сохранён в томе Docker, если вы хотите вы можете указать друой ключ:
    -e SECRET=00baadf00d15abad1deaa51sbaadcafe
    docker run -d -p443:443 -v proxy-config:/data -e SECRET=00baadf00d15abad1deaa51sbaadcafe telegrammessenger/proxy:latest


    Или несколько:

    
    docker run -d -p443:443 -v proxy-config:/data -e SECRET=935ddceb2f6bbbb78363b224099f75c8,2084c7e58d8213296a3206da70356c81 telegrammessenger/proxy:latest
    

    А можете попросить сгенерировать вам несколько ключей:

    docker run -d -p443:443 -v proxy-config:/data -e SECRET_COUNT=4 telegrammessenger/proxy:latest

    По умолчанию запускает 2 worker'a, изменить настройку можно следующим образом:
    WORKERS=16

    docker run -d -p443:443 -v proxy-config:/data -e WORKERS=16 telegrammessenger/proxy:latest

    Мониторинг доступен по адресу: localhost:2398/stats

    Получить статистику можно следующим образом:

    docker exec mtproto-proxy curl http://localhost:2398/stats

    ready_targets: Количество Telegram серверов которые готовы обслужить запросы с прокси
    active_targets: Количество Telegram серверов обслуживающие запросы с прокси
    total_special_connections: Количество входящих соединений
    total_max_special_connections: Лимит входящих соединений


    Бот умеет показывать еще и статистику использования вашего прокси:


    docker-compose


    Вместо написания длинных команд в одну строку, можно воспользоватся docker-compose.

    Вам также может быть интересно


    Поделиться публикацией
    Комментарии 86
      0
      Отличная новость! Будем пробовать.
        +3
        Отличное решение! И по монетизации — для быстрого и массового распространения, и по ограничению — только телеграм.
          +1
          Спасибо за перевод, однако так и не понял что такое «WORKERS»
            +1
            Workers — это фактически поток, т.е сколько потоков хотите запустить
            –1
            И тут можно кастомить порт как захотим?
              0
              докер же, можно при запуске выбрать любой другой порт, а не 443
              –2
              Что-то не запускается образ, ошибка:
              [41][2018-05-30 19:28:32.081285 local] failed to set rlimit for open files. Try running as root or requesting smaller maxconns value.
              [41][2018-05-30 19:28:32.081329 local] fatal: cannot raise open file limit to 65552
              

              Может кто знает почему?
                0
                Помог запуск в привилегированном режиме:
                docker run -d -p 443:443 --name=mtproto-proxy --privileged --restart=always -v proxy-config:/data telegrammessenger/proxy
                  +2
                  Если что-то не работает запусти его в privileged!
                    +6
                    Иногда опасно запускать контейнеры, собранные кем-то другим, в привилегированном режиме.
                    Не делайте так больше.
                    +7
                    Можно попробовать добавить в аргументы:
                    --ulimit nofile=98304:98304
                    +1
                    Собрал, настроил, запустил. Не в докере которая.
                    Работает!
                    К сожалению, десктопная версия не поддерживает MTProto Proxy, а мобильные — всё ок.
                    –2
                    Поторопились они. попробуйте порт например поменять. Не работает.
                    И ссылку кривую даёт.
                      +1
                      Так он и не может правильную ссылку дать, внутрянка контейнера не подозревает какой порт ему пробросили, а поменять порт — можно, достаточно при запуске поменять аргумент
                        –1
                        ну, да, но поменяйте таки порт для пробы.
                        Клиент висит в статусе checking бесконечно
                        В tcpdump пакеты с ответами нулевой длины.
                        Ничего никуда не конектится.
                          +2
                          Проверил, работает, в Telegram OS X / Telegram X
                            0
                            хм, в официальном телеграме на андроиде у меня никак.
                              0
                              Проверьте, что вы меняете именно первый порт а не второй в конфиге докера
                                0
                                Много раз проверил, и я tcpdump -ом вижу обмен, но коннекта так и не происходит.
                                  0
                                  Приведите пример строки запуска докера (часть с портом)
                                    0
                                    -p 4443:443
                                    да где там ошибешься то.

                                    Чего я только не перепробовал, на том хосте не работает (обычный vds)
                                    поставил на другой — взлетело сразу.
                                      0
                                      тогда действительно был или косяк в OS или в докере
                            +1
                            Запустил прокси на 4433 порту (через Докер), 443 порт слушает Апач — все работает.
                        0
                        У меня довольно нубский вопрос — а завести это вместе с sslh не реально?
                          +1
                          Думаю, нет.
                          Нужна поддержка в самом sslh чтобы была. Он ведь в пакеты заглядывает.
                            0
                            В sslh есть anyprot, который нужно ставить последним. Так можно и tor обрабатывать.
                              0
                              Проверил, sslh не отличает https от telegram трафика => нельзя их совместить, а вот ssh+telegram — вполне
                                +1
                                а, нет, наврал, частично можно
                                  +1
                                  Я думаю можно поиграться с SNI и/или ALPN TLS трафика до anyprot, если TLS нужен.
                                +1
                                получилось habr.com/post/412779
                                  0
                                  Отлично же!
                                  Был не прав.
                              +1
                              Да, SSH + Telegram можно:
                              sslh-select -f --listen PUBLIC_IP:8443 --ssl 127.0.0.1:443 --ssh 127.0.0.1:23
                                +3
                                Благодаря вам я открыл для себя это приложение, написал о том, как вместе запустить habr.com/post/412779
                                +1
                                А реально сделать доступ только с поддомена? Например, на site.ru порт 443 оставляем апачу, а proxy.site.ru займёт прокси сервер.
                                  0
                                  я думаю да, правилами apache/nginx заворачивать трафик на этот порт
                                    0
                                    Не вижу тут проблемы — главное, чтобы IP в этом случае был разным.
                                      0
                                      как я понимаю, весь смысл именно в одном и том же IP, следовательно маршрутизировать должен веб сервер, хотя пока не понятно каким образом
                                        0
                                        Да не, там же писалось, что на одном и том же IP можно, но используя разные порты для прокси и веб-сервера. А маршрутизировать средствами веб-сервера — разве что какой-то патч или плагин к нему напишут. Там же не через веб прокси работает.
                                          +1
                                          ну это тогда совсем тривиальное решение =)
                                      0
                                      Если поставить перед ними HAProxy, то можно.
                                      0
                                      А можно рекламировать только каналы? Или ботов тоже?
                                        +2
                                        Только каналы
                                          0
                                          Жаль… :( Мне кажется некоторые боты тоже нуждаются в рекламе, надеюсь это учтут в будущем.
                                            0
                                            Напиши в ТП
                                        0
                                        Не знаете в чём проблема?
                                        [F] Cannot download proxy configuration from Telegram servers.
                                        ####
                                        #### Telegram Proxy
                                        ####

                                        Получаю после docker logs mtproto-proxy
                                          0
                                          Сервера телеграмм не доступны с вашего сервера
                                          0
                                          А только для себя без рекламы такой прокси можно установить?
                                          Докер это какой-то пакет, его достаточно установить или нужно настраивать как-то?
                                            +1
                                            Конечно можно, рекламу можете не настраивать через бота, можете просто поднять прокси и вообще боту не сообщать об этом.

                                            Докер — система виртуализации которая облегчает запуск, посмотрите в репозитории по ссылке внизу поста, там инструкция и как докер установить и как сразу запустить прокси.
                                            0
                                            а есть работающие прокси каналы на которые уже можно подписаться и использовать их как прокси?
                                              0
                                              Тут наоборот, вначале вы подключаетесь к прокси, а прокси дает вам уже канал для подписи (формально это не подпись но это не важно) в посте есть информация
                                                0
                                                Есть просто канал, на котором публикуются новости нового MTProto прокси, в частности поддержка клиентскими приложениями.
                                                +1
                                                docker.com у МГТС GPON заблокирован.
                                                А как этим всем пользоваться простому пользователю Телеграм?
                                                  +3
                                                  а зачем ставить докер и сервер там где что-то заблокировано?
                                                    0

                                                    линк скопировать и ткнуть внутри приложения
                                                    после тыка применится прокси (у меня так)
                                                      0
                                                      А вы не знаете, почему в России заблокирован Докер? У меня теперь сложные когнитивные проблемы. С одной стороны — цензура зло, с другой стороны, запрет использования докера в Россиии… в этом что-то есть.
                                                        0
                                                        С докером можно в два клика поднимать ВПН и всякие прокси, это опасно и может травмировать детскую психику суицидными статьями. И наркотиками через них торгуют, а еще там террористы и пираты. Какие еще версии были у бешеного принтера?
                                                          0
                                                          Низкая производительность и сложность в отладке для оверлейных сетей? Проблема с chain of trust для образов, отсутствие своевременных обновлений безопасности для образов ОС, которые используются для ребилда приложений.

                                                          С общеинженерной точки зрения приносить свою ОС с собой — дурной тон. Та же 'vm appliance', только слегка замаскированная.
                                                            0
                                                            Ээээ… Вы точно мне хотели ответить? :)
                                                              0
                                                              Да. Это альтернативная версия за что Государственная Дума могла решить запретить использование Докера в продакшене.
                                                                0
                                                                Они и слов таких не знают, не надо их произносить. Они все незнакомое, просто на всякий случай, считают опасным и подлежащим неподлежанию.
                                                                  0
                                                                  Они пригласили экспертов и лидеров ИТ индустрии, которые сказали, что для сохранения высокого уровня инженерной культуры в ИТ-индустрии России Докер следует ограничить, а вместо этого следует прививать best practices по software engineering.

                                                                  Доверившись экспертному мнению Дума решила отрегулировать ситуацию на диком рынке CI/CD и направить её в русло повышения квалификации (вместо гентрификационного карго-культа).
                                                                    0
                                                                    Здорово ))
                                                                    А за что они блокировали гитхаб?
                                                                      0
                                                                      А они блокировали гитхаб? Хм… Мои предположения, основывающиеся на здравом смысле и разуме на этом месте заканчиваются.
                                                                        0
                                                                        Вот и я о том же…
                                                                          0

                                                                          Возможно, они не согласны с ситуацией, когда бОльшая часть opensource-разработки сконцентрирована на одном сайте, который является потенциальной точкой отказа?

                                                                            +2
                                                                            Этот вопрос многократно обсуждался — так как git имеет копии на каждом из ноутбуков разработчиков, то точкой отказа он не является. Организовать свой git-репозиторий — вопрос единиц минут, нужен только ssh.

                                                                            Хотя игра мне нравится — придумай высокоумное объяснение каждой происходящей глупости.
                                                                            0

                                                                            Они уже тогда предполагали что Microsoft купит Github.

                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                            0
                                                            выглядит как вполне рабочий лог, может порт не пробрасывается? хотя если вечный connect/дёргается — проблема в ключах, я бы предложил взять новый ключ и с ним запустить образ или попросить сгенерировать новый
                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                0
                                                                попробуйте для начала посмотреть открыт ли вообще порт на сервере и сделайте openssl коннект (или браузером) к этому порту, в случае с браузером должен быть долгий коннект а не моментальный reject
                                                                  0
                                                                  blocklist.rkn.gov.ru

                                                                  Искомый адрес: 51.15.230.106
                                                                  Всего найдено записей: 1

                                                                  Реквизиты основания внесения в реестр (орган принявший решение, номер, дата): Генпрокуратура 27-31-2018/Ид2971-18 16.04.2018
                                                                  Ограничение доступа: ограничивается к ip

                                                                  Дайте угадаю, VPS от Scaleway?
                                                                    0
                                                                    51 — он самый…
                                                                    Мне они о ответили просто — меняйте айпишники в админке, пока не повезёт (((
                                                              0
                                                              Блин, круто. 10 минут и впска куплена, а на ней крутится твой докеркомпоуз!
                                                              Вот вам telegram proxy:
                                                              t.me/proxy?server=telegram.darkfox.info&port=443&secret=4f40612293dcd9ce3b04e6ec19011a58
                                                                0
                                                                Кстати, shifttstas, у меня в паре групп про распределенные системы и прочий криптоанархизм тебя не хватает (:
                                                                  0
                                                                  Кидай мне в ЛС, гляну, сейчас, к сожалению стало нехватать времени на рапределенные сети =(
                                                                0

                                                                Монетезация предполагается?
                                                                Мощностей навалом, но жечь электричество бесплатно как то не хочется.

                                                                  0
                                                                  Я еще раз уточню: через этот протокол работает пока только и исключительно Телеграм? Никаких планов по другому использованию протокола у команды Дурова нет? Нельзя будет с его помощью поднять тунель для работы других приложений или проксирования всего трафика?
                                                                    0
                                                                    github.com/an-ivannikov/mtproto-proxy-server
                                                                    Тут запилили скрипт на баше. Всё сводится к 3 командам.

                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                    Самое читаемое