Прокси-сервер является посредником между клиентом и сервером. Для обхода ограничений прокси-сервер должен быть установлен там, где нет ограничений доступа к требуемой информации, при этом не должно быть таковых ограничений и между клиентом и прокси-сервером.

image

Обновлённая поддержка прокси-серверов в клиентах Telegram


  • Новый MTProto-прокси. Работает с родным для Telegram протоколом MTProto
  • Открытый исходный код сервера на GitHub
  • Docker-образ на DockerHub
  • В мобильных клиентах появилась возможность добавлять несколько прокси-серверов каждого типа. Пользователь может выбрать наиболее подходящий

image

MTProto-прокси


  • MTProto-прокси работает только с Telegram
  • Клиент и сервер не имеют фазы открытого обмена информацией
  • В реализации MTProto-прокси сервера от Telegram прокси-сервер и его владелец не имеют прямого доступа к метаинформации протокола MTProxy (логины, например).
  • Для всевозможных фильтров и анализаторов обмен данными с MTProto-прокси сервером выглядит как неструктурированный бинарный двунаправленный поток данных между клиентом и сервером. Это затрудняет распознавание протокола с целью ограничения.

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


Для запуска собственного MTProto-прокси сервера требуется только машина с установленным Docker и доступом в сеть. На порту 443 не должно ничего быть (nginx, apache). При первом запуске прокси-сервера будет создан секретный ключ, который будет запомнен. Запуск одной командой:

$ docker run -d --net=host --name=mtproto-proxy --restart=always     -v proxy-config:/data telegrammessenger/proxy

Для просмотра информации о секретном ключе и специальных ссылках посмотрите журнал контейнера командой:

$ docker logs mtproto-proxy

[+] Using the explicitly passed secret: 'b7e70329dcf3721c4239b86ad32a90b8'.
[+] Saving it to /data/secret.
[*] Final configuration:
[*]   Secret 1: b7e70329dcf3721c4239b86ad32a90b8
[*]   tg:// link for secret 1 auto configuration: : tg://proxy?server=81.177.103.94&port=443&secret=b7e70329dcf3721c4239b86ad32a90b8
[*]   t.me link for secret 1: tg://proxy?server=81.177.103.94&port=443&secret=b7e70329dcf3721c4239b86ad32a90b8
[*]   Tag: no tag
[*]   External IP: 81.177.103.94
[*]   Make sure to fix the links in case you run the proxy on a different port.

Надо учитывать, что прокси-сервер будет пытаться «угадать» параметры для ссылок, поэтому IP и порт могут быть неточными и требовать коррекции.

Секретный ключ


Можно устанавливать свой собственный секретный ключ через переменную окружения SECRET:

$ docker run -d --net=host --name=mtproto-proxy --restart=always     -v proxy-config:/data -e SECRET=b7e70329dcf3721c4239b86ad32a90b8     telegrammessenger/proxy

При корпоративном использовании прокси-сервера (группами пользователей) можно использовать несколько ключей (до 16). Например, я для корпоративных установок выделяю такие группы пользователей: boss, managers, users. Для каждой из них генерирую свой ключ. В случае компрометации (утечки на сторону) ключа, меняю его для группы. В чем проблема компрометации ключа? В трафике. Количество подключений может полностью заполнить канал к вашей машине. Также можно сделать систему ротации ключей.

Для установки нескольких ключей их надо перечислить через запятую:

$ docker run -d --net=host --name=mtproto-proxy --restart=always     -v proxy-config:/data -e SECRET=b7e70329dcf3721c4239b86ad32a90b8,afccd434fb32248f29f033b189bd8541,878397a50627deb349d4c296bd9dc3c2      telegrammessenger/proxy

Или можно задать желаемое количество ключей для автогенерации через переменную SECRET_COUNT (не больше 16):

$ docker run -d --net=host --name=mtproto-proxy --restart=always     -v proxy-config:/data -e SECRET_COUNT=5 telegrammessenger/proxy

Для генерации своего ключа можно воспользоваться, например, одной из команд в Linux:

# работает даже на busybox:
$ tr -dc 'a-f0-9' < /dev/urandom | dd bs=1 count=32 2>/dev/null
$ hexdump -n 16 -e '4/4 "%08x" 1 "\n"' /dev/random    # требуется программа hexdump
$ openssl rand -hex 16    # требуется openssl

Производительность


Каждый процесс прокси-сервера может обрабатывать десятки тысяч подключений. Для лучшей производительности стоит ограничение 60000 подключений на одно ядро процессора. По умолчанию запускается два процесса прокси-сервера (с предположением, что каждому система выделит по ядру). Можно увеличить количество запускаемых процессов через переменную WORKERS. Не следует запускать их больше, чем на процессоре имеется ядер:

$ docker run -d --net=host --name=mtproto-proxy --restart=always     -v proxy-config:/data -e WORKERS=16 telegrammessenger/proxy

Использование сети


В примере специально дан ключ --net=host. Это позволяет избежать избыточной трансляции адресов и позволяет использовать IPv6 прямо из коробки без настройки, если он есть на той машине, на которой запускается proxy-server.

Конечно же, можно запустить и более классическим способом, указав проброс портов:

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

Можно указать и какой-нибудь другой порт, например:

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

Учтите, что прокси-сервер ничего не знает о «настоящем» порте и ссылка будет неправильная, её надо будет корректировать.

Мониторинг


MTProto-прокси сервер представляет некоторую статистику по своей работе. Статистика предоставляется только на localhost: http://localhost:2398/stats.

При запуске прокси-сервера через docker с параметром --net=host для получения статистики достаточно команды: curl http://localhost:2398/stats, или проксирования через, например, nginx куда-нибудь наружу. При запуске прокси-сервера через docker с пробрасыванием портов статистику можно получить командой:

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

Некоторые метрики:
  • ready_targets — количество серверов Telegram, c которыми будет пытаться соединиться прокси-сервер
  • active_targets — количество подключений к серверам Telegram (в теории должно совпадать с ready_targets)
  • total_special_connections — количество входящих соединений клиентов
  • total_max_special_connections — максимальное возможное количество одновременных соединений

Реклама


Telegram позволяет монетизировать прокси-сервер через подписку на Promoted-канал. Promoted-канал — это такой канал, на который вы автоматически будете подписаны при подключении к прокси-серверу. Он будет закреплен наверху списка чатов и его нельзя удалить пока вы не отключитесь от данного прокси-сервера.

Для настройки Promoted-канала следует у специального бота @MTProxybot получить код и передать его в переменной TAG при запуске сервера:

$ docker run -d --net=host --name=mtproto-proxy --restart=always     -v proxy-config:/data -e TAG=85174e9e0ffa43c0d3a7167e52175268     telegrammessenger/proxy:latest

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

Promoted-канал будет показываться наверху с соответствующей пометкой для тех клиентов, которые используют данный прокси-сервер. Если подписаться на канал, то пометки не будет.

image

Обновление прокси-сервера


Разработчики MTProto-прокси будут стараться делать минимум изменений, но рекомендуют обновлять прокси-сервер хотя бы раз в сутки:

$ docker pull telegrammessenger/proxy    # обновить образ
$ docker stop mtproto-proxy    # остановить контейнер
$ docker rm mtproto-proxy     # удалить контейнер
$ docker run ....  # создать из обновленного образа и запустить контейнер заново
$ docker logs -f --tail=30 mtproto-proxy    # посмотреть журнал контейнера

Docker Compose


Пример docker-compose.yml:

version: '3.0'

services:
        mtproxy:
                image: telegrammessenger/proxy:latest
                hostname: mtproxy
                container_name: mtproxy.local
                volumes:
                        - proxy-config:/data
                network_mode: "host"
                logging:
                        driver: syslog
                        options:
                                tag: mtproxy
                restart: always
volumes:
        proxy-config:
                external: true

Для использования Promoted-каналов не забудьте добавить переменную TAG.

Обновление прокси-сервера c Docker Compose


$ docker-compose pull mtproxy     # обновить образ
$ docker-compose up -d   # пересобрать и перезапустить контейнер
$ docker-compose logs -f --tail=30 mtproxy    # посмотреть журнал сервиса

Комментарии (209)


  1. AC130
    30.05.2018 21:41

    Это официальная реализация, или чей-то самописный прокси?


    1. schors Автор
      30.05.2018 21:43

      Официальная. Бот с синим значком.


      1. Merkat0r
        31.05.2018 17:10

        А, зачем вы зафорсили использование докера в статье? Да еще и, по сути, заставляете его использовать тем более с тегом туториал.

        Он не нужен ни для запуска одного единственного бинарника ни для работы, в принципе, вообще.


        1. schors Автор
          31.05.2018 17:45
          +1

          Docker прежде всего это пакетный менеджер. Более того, docker всегда и запускает один бинарник. Более оптимального, эффективного и универсального способа доставки приожения сейчас не существует.


          1. Merkat0r
            31.05.2018 18:41

            нет. самска собаки.НЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕТ!11!11
            это не пакетный менеджер… как-же вы адепты зае… всюду его впихивать.


            1. schors Автор
              31.05.2018 18:54

              Прости нас


            1. shifttstas
              31.05.2018 18:55

              Так чем он плох то? вот хотите вы сделать 1 прокси — берете докер, две команды и он есть. А теперь вы хотите 2 или 10 или 100 — еще 1 команда и у вас он уже работает в кластере на 100+ машинах и сам себя перезапускает при падении и логи в единое место пишет. Удобна, правда?

              А ну и да, кластер для докера вам любой нормальный хостер через веб-мордочку развернет в два клика. Можно без каких-либо знаний администрирования это сделать.

              Еще и балансировка из коробки и много чего еще…


              1. Radjah
                01.06.2018 00:10

                systemd, его генераторы и юниты с подстановкой.


                1. shifttstas
                  01.06.2018 00:14

                  как systemd поможет с кластерной установкой?


                  1. Radjah
                    01.06.2018 01:37
                    +1

                    У меня кластера нет, например.


                    1. shifttstas
                      01.06.2018 02:54

                      А когда появится, в случае с докером не надо ничего переделывать, все знакомо и удобно.


                      Собственно решать вам, почти всегда можно и без докера..


                1. schors Автор
                  01.06.2018 00:41

                  И в чем разница?


                  1. Radjah
                    01.06.2018 01:42

                    > сам себя перезапускает при падении и логи в единое место пишет.
                    Только ничего добавлять не надо, даже chroot из коробки есть.
                    Я всё еще не вижу смысла добавлять ненужные сущности.


                    1. schors Автор
                      01.06.2018 01:48

                      Технологическая разница в чем?


            1. BelikovDmitrii
              31.05.2018 21:07

              Аааа, плохая отвёртка, не подходит :D Ниже кстати описано замечательное применение данной


  1. QDeathNick
    30.05.2018 21:44

    На канале будет видно сколько подписчиков?
    Вообще, сложно ли со стороны вычислить сколько пользователей прокси?


    1. schors Автор
      30.05.2018 21:51

      Будет видно только тех подписчиков, что подпишутся. У упомянутого бота есть статистика использования прокси — там будет видно, сколько пользователей пользуется прокси.


  1. noize
    30.05.2018 21:44
    +4

    Означает ли это, что понять используя DPI, что в потоке идёт подключение к телеграму, станет значительно сложнее? Ну и не совсем понял, что там с передачей логина и пароля при подключении к прокси.
    Вообще, Паша работает, не унывает)


    1. schors Автор
      30.05.2018 21:47
      +1

      Да, будет сложнее распознать. Только через атаку по размеру. И то много вопросов.
      Нет никаких логинов и паролей. Есть ключ сервера и всё.


      1. a5b
        31.05.2018 00:06

        https://habr.com/post/359348/#comment_11373110 shifttstas — 26 мая в 14:04 — Telegram MTPROTO Proxy — всё что мы знаем о нём; stek29 26.05.18


        Недавно подобная статья была на TJournal, где Даша aka koteeq из VeeSecurity дала неплохое описание протокола "obfuscated2", который используется в том числе для "mtproto proxy". Процитирую:
        Обфускация "anti-DPI" там простая. Генерят на клиенте случайный 32-байтовый ключ и 16-байтовый IV, ими шифруют пакет с AES CTR и отправляют. При этом сами ключ и IV отправляются перед зашифрованной нагрузкой.
        В итоге, если вы провайдер, вам нужно ВСЕГО ЛИШЬ брать от каждого исходящего пакета 8-40 байты (ключ) и 40-56 байты (IV), расшифровывать содержимое (64-… байты). В расшифрованном содержимом уже вполне стандартный mtproto-формат, где первые 8 байт — сигнатура авторизационного ключа.

        Пример реализации
        https://github.com/makkarpov/mtoxy/blob/master/src/main/java/ru/makkarpov/mtoxy/network/Obfuscated2Handshaker.java https://github.com/danog/MadelineProto/blob/master/src/danog/MadelineProto/Connection.php#L128


        1. schors Автор
          31.05.2018 01:14
          +1

          Для MTProto-прокси таки используется чутка иное: telegra.ph/telegram-blocks-wtf-05-26


          1. a5b
            31.05.2018 01:36

            Спасибо. Цитаты из http://telegra.ph/telegram-blocks-wtf-05-26


            Во-первых, клиент общается с MTPROTO-прокси только с обфускацией obfuscated2.
            Во-вторых, obfuscated2 здесь используется чуть модифицированный. Перед зашифрованной частью всё так же открыто передаются ключ и IV, только вот шифруется сам пакет не этим ключом, а sha256(key+secret). Secret — это тот самый 16-байтовый параметр, который вы заполняете при подключении к MTPROTO-прокси.
            Secret нигде не передаётся в процессе связи. Его использует клиент для шифрования пакета и MTPROTO-прокси-сервер для расшифрования.
            MTPROTO-прокси-сервер получает от вас пакет, деобфусцирует его ключом sha256(key+secret), затем снова обфусцирует, но уже используя обычный obfuscated2 без дополнительных параметров.

            и про obfuscated2


            официальные же клиенты используют дополнительный слой обфускации, нигде не документированный. Товарищ Tomas Susanka уже максимально подробно описал используемый метод обфускации пакетов, поэтому расписывать всё не буду.
            Клиент придумывает случайный 32-байтовый ключ и случайный 16-байтовый Initialization Vector, которыми шифрует каждый пакет с помощью AES CTR, а чтобы сервер узнал, как это расшифровать… ключ и IV добавляются в начало пакета перед зашифрованным содержимым.…
            После обфускации все пакеты выглядят как случайный мусор, поэтому для определения, Telegram-трафик это или нет, провайдеру придётся расшифровывать каждый непонятный пакет по методике obfuscated2, прежде чем проводить дальнейшие проверки. Такие действия требуют неоправданное количество вычислительных мощностей, которых у провайдеров попросту нет.


            1. schors Автор
              31.05.2018 01:39

              Ну да. И собственно как это противоречит?


              1. Laney1
                31.05.2018 11:42
                +1

                в общем-то никак не противоречит, но тут самое главное написано в последней фразе:


                Такие действия требуют неоправданное количество вычислительных мощностей, которых у провайдеров попросту нет

                Для Даши aka koteeq естественно нет никаких проблем расшифровать на личном ноутбуке пару десятков или сотен пакетов из Wireshark. Но теперь представьте себе промышленную DPI-систему, которая должна анализировать петабайты трафика в реальном времени.


                В таких системах даже просто прочитать пакет два раза — это крайне нежелательное действие, просаживающее производительность. Что-то расшифровывать, просто чтобы посмотреть, не telegram ли это — нереально, абсолютно нереально. MTProxy делали люди, прекрасно знакомые с темой.


                1. schors Автор
                  31.05.2018 11:47

                  Да. Так и есть


                1. L11R
                  31.05.2018 12:30
                  +1

                  Анна она, Анна. Даша это опечатка одного из юзеров в прошлом посте :)


                1. a5b
                  01.06.2018 02:36

                  В http://telegra.ph/telegram-blocks-wtf-05-26 разъяснили, что протокол obfuscated2 был изменен, теперь у клиента и сервера есть общий secret (у сервера — один из 16), который участвует в создании ключа для данных. У DPI секрета нет, он видит лишь двоичный поток. Даша для расшифровки в Wireshark должна ввести secret в дешифровщик.


                  В оригинальном obfuscated2 (к которому и относится фраза "неоправданное количество вычислительных") полный ключ и данные передавались вместе.


  1. MurikS
    30.05.2018 21:44

    На порту 443 не должно ничего быть (nginx, apache)

    А если на 443 порту уже что-то висит?


    1. schors Автор
      30.05.2018 21:45

      Повесьте на другой порт. Там прямо в инструкции приведен пример порта 8443


      1. gpyra
        31.05.2018 11:46

        А в SNI оно не умеет чтоли?


        1. schors Автор
          31.05.2018 11:48

          Там не TLS вообще


          1. gpyra
            31.05.2018 12:55

            Извините, сначала комментил, потом читал статью(((


          1. Oval
            31.05.2018 17:12

            сложнее замаскироваться под доступ к вебсайту например


  1. schors Автор
    30.05.2018 21:49

    Случайно отмодерировал комментарий про TAG. Не знаю как исправить.
    TAG должна остаться переменной окружения. И при прямом запуске без docker.


    1. loskiq
      30.05.2018 21:54

      А как получить тот самый код у бота? Он знает только две команды: /newproxy и /myproxies


      1. schors Автор
        30.05.2018 21:55

        Добавить прокси — он сразу код скажет. Потом нажать на инлайн-кнопку с именем прокси и он предложит добавить Promoted-канал


  1. atipugin
    30.05.2018 22:20
    +1

    В iOS это уже поддерживается? Как я понял, Эппл морозит Пашу с обновлениями в АппСторе.


    1. shifttstas
      30.05.2018 22:24

      можно telegram x поставить, там поддерживается


      1. atipugin
        30.05.2018 22:27
        +1

        Его нет в AppStore :(


        1. shifttstas
          30.05.2018 22:28
          +2

          Группа тестирования: t.me/tgiostests
          Там же можно найти ссылку на установку (в шапке) установится на iOS без джейлбрейка


          1. mittus
            31.05.2018 01:01

            Спасибо за ссылку!!! Поставил на 10.3.3


            1. shifttstas
              31.05.2018 01:52

              Обращайтесь =)


              1. EgorZot
                31.05.2018 12:42

                Спасибо тебе добрый человек


        1. n00b1k
          31.05.2018 02:21

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


          1. n00b1k
            31.05.2018 14:04

            К сожалению, как оказалось, любимая Apple вырезала обходной путь для Telegram, хотя еще буквально пару недель назад все работало.


          1. n00b1k
            02.06.2018 04:56

            Telegram X снова доступен в сторе. Качайте, глупцы :)
            itunes.apple.com/ru/app/telegram-x/id898228810?mt=8


  1. shifttstas
    30.05.2018 22:25
    +5

    Я был чуть раньше habr.com/post/412755

    Но два поста лучше чем один =)

    Устроим недели Telegram на Habr!


  1. Radjah
    30.05.2018 22:31

    > для получения статистики достаточно команды: curl localhost:2398/stats
    Я так понял, что порт задан где-то скрыто в настройках контейнера, потому что при запуске прокси с параметром "-p 8888", например, статистику можно смотреть именно на этом порту. Об этом и в README написано.
    На Telegram X не заработало, на виндовом клиенте тоже.


    1. schors Автор
      30.05.2018 22:42

      Логично, что там развесистый стартовый скрипт. А curl и вот это всё делали перед?


      1. Radjah
        30.05.2018 22:44

        Ну я сначала README прочитал, по нему собрал и запустил. Потом уже тут посмотрел что да как.


        1. schors Автор
          30.05.2018 22:45

          Я к тому, что Telegram X заработал?


          1. Radjah
            30.05.2018 22:51

            Он по клику на правленную ссылку делает вообще ничего, как и виндовый клиент.
            В порыве отчаяния пробовал прописывать как SOCKS5 и HTTP — ноль на массу.


            1. schors Автор
              30.05.2018 22:54

              Нет, там должен быть именно MTProto


            1. DarkByte
              30.05.2018 23:00

              • Desktop Version 1.2.18+
              • macOS v3.8.3+
              • Android v4.8.8+
              • Telegram X iOS v5.0.3+
              версии ниже указанных не поддерживают mtproto


              1. Radjah
                30.05.2018 23:03

                > 1.2.18+
                На сайте 1.2.17
                github.com/telegramdesktop/tdesktop/releases
                1.2.24
                > X iOS
                Ясно


                1. Ronkosa
                  01.06.2018 13:58

                  на desktop.telegram.org лежит win 1.3


                  1. Radjah
                    01.06.2018 14:01
                    +2

                    Надо было бы недельку с ответом подождать.

                    v 1.3.0
                    @john-preston john-preston released this 11 hours ago


  1. DarkByte
    30.05.2018 22:35
    +1

    А как заставить его подключаться к дц телеги по ipv6? В параметрах есть флаг -6, но он ничего не меняет.


    1. L11R
      30.05.2018 22:41

      Рубрика «обходим блокировки сервером в России»? :D

      По делу: Мне кажется надо включить IPv6 флагом --ipv6/-6 и после изменить файл .conf, удалив все IPv4 сервера и добавив IPv6.


      1. DarkByte
        30.05.2018 22:58

        Даа, я знаю толк в извращениях. Пока что только один из опробованных mtproxy серверов поддерживал ipv6, но тот слишком прожорлив по ресурсам оказался.

        Этому попробовал подсунуть такой конфиг:

        proxy_for 1 [2001:0b28:f23d:f001:0000:0000:0000:000a]:443;
        proxy_for 2 [2001:067c:04e8:f002:0000:0000:0000:000a]:443;
        proxy_for 3 [2001:0b28:f23d:f003:0000:0000:0000:000a]:443;
        proxy_for 4 [2001:067c:04e8:f004:0000:0000:0000:000a]:443;
        proxy_for 5 [2001:0b28:f23f:f005:0000:0000:0000:000a]:443;

        Стартует, к серверам этим вроде подключается, но клиент через такое прокси не работает.


        1. L11R
          30.05.2018 23:05

          Оно стартует, если туда написать любой адрес от балды, гляньте. Не хватает дебага.


          1. DarkByte
            30.05.2018 23:25

            Ну адреса оно спарсило нормально, но если включить побольше дебага, то видно, что почти сразу после подключения отключается. Видимо что-то не так.


            1. L11R
              30.05.2018 23:29

              Есть мнение, что поддержка пока есть только для клиентов. То есть если клиент IPv6-only, то он подключится и будет проксироваться сервером через IPv4 сервера. Надеюсь пофиксят короче, потому что разворачивать сервера в России будет банально дешевле :D


  1. rail-ka
    30.05.2018 22:42

    Если у кого будет ошибка как у меня была:

    [5][2018-05-30 19:28:32.081214 local] failed to set rlimit for open files. Try running as root or requesting smaller maxconns value.
    [5][2018-05-30 19:28:32.081230 local] fatal: cannot raise open file limit to 65552
    

    запускайте в привилегированном режиме:
    docker run -d -p 443:443 --name=mtproto-proxy --privileged --restart=always -v proxy-config:/data telegrammessenger/proxy


    1. schors Автор
      30.05.2018 22:53

      А что Вы делаете, чтобы получить эту ошибку? Ну т.е. запускать в привелигерованном режиме как-то не айс…


      1. avikez
        30.05.2018 23:02

        Просто запускаю контейнер. Детали ошибки тут: https://github.com/TelegramMessenger/MTProxy/issues/7


      1. rail-ka
        30.05.2018 23:02

        Пока не разобрался, вроде докер установлен по официальной инструкции и работает нормально с другими контейнерами, а вот контейнер с телеграм ругается. Операционная система Centos 7, Azure хостинг.


    1. rail-ka
      31.05.2018 16:30
      +1

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

      docker run -d -p 443:443 --name=mtproto-proxy --ulimit nofile=98304:98304 --restart=always -v proxy-config:/data telegrammessenger/proxy
      


  1. SimWhite
    30.05.2018 22:43
    +1

    Скорость загрузки медиа значительно уступает «носкам» на том же сервере.


    1. DarkByte
      30.05.2018 23:26

      По медиа вроде не заметил особой разницы, а вот памяти кушает прилично больше.


  1. FANTOMka
    30.05.2018 23:03
    +1

    Что-то ios приложение запаздывает…


    1. Hakhagmon
      31.05.2018 00:51
      +1

      Компания Apple заблокировала обновление мессенджера Telegram по всему миру с середины апреля 2018 года. Об этом сообщается в разделе ответов на «часто задаваемые вопросы» на сайте приложения.

      Рассказывая о последних изменениях в законе о персональных данных, известном как General Data Protection Regulation (GDPR), команда мессенджера сообщила: «К сожалению, Apple блокирует Telegram от обновления iOS-приложения глобально с середины апреля».


      Telegram X например стабильно обновляется на rink.hockeyapp.net/apps/c6f5a76f5c364ac89a98b77671ef2d63


      1. FANTOMka
        31.05.2018 01:35

        Теперь все понятно…


    1. Hakhagmon
      31.05.2018 01:02
      +3

      я вот больше переживаю за docker и github, у ркн и туда щупальца могут дотянуться


      1. Sabubu
        31.05.2018 01:41

        Ими пользуются только айтишники, которые умеют обходить блокировки.


        1. monah_tuk
          31.05.2018 03:57
          +2

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


          1. skobkin
            31.05.2018 12:21

            Зато теперь работать террористом стало гораздо сложнее.


            1. monah_tuk
              31.05.2018 16:58

              Вот это тонко! Сделали моё утро!


      1. vconst
        31.05.2018 11:28
        +1

        Уже не раз дотягивались. Гитнаб блокировали из-за приколистов, которые выкладывали на него юморной список «100 способов самоубийств» и просто за компанию.


  1. devalone
    31.05.2018 00:47

    По умолчанию запускается два процесса прокси-сервера (с предположением, что каждому система выделит по ядру).

    Почему именно 2? Можно же узнать, сколько аппаратных потоков поддерживается в данной системе.


    1. schors Автор
      31.05.2018 00:52

      И ставить на полную катушку? Пусть администратор выбирает


      1. devalone
        31.05.2018 01:09

        Ну так если на сервере 2 потока, то итак на полную катушку, а если 1, то ещё и не эффективно, было бы логичней по дефолту запускать на всех ядрах, а опцией переопределять значение.


        1. schors Автор
          31.05.2018 01:12

          Ммм… Давайте возьмем дефолтный конфиг nginx…


          1. devalone
            31.05.2018 01:20

            и что с ним не так?


            1. schors Автор
              31.05.2018 01:29
              +1

              Там просто жестко 2 вбито. Да, они ещё сделали потом параметр auto. Но сильно потом.


              1. devalone
                31.05.2018 13:32

                Если речь про worker_processes, то там auto, nginx с репов Ubuntu 16.04.3.


  1. Sabubu
    31.05.2018 01:40

    Дуров молодец — придумал не только протокол прокси без сигнатур, но и систему мотивации для их появления. За рекламу конечно желающих поддерживать прокси будет гораздо больше, чем за бесплатно.


    1. harm
      31.05.2018 01:53
      -1

      А какая мотивация у пользователей тогда ставить себе Телеграм, которым можно пользоваться только через анальные отверстия, так ещё и рекламу от них получать?


      1. schors Автор
        31.05.2018 02:05

        Одно слово — комьюнити


        1. harm
          31.05.2018 03:01
          -3

          А это самое комьюнити готово помимо поднятия прокси ещё и подписку платную оформить на Telegram, дабы ФСБ РФ не тратило государственные средства на оплату серверов и зарплаты разработчиков?


          1. schors Автор
            31.05.2018 03:13

            Мне требуется переводчик


            1. harm
              31.05.2018 03:17
              -2

              И не только он


              1. Barabek
                31.05.2018 08:53

                Что вы тут ищите?


                1. tvr
                  31.05.2018 10:33
                  +1

                  Корм вестимо.


                  1. harm
                    31.05.2018 16:31
                    -1

                    Питаюсь мозгами, но тут их явно нет. Пойду на ЛОРе поищу.


                    1. devalone
                      31.05.2018 18:24

                      Так ты не по себе хабр суди, тут ещё другие люди сидят :)


                      1. harm
                        31.05.2018 18:52
                        -2

                        Это сарказм. Злые вы тут какие-то. Я же за монетизацию Telegram переживаю, за комьюнити ваше. А то знаю я один случай продажи пользовательской базы вместе с инфрастуктурой за бешенные миллиарды долларов.


                1. andorro
                  02.06.2018 09:25

                  Ключи шифрования.


          1. devalone
            31.05.2018 13:37

            Причём тут ФСБ?
            image


            1. harm
              31.05.2018 16:37
              -1

              Согласен, это всё благотворительный фонд братьев Дуровых. Ну ошибся, со всеми бывает.


        1. harm
          31.05.2018 19:00
          -5

          Когда в армии служил и мы делали с сослуживцами ремонт замполиту в комнате общежития, тоже себя комьюнити называли.


      1. AbstractGaze
        31.05.2018 13:18

        Реклама не обязательный пункт, вы же можете не «срать» пользователям своего прокси, а использовать как например «короткие номера» — для удобства клиентов так сказать.


        1. trimtomato
          31.05.2018 19:06
          -1

          А никого больше не смущает, что теперь будет показываться реклама в мессенджере, в котором обещали никогда не показывать рекламу? Я все понимаю, но читаю уже не первую новость про прокси и вот это все, и никого не волнует этот вопрос.


          1. shifttstas
            31.05.2018 19:20
            +4

            Так поднимите свой прокси и не будет рекламы


            1. trimtomato
              31.05.2018 20:08

              Вопрос не в рекламе и прокси. Вопрос в нарушении обещания.


              1. shifttstas
                31.05.2018 20:09
                +1

                Если не использовать прокси — рекламы не будет, Павел же не говорил, что он будет еще и прокси бесплатно оплачивать (а он это сейчас делает) в странах с цензурой. Там где нет цензуры — прокси тоже не нужны и обещания в силе


          1. putnik
            31.05.2018 19:23
            +1

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


            1. trimtomato
              31.05.2018 20:31
              +1

              В вашей формулировке это выглядит приличнее чем видится мне. Попробую себя переубедить.


  1. croupier
    31.05.2018 01:56

    В идеале, нужна тупая инструкция как поднять.
    Т.е. купить там-то (ip — уже не забанены) и сделайте то-то…
    Потом раздайте друзьям/знакомым…


    1. Barabek
      31.05.2018 08:55

      Этих инструкций уже полный хабр


      1. Barabek
        31.05.2018 08:56

        В т.ч. и как установить одной командой


      1. schors Автор
        31.05.2018 09:23

        Справедливости ради — как поставить докер нету


        1. KuniLinux
          31.05.2018 13:02

          если уж совсем не хочется заморачиваться (правая колонка ):
          rancher.com/docs/rancher/v1.6/en/hosts/#supported-docker-versions


        1. Arris
          31.05.2018 18:09

          emerge -av app-emulation/docker 


          1. shifttstas
            31.05.2018 18:19

            Проще же есть и под все платформы:

            curl -sSL https://get.docker.com/ | sh


            1. rogoz
              31.05.2018 22:08
              +1

              Дааа, под все
              SUPPORT_MAP="
              x86_64-centos-7
              x86_64-fedora-26
              x86_64-fedora-27
              x86_64-fedora-28
              x86_64-debian-wheezy
              x86_64-debian-jessie
              x86_64-debian-stretch
              x86_64-debian-buster
              x86_64-ubuntu-trusty
              x86_64-ubuntu-xenial
              x86_64-ubuntu-bionic
              x86_64-ubuntu-artful
              s390x-ubuntu-xenial
              s390x-ubuntu-bionic
              s390x-ubuntu-artful
              ppc64le-ubuntu-xenial
              ppc64le-ubuntu-bionic
              ppc64le-ubuntu-artful
              aarch64-ubuntu-xenial
              aarch64-ubuntu-bionic
              aarch64-debian-jessie
              aarch64-debian-stretch
              aarch64-debian-buster
              aarch64-fedora-26
              aarch64-fedora-27
              aarch64-fedora-28
              aarch64-centos-7
              armv6l-raspbian-jessie
              armv7l-raspbian-jessie
              armv6l-raspbian-stretch
              armv7l-raspbian-stretch
              armv7l-debian-jessie
              armv7l-debian-stretch
              armv7l-debian-buster
              armv7l-ubuntu-trusty
              armv7l-ubuntu-xenial
              armv7l-ubuntu-bionic
              armv7l-ubuntu-artful
              "


              1. shifttstas
                31.05.2018 22:10

                это 99.5% серверных OS


  1. Zettabyte
    31.05.2018 02:32

    Коллеги, пара прикладных вопросов, пока топик ещё горяч, особенно актуальных для тех, у кого VPS ещё маленькие (у меня вот, например, 384 MB RAM):

    1. Есть ли официальный способ установки без использования Docker? Если говорить более частно, то интересует CentOS 7.
      На GitHub предлагают использовать make, но я бы предпочёл установку из репозитория. Как я понимаю, туда MTProxy ещё не добрался?
    2. Если уже есть те, кто поставил и гоняет, как обстоят дела с потреблением аппаратных ресурсов (в особенности оперативная память, но и процессор, в целом, тоже)?
      Интересны два сценария: 10-20 человек (т.е. небольшая группа хорошо знакомых людей) и несколько десятков человек (перевод лампового чата специалистов на один прокси).


    1. shifttstas
      31.05.2018 02:42

      Проблема заключается в том, что данный докер образ использует какой-то жутко большой образ системы, надо подождать что бы его почистили или же сделать свой, докера не стоит боятся, он не так много ресурсов потребляет, как кажется.

      Ну есть еще вариант — купить сервер за 1 евро месяц с большим количество RAM =)


      1. schors Автор
        31.05.2018 03:18

        Образ системы вообще не влияет на потребляемый ресурс. Ну за мелкими деталями.


        1. shifttstas
          31.05.2018 03:18

          Почему же? посмотрите docker stats — сколько процессов использует их образ, немного удивитесь


          1. schors Автор
            31.05.2018 03:31

            Это зависит от базовой системы? На альпине столько же будет. А сколько? bash, сам прокси WORKERS +1? Ok. +2


            1. shifttstas
              31.05.2018 03:35

              Хм, у меня Pid’ов больше 60…


              1. schors Автор
                31.05.2018 03:40

                А это он не тредится там сам?


      1. schors Автор
        31.05.2018 03:18

        Я кстати сделаю наверное alpine и попробую статикой


      1. Seekeer
        31.05.2018 13:18

        Ну есть еще вариант — купить сервер за 1 евро месяц с большим количество RAM =)

        Это где такая щедрость?)


        1. shifttstas
          31.05.2018 13:55

          arubacloud.com например или за 5 евро — DigitalOcean


          1. gpyra
            01.06.2018 12:39

            arubacloud, мутные ребята
            1. The price of €1 per month (exc. VAT)… is valid only for deployments (and renewals) made on data center IT1. New deployments… will be priced at €2,79 per month (exc. VAT).
            И это же еще VAT добавлять?
            2. Maximum limit of 16 IPv6 simultaneous in use
            Что за треш
            3. Можно ли поставить ОС из своей .iso или хотя бы попросить добавить .iso как в KVM VPS?

            А DO, 70 баксов в год — это уже не щедрость


            1. shifttstas
              01.06.2018 14:46
              -1

              Зачем вам добавлять VAT если вы не гражданин EU? ценник 1 евро действует только в двух ДЦ, а не по всей географии, они собственно об этом и пишут.


              1. gpyra
                01.06.2018 16:17

                Извините, не знал, никогда с Европой дел не имел, только с штатами. Ну главное, чтобы ценник хотя бы лет 5 такой держался, а то будет как обычно через год: «мы тут всех перемещаем в наш новый дц, поэтому ценник дорожает».
                Так что у них с использованием distro of choice (которого в списке их ОС нет), не подскажите?


                1. rogoz
                  01.06.2018 22:27

                  На 1 евро дистр вроде как менять нельзя. Я менял систему через swap раздел, конечно для новичка linux будет сложно.


          1. Radjah
            01.06.2018 14:03

            На DO 5$, а не евро.


    1. schors Автор
      31.05.2018 03:17

      Репозитории все родом из начала 90-ых. Создавать пакеты под системы — муторно. Особенно в 2018 году, когда есть docker. Сделайте make, киньте бинарник на VDS.



  1. schors Автор
    31.05.2018 04:03

    Спасибо тебе добрый фей, который поправил <code> на <source>

    1. Съехало форматирование, проявился тег pre
    2. А редактор-то code по сей момент вставляет...


  1. nbytes
    31.05.2018 05:39

    Кто нибудь сравнивал с не официальными реализациями? Например на .net core и rust, второй особенно интересует.


    1. schors Автор
      31.05.2018 09:24

      Нет ещё. Кстати — благодатная почва


    1. pantsarny
      31.05.2018 12:44
      +1

      какого рода сравнение вас интересует?
      php реализация — кушает очень много памяти, работает хорошо
      rust — не дает подключиться при 5k+ соединениях, скачать файл невозможно
      nodejs — отлично работает
      .net не пробовал
      official — все отлично


      1. nbytes
        01.06.2018 03:01

        Ваше вполне подходит, спасибо. Разве что больше информации.


    1. Tonatos
      02.06.2018 13:58

      У меня сервер на rust висел дня четыре. Не знаю, в клиенте ли дело (Android + TG Desktop Alpha под OSX, две версии) или еще в чем, но работало жутко нестабильно. При фактически 5-7и клиентах, прокси периодически отпадал, клиенты не могли подключиться, приходило постоянно ребутать его. Файлы, как выше писали, не проксировал.

      Попробуем оф. версию.


  1. achekalin
    31.05.2018 07:07

    Если кто-то из тех, кого перед 1 мая оставляли на работе в РКН, пока они весь Телеграм не заблокируют, запустит такой прокси прямо в РКН, то и начальство (все равно) ничего не поймет и не заметит, и справедливость хоть как-то восторжествует.

    Интересно, владельца такого прокси хоть за что-то притянуть смогут? Неструктурированный поток бинарных данных: этак либо ругать всех, кто бинарные данные гонит без понятного заголовка, либо — игнорить?

    Молодцы Паша с командой!


    1. schors Автор
      31.05.2018 09:26

      Справедливости ради они банят не по данным от снифа. А просто по пабликам


      1. achekalin
        31.05.2018 09:39

        А я не про бан. Просто нашли комп, поснифали трафик, трафик — рандомные биты. Для владельца компа это вызовет проблемы, или нет?

        Я понимаю, что приписать «распространение материалов, разжигающих нетерпимость», равно как и наркоту подбросить, можно любому — но если по закону, а не по правоприменительной практике, есть ли повод к человеку претензию иметь?


        1. shifttstas
          31.05.2018 10:06

          Есть еще «Использование запрещенной не сертифицированной ГОСТом криптографии»


          1. achekalin
            31.05.2018 10:09

            "… карается исправительными работами на срок от 2^7 до 2^8 дней, либо тюремным заключением на срок сколько товарищ майор скажет, либо работой в РКН, с полной конфискацией радостей жизни."


        1. shifttstas
          31.05.2018 10:08

          Можно попробовать спрятать telegram трафик в https, тогда доказать, что у вас там стоит telegram proxy будет сложнее, без ключа соединение будет обрыватся habr.com/post/412779


    1. skobkin
      31.05.2018 12:25

      Если кто-то из тех, кого перед 1 мая оставляли на работе в РКН, пока они весь Телеграм не заблокируют, запустит такой прокси прямо в РКН

      Главное — не забыть настроить продвижение официального канала РКН в Telegram.


      1. achekalin
        31.05.2018 16:45

        И бота в него, который будет отвечать на вопросы «почему мой IP забанили?»


        1. skobkin
          31.05.2018 16:52

          Который будет отвечать примерно так.

          Указанный Вами IP адрес 51.15.37.92, 51.15.70.45 входит в подсеть 51.15.0.0/16, используемую для обеспечения функционирования коммуникационных интернет-сервисов указанного организатора распространения информации в сети «Интернет»


          1. achekalin
            31.05.2018 16:58

            Да-да, я это и имел в виду, просто не нашел быстро это отмазку.

            Вообще чего уж там, можно просто написать универсально (чтобы не мудрить с lookup-ом в БД запретов):

            Интересующий Вас IP адрес входит в подсеть 0.0.0.0/0, используемую для обеспечения функционирования коммуникационных интернет-сервисов организаторов распространения запрещенной решением суда информации в сети «Интернет». Сеть будет блокировано до вынесение решения о её разблокировки, которая выйдет не раньше, чем в сети «Интернет» будет пойман и наказан последний такой организатор.


            И ведь не отвертишься, в этой-то «подсети» точно хоть что-то «незаконное» можно будет найти, если хорошо поискать.


            1. skobkin
              31.05.2018 17:07

              Самое прекрасное, что в том же письме они МЕНЯ просят принять меры и отчитаться перед ними.

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

              Полный текст этого цирка можно почитать по ссылке выше из моего предыдущего коммента.


  1. Gl_Proxy
    31.05.2018 11:43

    А где можно посмотреть требования к ядру Linux?

    Если делать через make, то запустится на Centos 6.9 32 bit kernel 2.6?


  1. MSBlast
    31.05.2018 11:49
    +1

    Продублирую коммент из соседнего топика, вдруг кому пригодится:

    Поднял самописный прокси на Java (Netty), использует линуксовый epoll. Проверил на десктопном и мобильном приложениях.

    Запущен тут: t.me/proxy?server=139.162.152.61&port=3128&secret=DEADBEEFDEADBEEFDEADBEEFDEADBEEF

    Буду мониторить, по статистике отпишусь.

    Вечером на другой порт повешу официальную реализацию из сабжа, сравню по быстродействию.


    1. schors Автор
      31.05.2018 11:50

      Главное ещё проверить чтобы файлы качались. И конечно TAG желательно :)) Стата и всё такое. Пошёл за карандашом губу закатывать :)


      1. MSBlast
        31.05.2018 20:19
        +1

        На самопальном файлы качаются, проверял на десктопном) Буду дальше развивать, как выйдет что-то адекватное выложу на GitHub.


    1. MSBlast
      31.05.2018 20:18

      Поднял официальную имплементацию сервера на соседнем порту. Если кому пригодится:

      tg://proxy?server=139.162.152.61&port=3129&secret=DEADBEEFDEADBEEFDEADBEEFDEADBEEF
      или
      t.me/proxy?server=139.162.152.61&port=3129&secret=DEADBEEFDEADBEEFDEADBEEFDEADBEEF

      Собрал из исходников на гитхабе. Нагружает i5 CPU около 5% и ест около 5 mb RAM на воркера (Cent OS 7).

      Пинг ниже почти вдвое) (~250 ms VS ~450 ms на самопальной). Попозже проведу ещё нагрузочное тестирование. Отпишусь.


      1. schors Автор
        31.05.2018 20:58

        Ну т.е. самопал хуже?


  1. sarunu_vedejs
    31.05.2018 11:49

    у меня одного такое:
    ready_targets 0
    allocated_targets 18
    active_targets 18
    ?
    Как это дебажить вообще


  1. gpyra
    31.05.2018 13:10

    А не планируется ли автоматический поиск прокси? Ну на манер DHT у торрентов. Чтобы пользователь всегда имел работающий телеграм, а не вынужден был искать рабочий прокси


    1. schors Автор
      31.05.2018 13:24

      Ну а как он сейчас работает нативно? Именно так


      1. gpyra
        31.05.2018 16:20

        Как-то плохо работает. У друга на iOS работать перестал. У меня на Android с горем пополам работает каждый раз только после установки очередного обновления.


    1. devalone
      31.05.2018 13:45
      +1

      Тогда уже полноценную p2p сеть, где клиенты будут гонять через себя часть трафика, а публичные данные(сообщения и медиа в каналах) будут кешироваться и отдаваться с ближайших клиентов, а не с сервера.


      1. skobkin
        31.05.2018 13:46
        +1

        Так ведь можно случайно и Tox изобрести.


  1. VikSam
    31.05.2018 14:21

    Интересно, никто не запускал на ARM (Raspbian Strech)?


    1. psyo
      31.05.2018 15:33

      Судя по github.com/TelegramMessenger/MTProxy/issues/18
      Не заработает.


      1. VikSam
        31.05.2018 15:35

        Да, у меня не поднялось. Подождем ARM версию.


  1. inane
    31.05.2018 14:56

    Здравствуйте!
    Помогите, пожалуйста, чайнику. Арендовал сервер, настроил обычный прокси, все по инструкциям с Хабра. Сегодня решил поставить mtproto. Установил докер, запустился сервер — телега заработала. Затык возник на добавлении своих ключей. Пишет:
    Error response from daemon: driver failed programming external connectivity on endpoint stupefied_mirzakhani (8e2ad8ae271fe04bdaaa2d935292951e30a1e9df8de4837b852ffc47b8): Bind for 0.0.0.0:443 failed: port is already allocated. Сервер ubuntu 16.04.


    1. shifttstas
      31.05.2018 15:11
      +1

      У вас порт 443 уже занят, попробуйте другой порт или уберите то, что сейчас на нем живёт


      1. inane
        31.05.2018 16:23
        +1

        Я в этом пока не разбираюсь вообще. Оказывается я наустанавливал в докер разных контейнеров, и они по всей видимости конфликтовали. Снес все, поставил по новой — все заработало. Спасибо!


        1. shifttstas
          31.05.2018 18:05

          Используйте docker ps и docker stats для просмотра что у вас сейчас работает, и docker inspect %container name / ID% для глубкого изучения внутренностей контейнера


    1. schors Автор
      31.05.2018 15:14

      А. Сделайте как при обновлении:


      $ docker stop mtproto-proxy    # остановить контейнер
      $ docker rm mtproto-proxy      # удалить контейнер


      1. inane
        31.05.2018 16:24
        +1

        Спасибо!


  1. Arris
    31.05.2018 18:15

    В ридми официального репо сказано:

    Obtain current telegram configuration. It can change (occasionally), so we encourage you to update it once per day.


    Следует ли рекомендации этот докер-образ?

    P.S. Не имею возможности проверить сам по техническим причинам.


    1. shifttstas
      31.05.2018 18:22

      Достаточно добавить в образ условие померания основного процесса при жизни более чем 24 часа, далее docker сам его перезапустит и новая конфигурация будет загружена и применена. Ну это кривой вариант, красивый — клиент сам её должен переодически запрашивать, как я думаю это и происходит. В мануале написана такая инструкция на случай если вы будете использовать бинарник самостоятельно, что бы не забыли написать cron job


      1. Arris
        31.05.2018 18:42

        Вы думаете или вы уверены?

        Нет ли у вас возможности это проверить?


        1. shifttstas
          31.05.2018 18:58

          Как я могу быть увереным не видя консоль перед собой =)


    1. Kellis
      31.05.2018 19:39

      Докер, как я понимаю, тоже от телеграмма, в котором они советуют так же обновляться

      Please note that the proxy gets the Telegram core IP addresses at the start of the container. We try to keep the changes to a minimum, but you should restart the container about once a day, just in case.

      Так что, да — следует.


  1. bougakov
    31.05.2018 18:41

    Блин, а я только SOCKS-прокси danted настроил у себя на сервере…

    Чтобы не пропадало для истории — вот как установить его на обычный образ Ubuntu, с которым поставляются виртуальные серверы Hetzner Cloud:

    Все последующие команды запускаются от root. Создаём файл /etc/danted.conf такого содержания

    logoutput: syslog
    user.privileged: root
    user.unprivileged: nobody
    
    # The listening network interface or address.
    internal: 0.0.0.0 port=1080
    
    # The proxying network interface or address.
    external: eth0
    
    # socks-rules determine what is proxied through the external interface.
    # The default of "none" permits anonymous access.
    socksmethod: pam.username
    
    # client-rules determine who can connect to the internal interface.
    # The default of "none" permits anonymous access.
    clientmethod: none
    
    client pass {
            from: 0.0.0.0/0 to: 0.0.0.0/0
            log: connect disconnect error
    }
    
    socks pass {
            from: 0.0.0.0/0 to: 0.0.0.0/0
            log: connect disconnect error
    }


    устанавливаем:

    cd /tmp
    apt install libpam-pwdfile whois  gdebi-core
    wget http://ppa.launchpad.net/dajhorn/dante/ubuntu/pool/main/d/dante/dante-server_1.4.1-1_amd64.deb
    gdebi dante-server_1.4.1-1_amd64.deb
    iptables -A INPUT -p tcp -m tcp --dport 1080 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables-save > /etc/iptables/rules.v4
    netfilter-persistent save


    Если нужно нагенерить много пар логин-пароль из списка в Excel, делаем bash-скрипт по шаблону (я наделал логинов для всех трёх сотен сотрудников своей компании):

    #!/bin/bash
    rm /opt/dante/sockd.passwd 
    # нагенерите таких строк в Excel. Я использовал корп. логин, а в качестве пароля
    # использовал буквы и даты рождения коллег 
    echo -n "username:" >> /opt/dante/sockd.passwd  && mkpasswd --method=md5 "passw0rd" >> /opt/dante/sockd.passwd 


    Запускаем прокси и проверяем, что через него проходят соединения:

    service danted start
    curl -v -x socks5://username:passw0rd@YOURHOST:1080 http://www.google.com/


    Если всё в порядке (вам на экран выплюнуло HTML-код главной страницы Гугля), активируем автозапуск прокси при старте сервера:

    update-rc.d  danted defaults


    1. schors Автор
      31.05.2018 18:55

      А можно было просто взять https://github.com/schors/tgdante2


      1. bougakov
        31.05.2018 19:14
        +1

        мне не нужно было готовый образ docker, спасибо. У меня была задача сделать 300 персональных логинов к маленькому личному серверу, для коллег и подчеркнуть персональный характер этой «халявы». Технических ограничений нет, конечно, но это понижает вероятность того, что доступ к прокси будут передавать дальше по рукам.
        Так недалеко до того, что к вам внезапно половина Ирана придёт обходить блокировки — на виртуалку за два евро.


        1. shifttstas
          31.05.2018 19:20

          Учтите — протокол передает пароли в не шифрованном виде, впрочем как и логике, первый wireshark и доступ к прокси имеют все


          1. bougakov
            31.05.2018 19:31

            пароли были переданы в рассылке по компании на 300 человек, зачем Wireshark? Все и так знают, что пароль к прокси у ivan.ivanov — это «слово + день рождения Вани» :)

            Смысл в том, чтобы Ваня понимал, что халявный прокси сделали ему персонально, и не стоит передавать информацию о халяве дальше. Просто социальная инженерия.


            1. shifttstas
              31.05.2018 19:42

              я намекаю, что Иван может подключится к публичной Wi-Fi сети, в которой будет человек с WireShark, и тогда в качестве Ивана будет еще мильон Иранцев, в лучшем случае.


        1. schors Автор
          31.05.2018 21:00

          Как мой докер образ этому противоречит? Просто это можно было сделать полтора месяца назад


          1. bougakov
            31.05.2018 22:10

            «полтора месяца назад» я уже поставил StrongSwan IKEv2 VPN. Но выяснилось, что именно Телега и именно с VPN высаживает у телефона батарею со свистом, так что пришлось для неё изобретать «костыль» срочно.


            1. skobkin
              01.06.2018 14:13

              Telegram на телефоне можно пропустить через Orbot, который не ест батарею так как, например, OpenVPN.


              1. vconst
                01.06.2018 14:55

                ShadowSocks ещё меньше потребляет и он намного быстрее Орбот


                1. skobkin
                  01.06.2018 15:01

                  В чём выражается быстрота? Особенно в контексте использования Telegram.


                  1. vconst
                    01.06.2018 17:21

                    Скорость сети он режет намного меньше, чем ВПН. Телега это не только чатик, там и фото, и видео, и как файлообменник народ пользует.


    1. shifttstas
      31.05.2018 18:57

      Вот тут проще метод github.com/pav5000/easydante


      1. bougakov
        31.05.2018 19:10

        спасибо, но мне не надо было docker image.


        1. shifttstas
          31.05.2018 19:19
          +3

          2017: Как мне запихнуть приложение в докер?!
          2018: Дайте мне приложение без чертового докера!!!


          1. Arris
            01.06.2018 14:35
            +1

            Как-то так, да. Потому что черт его знает, что понапихали в контейнер авторы. А может майнер/спамер?


            1. shifttstas
              01.06.2018 14:47

              По этому, надо читать dockerfile и собирать самому, делов то на пару минут


              1. Arris
                02.06.2018 11:03

                Да я бы рад, но то ли я тупой, то ли документация докера запутанная, но я так и не понял, как из «образа»

                hub.docker.com/r/telegrammessenger/proxy

                вытянуть Dockerfile.

                В некоторых случаях на докерхабе можно посмотреть Dockerfile напрямую. В данном случае — нет.


        1. schors Автор
          31.05.2018 21:01

          Вам нужен был работающий сервер. Докер образ эту задачу решает


    1. valery1707
      31.05.2018 19:03

      Вот установка dante2 через докер в пару команд.
      Настройка специально под Telegram


      1. bougakov
        31.05.2018 19:10

        спасибо, но мне не надо было docker image.


  1. idmrty
    31.05.2018 18:59
    +1

    А кто-нибудь понял, как в не-docker версии задать несколько secret-ключей? Через запятую не работает.


    1. schors Автор
      31.05.2018 19:00

      Да, надо в докере просто стартовый скрипт посмотреть


    1. idmrty
      31.05.2018 19:16
      +1

      Да, указанием параметра несколько раз — вот так: -S a1a1 -S b2b2 -S c3c3


  1. al_one
    01.06.2018 05:21

    800 КиБ исходников официальной реализации на C против, например, 8 КиБ на Python намекают, что неофициальные реализации реализуют далеко-о-о не всю функциональность, заложенную в MTProto Proxy.


  1. chuikoffru
    02.06.2018 04:20

    Я так смотрю звонить через этот прокси я пока не могу?!


  1. inane
    02.06.2018 16:09

    По всем инструкциям завел сервер MTProto, добавил 4 ключа. Звонки, текст, отправка файлов идет. Столкнулся с проблемой отправки файлов с использованием мобильной сети Yota. Не уходят. При подключении к wifi — тут же уходят неотправленные сообщения. Проверить удалось на билайне — отправляются. Знания в linux — минимальные. Аренда сервера, установка docker сделана по инструкциям с habr и интернета. Если есть какие-то идеи сообщите, пожалуйста. Можно в ЛС, дабы не засорять.
    Спасибо!


    1. vconst
      02.06.2018 17:49

      Значит Йота заворачивает трафик определённого вида, лечится только сменой оператора или установкой впн.


      1. inane
        02.06.2018 18:14

        Сейчас на сервере настроен sock5 и mtproto, IP один и тот же. С sock5 yota отправляет а с нового — нет. Я не особо разбираюсь, но на сколько читал MTProto и был создан для того чтобы еще лучше обходить блокировки. Для меня у yota лучшие условия, да и другие операторы скорее всего тоже заблокируют.


    1. koshi-dono
      02.06.2018 18:00

      Да, всё так. Для них это нормально. У меня, например, WireGuard не работает, видимо потому, что udp. Обращался в тп, обещали мой ip разрешить. Уже почти две недели прошло, всё ещё не заработало. Обращайтесь в тп, меняйте опсоса или подключайте vpn.


      1. inane
        02.06.2018 18:16

        Если звонки и текст пропускает — скорее всего IP не заблокирован? Именно файлы не проходят. Подскажите как правильно запрос подать? Думаю как только я упомяну что сервер для telegram — ответ будет очевиден.


        1. koshi-dono
          02.06.2018 18:31

          Блокируется в данном случае не ip, а их DPI блокирует определённый тип трафика. Как подать не подскажу, в моём случае это просто vpn на рабочем сервере, поэтому я просто описал сложившуюся ситуацию.