Pull to refresh

Comments 24

Спасибо за статью.

Подскажите, на десктопном клиенте есть возможность настроить соединение чрез MTProto?
в альфа версии есть. скачать можно с офиц. сайта
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make
make test
sudo make install

На rpm-based дистрибутиве? Srsly?
Взять spec с ближайшей версии srpm, собрать rpm, при ошибках поправить spec, не?
Не. Это же слишком просто и слишком правильно :).
Ну и классика же: «Лёгким движением make install...»
Для Debian 9:

sudo apt-get install git curl build-essential libssl-dev libz-dev
git clone https://github.com/TelegramMessenger/MTProxy.git
cd MTProxy/
make


Результат будет в папке MTProxy/objs/bin

Чтобы хостить на портах < 1024 перед запуском нужно ещё это сделать:

sudo apt-get install libcap2-bin
sudo setcap CAP_NET_BIND_SERVICE=+eip "полный путь бинарника mtproto-proxy"

Спасибо! У меня был настроенный 3proxy, отлично и стабильно работающий.
Вчера тоже ткнулся с MTProto на CentOS7 — и фиг. Попробую сегодня эту инструкцию.
Может быть вы сделаете PR на гитхаб с правкой документации?
Ставил на Ubuntu 16.04 LTE, напоролся на ту же проблему. Выяснил, что дело в версии openssl. Не стал разбираться со сборкой openssl 1.1 из исходников, опыта возни с линуксами не хватило, зато где-то нашел, что указанные «недостающие» функции EVP_MD_CTX_new и EVP_MD_CTX_free были и в openssl 1.0.2, но назывались там, соответственно, EVP_MD_CTX_create и EVP_MD_CTX_destroy.

Короткая пробежка по исходникам поиском и заменой (по 2 вхождения каждой функции в common/sha256.c и common/sha1.c, и одно в net/net-msg.c) привела к тому, что прокси прекрасно собрался и работает на «штатной» openssl 1.0.2g.

На гитхабе тем временем уже есть чей то пуллреквест, который делает примерно то же самое (алиасит _new и _free через дефайны в _create и _destroy).
Собрал из исходников openssl 1.1h на Ubuntu 16.04.4, добавил в makefile нужные параметры.
Стало собиратся лучше чем раньше. Но всё равно с ошибкой. Ругается так:
objs/lib/libkdb.a(sha256.o): In function `sha256_starts':
sha256.c:(.text+0x5): undefined reference to `EVP_MD_CTX_init'
objs/lib/libkdb.a(sha1.o): In function `sha1_starts':
sha1.c:(.text+0x5): undefined reference to `EVP_MD_CTX_init'
objs/lib/libkdb.a(aesni256.o): In function `tg_ssl_aes_ctr128_crypt':
aesni256.c:(.text+0x4d0): undefined reference to `AES_ctr128_encrypt'
collect2: error: ld returned 1 exit status
Makefile:86: recipe for target 'objs/bin/mtproto-proxy' failed
make: *** [objs/bin/mtproto-proxy] Error 1

Возможно я что-то криво собрал или криво подключил. Не знаю теперь куда копать.
под ubuntu 18.04 собирается само :), и это радует так как оно появляется на vps
Получилось ли у кого то подключить промо канал?
Да, теперь у меня получилось, забыл передать TAG в контейнер.
Добавлю, что можно добавить mtproto в автозапуск, используя Systemd.

nano /lib/systemd/system/mtproxyd.service

[Unit]
Description=MTproxy service
After=network.target
StartLimitIntervalSec=0


[Service]
Type=simple
Restart=always
RestartSec=1
User=setup_user  # Юзер должен иметь права к mtproto-proxy, proxy-secret и proxy-multi.conf
ExecStart=/path_to_1/mtproto-proxy -u nobody -p 8888 -H 443 -S you_secret --aes-pwd /path_to_2/proxy-secret /path_to_3/proxy-multi.conf -M 1
# path_to_1, path_to_2, path_to_3 зависит от того, как вы устанавливали

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start mtproxyd
systemctl status mtproxyd
systemctl enable mtproxyd


А ещё можно настроить sslh: habr.com/post/412779
Ещё можно сделать setcap 'cap_net_bind_service=+ep' /path_to_1/mtproto-proxy, чтобы пользователь setup_user смог открыть порт 443
Попробовал, но нечего не вышло, выдаёт (code=exited, status=217/USER). Пользователь верен, перепробовал кучу вариантов, но не вышло…
Unit]
Description=MTProxy
After=network.target
StartLimitIntervalSec=0


[Service]
Type=simple
Restart=always
RestartSec=1
User=loll# Юзер должен иметь права к mtproto-proxy, proxy-secret и proxy-multi.conf
ExecStart=/home/lol/MTProxy/mtproto-proxy -u lol -p 8888 -H 443 -S key --aes-pwd /home/lol/MTProxy/proxy-secret /home/lol/MTProxy/proxy$
# path_to_1, path_to_2, path_to_3 зависит от того, как вы устанавливали

[Install]
WantedBy=multi-user.target

За статью спасибо. /s Но как бы Хабр не заблокировали за пособничество пособникам пособников террористов. /s
на 32 битах не собралось, на 64 и со старой openssl норм (gentoo OpenSSL 1.0.2o)
теперь это надо в tor завернуть?
Собралось успешно на Ubuntu 16.04 после обновления openssl.
Юнит-файл для systemd создал, теперь возник такой вопрос: а нужно ли перезапускать сам mtproto-proxy для того чтобы он перечитал обновленный proxy-multi.conf?
Подскажите, в чем может быть дело? Собирается MTproxy без ошибок, но не появляется бинарника mtproto-proxy?
Sign up to leave a comment.