Разгортванне свайго MTProxy Telegram са статыстыкай

Разгортванне свайго MTProxy Telegram са статыстыкай

„Я атрымаў у спадчыну гэтую блытаніну,
пачынаючы з бессаромных Zello; LinkedIn
і канчаючы усімі іншымі на платформе Telegram
у маім свеце.

А потым ікнуўшы,
чыноўнік паспешліва і гучна дадаў:
але я навяду (тут у IT) парадак“
(...).

Дураў, справядліва мяркуе, што гэта аўтарытарныя дзяржавы павінны яго, шыфрапанка, баяцца, а раскамнагляды і залатыя шчыты са сваім DPI-фільтрамі яго не вельмі турбуюць»
(Палітычная тэхніка)

Мая тэхнічная палітыка — прасцей, я магу тут распісаць свае разважанні па бестурботных блакіроўках у рунэце, але мяркую, што прагрэсіўныя грамадзяне Modern Russian і юзэры Хабра адчулі на сваёй шкуры непрафесіяналізм дзейнай улады, таму абмяжуюся адзінай фразай: наша тэхнічная палітыка . "забеспячэнне родных і блізкіх устойлівым каналам сувязі".

Разгортванне MTProto proxy Telegram

  • Тэхнічны ўзровень складанасці - "нескладана", калі, напрыклад, прытрымлівацца дадзенай шпаргалцы.
  • Узровень надзейнасці – «вышэй сярэдняга»: docker-вобраз працуе стабільна, перазапускаць яго не патрабуецца кожны дзень, як пісалі распрацоўшчыкі ў сваёй афіцыйнай дакументацыі Telegram, але нейкія ўразлівасці кантэйнер напэўна ўтрымоўвае.
  • Узровень супраціву/трывогі - 10 ігілаўцаў плятуць свае змовы "радня карыстаецца", бан не прылятаў ад РКН ні разу за ўвесь час (з вясны).
  • Узровень даверу - "public baby distrust", праблема на баку кліентаў (некаторыя сябры падазрона ставяцца да майго MtprotoProxy).
  • Узровень тэстастэрону - "вышэй не стаў".
  • Фінансавыя выдаткі - "0₽".
  • Фінансавае ўзнагароджанне - "ад грамадзяніна Дурава не залежыць". Заахвочванне - магчымасць навязвання рэкламы.

Паднімаць наш TelegramProxy будзем на "бясплатных/персанальных" магутнасцях Amazon-ec2: t2.micro. Я выкарыстаў гэтую машыну.

Окей, разгарнулі свой бясплатны сервер, пераходзім на афіцыйны сайт dockerhub і спампоўваем docker-кантэйнер.

Не трэба шукаць нейкую выяву, файл, або чароўную кнопку - "іх няма", уся магія робіцца ў CLI:

$ docker pull telegrammessenger/proxy #образ скачан.

Але перад "гэтым" усталюеце docker для CLI:

sudo apt-get install docker.io docker

Далей, у афіцыйнай дакументацыі MtprotoProxyTelegram нам прапануюць зрабіць прыкладна наступнае, які робіцца:

$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest #запускаем наш контейнер «mtproto-proxy».

Пасля гэтай каманды ў вывадзе тэрмінала з'явіцца HEX-радок, але яна нам не цікавая.

Пішам у CLI:

$ docker logs mtproto-proxy

І атрымліваем патрэбныя дадзеныя:

Разгортванне свайго MTProxy Telegram са статыстыкай
У выснове дадзенага лога нам паказваюць (замазаў):

А) наш ip сервера (вонкавы ip сервера);
Б) і выпадковы сакрэт - выпадковы радок у HEX.

Перад тым, як зарэгаць наш MtproProxy, трэба наладзіць галоўны файрвол над iptables (як бы вы не перанакіроўвалі трафік на дадзенай VPC, ён будзе непаслухмяны, бо самы галоўны файрвол у Amazon-EC2 знаходзіцца ў web-інтэрфейсе і мае больш высокі прыярытэт над iptables. ).

Заходзім у «кансоль Amazon-EC2» у Security Group і адкрываем які ўваходзіць 443 порт (лагічная маскіроўка трафіку на першы час).

Разгортванне свайго MTProxy Telegram са статыстыкай

Бярэм з лога нашы дадзеныя «ip і сакрэт» і ідзем у мэсанджар Telegram, знаходзім афіцыйны MTProxy Admin Bot (@MTProxybot) і рэгіструем наш MtproProxy: запускаем каманду [/newproxy] і ўводзім [наш_ip:443], а потым і наш [сакрэт /HEX].

Калі накасячыце пры ўводзе дадзеных, робат будзе злавацца і слаць вас на…

Калі два радкі запоўніце без памылак, то атрымаеце адабрэнне і працоўную спасылку, на ваш дзеючы MtprotoProxyTelegram, якім вы можаце падзяліцца з кім заўгодна.

Разгортванне свайго MTProxy Telegram са статыстыкай

Таксама праз дадзенага робата можна дадаць Ваш спонсаркі канал (але не чат), дзе Вы будзеце вашыя погляды навязваць карыстальнікам, якія падключыліся да вашага сервера, а можна не «спаміць», і не турбаваць сваіх будучы-патэнцыйных кліентаў, не паказваючы канал у замацаваным спісе месэнджара.

Яшчэ некалькі слоў пра робата, там можна запытваць статыстыку, але «таксама абаранак». Мабыць "статыстыка" даступная, калі за табой Махачкала "натоўп нахлебнікаў".

Маніторынг

А колькі мы можам падлучыць карыстачоў на наш сервер? І ўвогуле, хто/што там? Чаго? І колькі?

Глядзім, што там па афіцыйнай дакументацыі… Ага, вось, зрабіць так:

$ curl http://localhost:2398/stats или вот так $ docker exec mtproto-proxy curl http://localhost:2398/stats # и нам выдадут статистику прямо в CLI.

"Трымай кішэню шырэй" Па прапанаваных камандах мы заўсёды будзем атрымліваць падобную памылку:

«curl: (7) Вызначаны connect to port localhost 2398: У злучэнні адмоўлена»

Проксі наш будзе працаваць. Але! Абаранак, а не статыстыку мы атрымаем.

Можна заняцца справамі для чырвонаглазікаў: праверыць

$ netstat -an | grep 2398 и...

Спачатку я падумаў, што гэта чарговы вушак за распрацоўшчыкамі Telegram (і я да гэтага часу так думаю), потым знайшоў часовае нядрэннае рашэнне: полирнуть напільнікам Docker-Кантэйнер.

Пазней на вочы трапілася інфармацыя:

пра дзяржаўныя скокі Раскамнагляду вакол «статыстыкі».

«Мы заблакавалі на сваіх серверах частку публічных проксі, скарыстаўшыся базамі праекту firehol. Гэты праект маніторыць спісы з публічнымі проксі і робіць базы з імі.

З гэтага моманту (гэта значыць ужо амаль двое сутак) не было заблакавана ніводнага IP-адрасу нашага расійскага проксі.

3. Распавядаем, як зрабіць амаль непаражальны для Роскомнадзора проксі і дзелімся скрыптам блакавання публічных проксі.

- Абнавіце docker-кантэйнер (або дэман) MTProto proxy да апошняй версіі: РКН вылічае старыя версіі па порце статыстыкі, які біндзіўся на 0.0.0.0 і адназначна сябе ідэнтыфікаваў для ўсяго інтэрнэту. А лепш - адкрыйце патрэбныя парты з дапамогай iptables, а астатнія - зачыніце (памятаеце, што ў выпадку з docker-кантэйнерам варта выкарыстоўваць правіла FORWARD).

- Роскомнадзор даўно навучыўся дампіць трафік: яны бачаць звароты ўнутры HTTP-і SOCKS5-проксі, а гэтак жа бачаць старую версію абфускацыі MTProto proxy.

Калі кліенты некаторых правайдэраў, у якіх устаноўлены такія дампілкі, звяртаюцца да Telegram праз такія проксі, то РКН бачыць такія звароты і адразу блакуюць гэтыя проксі. Тое самае тычыцца MTProto proxy са старой абфускацыяй.

Рашэнне: раздавайце кліентам, якія падлучаюцца да проксі, secret толькі з dd у пачатку (не трэба паказваць дадатковыя літары dd у наладах самога mtproto proxy). Гэта ўлучыць версію абфускацыі, якую не ўмеюць вызначаць дампілкі.

І ніякіх HTTP-і SOCKS5-проксі.

- Падгон, з дапамогай якога кожны ўладальнік тэлеграм-проксі, які рэгулярна баніцца РКН, можа цалкам (ці амаль цалкам) спыніць блакіроўкі (а заадно і пераканацца ў тым, што РКН хлусіць).

Скрыпт, які баніць публічныя проксі і невялікі мануал да яго».

Крыніца

Наш проксі празаходні, ні якіх праблем/блакіровак за вясновыя і халодныя летнія дні я не сустрэў, на творчую задачу гэта таксама не цягнула, таму стратай тэмпу не займаўся і прэфікс dd* да ключа не дадаваў.

Мануал "атрыманне статыстыкі/маніторынг" па афіцыйнай інструкцыі MtprotoProxyTelegram – непрацоўны/састарэлы, прыйдзецца правіць docker-выява.

Чынім.

Кантэйнер у нас усё яшчэ запушчаны:

$ docker stop mtproto-proxy #останавливаем наш запущенный docker-контейнер и запускаем новый образ с пропущенным флагом статистики

$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config:/data -e SECRET=ваш_предыдущий_секрет_hex telegrammessenger/proxy:latest

Праверым статыстыку:

$ curl http://localhost:2398/stats

curl: (7) 0.0.0.0 port 2398: У злучэнні адмоўлена
Статыстыка ўсё яшчэ недаступная .!..

Даведаемся ідэнтыфікатар docker-кантэйнера:

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest «/bin/sh -c '/bin/ba…» Да 0.0.0.0 гадзіны 443:443->2/tcp mtproto-proxyXNUMX

Ідзем са сваім статутам унутр docker-кантэйнера:

$ sudo docker exec -it f423c209cfdc /bin/bash

$ apt-get update
$ apt-get install nano
$ nano -$ run.sh

І ў самым апошнім радку скрыпту «run.sh» дадаем прапушчаны сцяг:

«-http-stats»
"exec /usr/local/bin/mtproto-proxy -p 2398 -H 443 -M "$WORKERS" -C 60000 -aes-pwd /etc/telegram/hello-explorers-how-are-you-doing -u root $CONFIG -allow-skip-dh -nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD»

Дадаяце «—http-stats», нешта накшталт гэтага павінна атрымацца:

«exec /usr/local/bin/mtproto-proxy -p 2398 --http-stats -H 443 -M "$WORKERS" -C 60000 --aes-pwd /etc/telegram/hello-explorers-how-are-you-doing -u root $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD»

Ctrl+o/Ctrl+x/Ctrl+d (захаваць/выхад з nano/выхад з кантэйнера).

Перазапускаем наш docker-кантэйнер:

$ docker restart mtproto-proxy2

Усё, зараз па камандзе:

$ curl http://localhost:2398/stats #получаем объемную статистику

Разгортванне свайго MTProxy Telegram са статыстыкай
У статыстыцы шмат "смецця" (на скрыне 1/3 яе частка), ствараем alias:

$ echo "alias telega='curl localhost:2398/stats | grep -e total_special -e load_average_total'" >> .bashrc && bash

Атрымліваем тое, дзеля чаго паліравалі docker-кантэйнер: у падлучэнняў і нагрузку:

$ telega

Разгортванне свайго MTProxy Telegram са статыстыкай
Docker-кантэйнер працуе, статыстыка круціцца.

Затрачаныя рэсурсы

Як бы ты не быў круты Сцюарт Рэдман нават ты пакідаеш след ад г.на на сваіх трусах. Які працуе Docker-выява пакідае немаленькі след.

Распісваць перавагі і недахопы docker-вобразаў не мае сэнсу, docker-кантэйнер - гэта міні-віртуальная машына, якая спажывае рэсурсы менш, чым "рэальная" віртуальная машына, напрыклад VirtualBox, але спажывальная.

1) Запушчаны са статыстыкай docker-выява або без яе, два кліента гарэзуюць або дзесяць - рэсурсы ўтылізуюцца ~аднолькава: 75% ад усёй прадукцыйнасці CPU t2.micro.

2) Глядзім маніторынг VPC-сервера:

Разгортванне свайго MTProxy Telegram са статыстыкай

З графіка ўтылізацыі рэсурсаў на VPC бачым, што docker-кантэйнер спажывае ўвесь час ~7,5% ад агульнай макс. прадукцыйнасці CPU і 28 траўня быў спынены мною наўмысна/часова (Нататка – на серверы гэтак жа круцяцца OpenVPN & pptp).

Чаму 10% сталай загрузкі CPU - гэта мяжа для дадзенага сервера?

Таму што ёсць абмежаванні з боку Amazon EC2 і вылічаюцца яны ў крэдытах:

Разгортванне свайго MTProxy Telegram са статыстыкай

1 крэдыт CPU = 1 ЦП, які працуе са 100% загрузкай на працягу адной хвіліны, а ў нас крэдытаў 6 (гэта значыць у піках 100%-я утылізацыя CPU магчымая на працягу 6 хвілін, а далей магутнасць CPU знізіцца). Іншыя камбінацыі: напрыклад, 1 крэдыт CPU = 1 ЦП, які працуе з 50%-й нагрузкай на працягу двух хвілін (гэта значыць мы можам выкарыстоўваць CPU з 50%-й нагрузкай на працягу 12 хвілін), або, прыклад, пастаяннай 10% - й нагрузкай CPU на працягу ўсяго часу і Д.П.

Высновы

  • Мы часцінка "Лічбавага Супраціву". Забяспечылі сваіх "татаў і мам" надзейным каналам сувязі.
  • Калі на серверы ў вас будзе разгорнуты MtprotoProxyTelegram і OpenVPN, але не больш, затрымак/пінгаў/збояў не будзе, але калі вы ўвесь час эксперыментуеце са сваім t2/micro, то чакайце тармазоў па сувязі.
  • Мой заакіянскі пінг ~100-250мс, затрымак у маўленчай сувязі не адчуваецца.
  • Фінансавыя выдаткі на ўсё "гэта" (у тым ліку і рэсурсы VPC) = 0₽.

Перадрук свайго артыкула.

UPD: Дзякуй некаторым хабраюзерам за карысныя каментары, сапраўды, магчыма (статыстыка падтрымліваецца?), ёсць лепшыя аналагі афіцыйнаму docker-выяву Mtproto proxy Telegram.

Крыніца: habr.com

Дадаць каментар