Тут вам это, не того

Бложик Иного

Установка MTProxy на CentOS 7 64 бита

Здесь я опишу для себя установку из исходников MTProxy. Может кому тоже будет полезно.

Исходники можно взять тут.

Первым делом смотрим через терминал какой версии у нас openssl

openssl version

Если версия ниже 1.1.*, то обновляем openssl. Делается так:

Обновляем пакеты, качаем архив, разархивируем, переходим в папку. Конфигурируем и собираем.

sudo yum install libtool perl-core zlib-devel -y
curl -O -L https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -zxvf openssl-1.1.0h.tar.gz
cd openssl-1.1.0h
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make
make test

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

make install

Добавляем новую версию в PATH

Создаём файл

sudo vi /etc/profile.d/openssl.sh

В него заносим следующее:

# /etc/profile.d/openssl.sh
pathmunge /usr/local/openssl/bin

Вставляем через нажатие “i”, вставили, нажимаем escape, для сохранения и выхода печатаем “:wq” и Enter.

Линкуем библиотеки

Создаём файл

sudo vi /etc/ld.so.conf.d/openssl-1.1.0h.conf

В него копируем текст

# /etc/ld.so/conf.d/openssl-1.1.0h.conf
/usr/local/openssl/lib

сохраняем и выходим.

sudo ldconfig -v

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

Переходим к установке MTProxy

git clone https://github.com/TelegramMessenger/MTProxy.git
cd MTProxy/
curl -s https://core.telegram.org/getProxySecret -o proxy-secret
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf
head -c 16 /dev/urandom | xxd -ps

Полученную строку из последней команды копируем к себе куда нибудь.

Вносим правки в Makefile

vi Makefile

Заменяем два места в файле

CFLAGS = -I/usr/local/openssl/include -m64 -O3 -std=gnu11 -Wall -mpclmul -march=core2 -mfpmath=sse -mssse3 -fno-strict-aliasing -fno-strict-overflow -fwrapv -DAES=1 -DCOMMIT=\"${COMMIT}\" -D_GNU_SOURCE=1 -D_FILE_OFFSET_BITS=64
LDFLAGS = -L /usr/local/openssl/lib -m64 -ggdb -rdynamic -lm -lrt -lcrypto -lz -lpthread -lcrypto

Собираем сервер

sudo make

Вносим правило в iptables, сохраняем и перезапускаем.

iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables-save | sudo tee /etc/sysconfig/iptables
service iptables restart

Запускаем сервер.

objs/bin/mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> --aes-pwd proxy-secret proxy-multi.conf -M 1

вместо nobody пишем учётку из под которой будем запускать, если вы такой же дурак как и я, то пишем root, далее пишем порты, нужно чтоб эти порты больше не юзала ни одна прога на серваке.  Вместо <secret> вносим длиннющий код, который получили до этого. Вносим без кавычек, напрмер

-S 15da6d33556f333a95b8a28734adf969

И по идее, теперь должно всё запуститься.

Добавление прокси в автозагрузку

Создадим файл MTProxy.service:

sudo nano /etc/systemd/system/MTProxy.service

Внесём в него следующее:

[Unit]
Description=MTProxy
After=network.target

[Service]
Type=simple
Restart=always
RestartSec=1
User=root
WorkingDirectory=/root/MTProxy/objs/bin
ExecStart=/root/MTProxy/objs/bin/mtproto-proxy -u root -p 8888 -H 444 -S <ваш секретный код(без <>)> -P <ваш рекламный тег(без <>)> --aes-pwd /root/MTProxy/proxy-secret /root/MTProxy/proxy-multi.conf -M 1
Restart=on-failure

[Install]
WantedBy=multi-user.target

юзера можно менять конечо, даже нужно, плохо из под рута запускать, но мне лень. сама строка запуска похожа на ту, что писали выше, но пришлось указать полные пути до скомпилированного файла, то секретного файла и до списка серверов. Если делалось по моей инструкции, то всё должно быть примерно такое же. Порт 444 рекомендую сменить на 443, если он у вас не занят другим приложением. Как получить рекламный тег я надеюсь объяснять не надо. Просто пообщайся по этой теме с @MTProxybot в телеге.

Сохраняем и закрываем файл.

Вводим последовательно 4 команды

sudo systemctl daemon-reload
sudo systemctl restart MTProxy.service
sudo systemctl status MTProxy.service
sudo systemctl enable MTProxy.service

Перезапускаем демонов(хз как точно, я не понимаю эту команду). перезагружаем прокси, узнаём статус и прописываем в автозагрузку.(Это про четыре команды выше).

При введении команды статуса должны увидеть что то похожее на это:

И не забудьте внести правила в iptables

iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -L -n
iptables-save | sudo tee /etc/sysconfig/iptables
service iptables restart

Чекай

На этом уж точно всё.

Спасибо чуваку с хабра , который перевёл инструкцию по обновлению  openssl отсюда и дополнил её обновлением Makefile’а. Чуваку с гитхаба, который решил проблему связанную с маской сети, час назад его коммит одобрили, и править ничего дополнительно не надо. Спасибо Паше Дурову. Спасибо диплому, что у меня отпуск, и я могу потратить кучу времени на поднятие этого сервера.

Диджитал резистанс!

 

Назад

Прокси для телеграма

Далее

Pi-hole на synology(xpenology) с помощью докер.

5 комментариев

  1. Ra

    Никак не получается в автозагрузку запихнуть, не подскажите решение?

    • Inojj

      Дополнил статью про добавление в автозагрузку, спасибо что побороли мою лень 🙂

  2. User

    у меня на CentOs не собиралось из-за пункта -m64. Заменил на родной ${ARCH} и сборка пошла

    • Inojj

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

  3. Anton

    Не работает уже инструкция

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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

Работает на WordPress & Автор темы: Anders Norén