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, а мобильные — всё ок.
                    • 0
                      Догадываюсь, десктопная версия обновится вместе с iOS и тогда и будет пост от Павла
                      • +1
                        Вероятно. Подождём.
                        • +2
                          В альфе, кстати, уже есть github.com/telegramdesktop/tdesktop/tree/dev/Telegram
                          • 0
                            С iOS не всё так однозначно. «Unfortunately, some Telegram features, such as stickers, don’t work correctly under iOS 11.4 that was just released – even though we fixed this issue weeks ago.

                            Apple has been preventing Telegram from updating its iOS apps globally ever since the Russian authorities ordered Apple to remove Telegram from the App Store. Russia banned Telegram on its territory in April because we refused to provide decryption keys for all our users’ communications to Russia’s security agencies. We believe we did the only possible thing, preserving the right of our users to privacy in a troubled country.

                            Unfortunately, Apple didn’t side with us. While Russia makes up only 7% of Telegram’s userbase, Apple is restricting updates for all Telegram users around the world since mid-April. As a result, we’ve also been unable to fully comply with GDPR for our EU-users by the deadline of May 25, 2018. We are continuing our efforts to resolve the situation and will keep you updated.
                            Sorry for the inconvenience and thank you for your patience.»
                            t.me/durov/87
                          • 0
                            дубль комментария
                            • –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
                                                Не знаете в чём проблема?
                                                [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 командам.

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

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