Pag-deploy ng iyong MTProxy Telegram na may mga istatistika

Pag-deploy ng iyong MTProxy Telegram na may mga istatistika

"Nagmana ako ng kaguluhang ito,
simula sa walanghiyang Zello; LinkedIn
at nagtatapos sa "lahat ng iba pa" sa platform ng Telegram
sa aking mundo.

At pagkatapos ay sinok,
Mabilis at malakas na idinagdag ng opisyal:
ngunit aayusin ko ang mga bagay-bagay (dito sa IT)"
(...).

Durov, tama na naniniwala na ito ay awtoritaryan estado na dapat matakot sa kanya, isang cypherpunk, at Roskomnadzor at ginintuang mga kalasag na may kanilang mga filter ng DPI ay hindi talaga nakakaabala sa kanya.
(Pampulitikang pamamaraan)

Ang aking teknikal na patakaran ay mas simple, maaari kong ilarawan dito ang aking mga saloobin sa walang ingat na pagharang sa Runet, ngunit naniniwala ako na ang mga progresibong mamamayan ng Modernong Ruso at mga gumagamit ng Habr ay nadama ang hindi propesyonalismo ng kasalukuyang pamahalaan sa kanilang sariling balat, kaya't lilimitahan ko ang aking sarili sa isang parirala: ang aming teknikal na patakaran ay "Digital na Paglaban" . "pagbibigay sa mga kamag-anak at kaibigan ng isang matatag na channel ng komunikasyon."

Pag-deploy ng MTProto proxy Telegram

  • Ang teknikal na antas ng pagiging kumplikado ay "madali", kung, halimbawa, susundin mo ang cheat sheet na ito.
  • Ang antas ng pagiging maaasahan ay "mahigit sa karaniwan": ang imahe ng docker ay gumagana nang matatag, hindi ito kailangang i-restart araw-araw, tulad ng isinulat ng mga developer sa kanilang opisyal na dokumentasyon ng Telegram, ngunit ang lalagyan ay malamang na naglalaman ng ilang mga kahinaan.
  • Ang antas ng pagtutol/pagkabalisa - hinahabi ng 10 miyembro ng ISIS ang kanilang mga sabwatan na "ginagamit ng mga kamag-anak", ang pagbabawal ay hindi nagmula sa RKN kahit isang beses sa lahat ng oras (mula noong tagsibol).
  • Ang antas ng tiwala ay "kawalan ng tiwala sa pampublikong sanggol", isang problema sa panig ng kliyente (may mga kaibigan na naghihinala sa aking MtprotoProxy).
  • Mga antas ng testosterone - "hindi tumaas."
  • Mga gastos sa pananalapi - "0β‚½".
  • Pinansyal na gantimpala - "ay hindi nakasalalay sa mamamayang Durov." Promosyon - ang kakayahang magpataw ng advertising.

Itataas namin ang aming TelegramProxy sa "libre / personal" na mga kapasidad ng Amazon-ec2: t2.micro. ginamit ko ito sasakyan.

Okay, na-deploy ang iyong libreng server, pumunta sa opisyal na website dockerhub at i-download ang docker container.

Hindi na kailangang maghanap ng ilang imahe, file, o magic button - "wala sila doon", lahat ng magic ay ginagawa sa CLI:

$ docker pull telegrammessenger/proxy #ΠΎΠ±Ρ€Π°Π· скачан.

Ngunit bago "iyon", i-install ang docker para sa CLI:

sudo apt-get install docker.io docker

Dagdag pa, sa opisyal na dokumentasyon ng MtprotoProxyTelegram, inaalok kami na gawin ang isang bagay tulad ng sumusunod, ginagawa namin:

$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest #запускаСм наш ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Β«mtproto-proxyΒ».

Pagkatapos ng command na ito, lalabas ang isang HEX string sa output ng terminal, ngunit hindi kami interesado dito.

Sumulat kami sa CLI:

$ docker logs mtproto-proxy

At nakukuha namin ang kinakailangang data:

Pag-deploy ng iyong MTProxy Telegram na may mga istatistika
Sa output ng log na ito, ipinapakita sa amin (pinahiran):

A) aming server ip (panlabas na server ip);
B) at isang random na lihim - isang random na string sa HEX.

Bago irehistro ang aming MtproProxy, kailangan mong i-configure ang pangunahing firewall sa ibabaw ng mga iptable (kahit paano mo i-redirect ang trapiko sa VPC na ito, magiging malikot ito, dahil ang pangunahing firewall sa Amazon-EC2 ay matatagpuan sa web interface at may mas mataas na priyoridad kaysa sa iptables).

Pumunta tayo sa"console Amazon-EC2" sa Security Group at buksan ang papasok na port 443 (logical masking trapiko sa unang pagkakataon).

Pag-deploy ng iyong MTProxy Telegram na may mga istatistika

Kinukuha namin ang aming "ip at lihim" na data mula sa log at pumunta sa Telegram messenger, hanapin ang opisyal na MTProxy Admin Bot (@MTProxybot) at irehistro ang aming MtproProxy: patakbuhin ang [/newproxy] command at ipasok ang [our_ip:443], at tapos ang aming [secret /HEX].

Kung magulo ka sa pagpasok ng data, magagalit ang bot at ipapadala ka sa ...

Kung punan mo ang dalawang linya nang walang mga error, makakatanggap ka ng pag-apruba at gumaganang link sa iyong kasalukuyang MtprotoProxyTelegram, na maaari mong ibahagi sa sinuman.

Pag-deploy ng iyong MTProxy Telegram na may mga istatistika

Gayundin, sa pamamagitan ng bot na ito, maaari mong idagdag ang iyong channel sa pag-sponsor (ngunit hindi isang chat), kung saan ipapataw mo ang iyong mga pananaw sa mga user na nakakonekta sa iyong server, o hindi mo maaaring "spam" at hindi abalahin ang iyong mga potensyal na customer nang walang ipinapakita ang channel sa naka-pin na listahan ng messenger.

Ilan pang salita tungkol sa bot, kung saan maaari kang humiling ng mga istatistika, ngunit "isa ring donut". Tila, ang "mga istatistika" ay magagamit kapag mayroon kang "isang pulutong ng mga freeloader" sa likod mo Makhachkala.

Pagsubaybay

Ilang user ang maaari naming kumonekta sa aming server? At gayon pa man, sino / ano ang naroon? Ano? At ilan?

Tinitingnan namin kung ano ang naroroon ayon sa opisyal na dokumentasyon ... Oo, narito, gawin itong ganito:

$ curl http://localhost:2398/stats ΠΈΠ»ΠΈ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ $ docker exec mtproto-proxy curl http://localhost:2398/stats # ΠΈ Π½Π°ΠΌ Π²Ρ‹Π΄Π°Π΄ΡƒΡ‚ статистику прямо Π² CLI.

"Panatilihing mas malawak ang iyong bulsa" Ayon sa mga iminungkahing utos, palagi kaming makakatanggap ng katulad na error:

Β«curl: (7) Nabigong kumonekta sa localhost port 2398: Tinanggihan ang koneksyonΒ»

Ang aming proxy ay gagana. Ngunit! Bagel, hindi statistics ang nakukuha namin.

Maaari kang gumawa ng mga bagay para sa mga pulang mata: suriin

$ netstat -an | grep 2398 ΠΈ...

Sa una ay naisip ko na ito ay isa pang hamba sa likod ng mga developer ng Telegram (at iniisip ko pa rin ito), pagkatapos ay nakakita ako ng pansamantalang magandang solusyon: polish ang Docker Container gamit ang isang file.

Nang maglaon, nahagip ng mata ko ang isang info:

tungkol sa mga sayaw ng estado ng Roskomnadzor sa paligid ng "mga istatistika".

"Na-block namin ang ilan sa mga pampublikong proxy sa aming mga server gamit ang mga database ng proyekto ng firehol. Sinusubaybayan ng proyektong ito ang mga listahan na may mga pampublikong proxy at gumagawa ng mga database sa kanila.

Mula noong sandaling iyon (iyon ay, halos dalawang araw na), wala ni isang IP address ng aming Russian proxy ang na-block.

3. Sinasabi namin sa iyo kung paano gumawa ng isang proxy na halos hindi masusugatan sa Roskomnadzor at magbahagi ng script para sa pagharang sa mga pampublikong proxy.

- I-update ang MTProto proxy docker container (o daemon) sa pinakabagong bersyon: kinakalkula ng RKN ang mga lumang bersyon sa pamamagitan ng statistics port, na nakatali sa 0.0.0.0 at natatanging kinilala ang sarili nito para sa buong Internet. Mas mabuti pa, buksan ang mga kinakailangang port gamit ang mga iptable, at isara ang natitira (tandaan na sa kaso ng isang docker container, dapat mong gamitin ang FORWARD rule).

β€” Natutunan ng Roskomnadzor kung paano mag-dump ng trapiko matagal na ang nakalipas: nakakakita sila ng mga tawag sa loob ng HTTP at SOCKS5 proxy, at nakikita rin nila ang lumang bersyon ng MTProto proxy obfuscation.

Kapag na-access ng mga kliyente ng ilang provider na may ganitong mga dump na naka-install ang Telegram sa pamamagitan ng mga naturang proxy, nakikita ng RKN ang mga naturang kahilingan at agad na hinaharangan ang mga proxy na ito. Ang parehong napupunta para sa MTProto proxy na may lumang obfuscation.

Solusyon: ipamahagi lamang ang lihim na may dd sa simula sa mga kliyente na kumonekta sa proxy (hindi na kailangang tukuyin ang mga karagdagang titik na dd sa mga setting ng mtproto proxy mismo). Papaganahin nito ang isang bersyon ng obfuscation na hindi matukoy ng mga dumppile.

At walang HTTP o SOCKS5 proxy.

- Ang pagsasaayos, sa tulong kung saan ang bawat may-ari ng isang telegram proxy, na regular na pinagbawalan ng RKN, ay maaaring ganap (o halos ganap) na huminto sa pagharang (at sa parehong oras ay tiyakin na ang RKN ay nagsisinungaling).

Isang script na nagbabawal sa mga pampublikong proxy at isang maliit na manual para dito.

β†’ Pinagmulan

Ang aming proxy ay maka-Western, hindi ako nakatagpo ng anumang mga problema / blockage sa panahon ng tagsibol at malamig na mga araw ng tag-araw, hindi rin ito nakaakit ng isang malikhaing gawain, kaya hindi ako nawalan ng takbo at hindi nagdagdag ng dd* prefix sa ang susi.

Ang manual na "pagkuha ng mga istatistika/pagsubaybay" ayon sa mga opisyal na tagubilin ng MtprotoProxyTelegram ay hindi gumagana/luma na, kailangan mong ayusin ang docker na imahe.

Inaayos namin.

Ang lalagyan ay tumatakbo pa rin:

$ 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

Suriin natin ang mga istatistika:

$ curl http://localhost:2398/stats

curl: (7) Nabigong kumonekta sa 0.0.0.0 port 2398: Tinanggihan ang koneksyon
Hindi pa rin available ang mga istatistika.!..

Alamin ang ID ng docker container:

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba…" Humigit-kumulang isang oras ang nakalipas Tumaas Halos isang minuto 0.0.0.0:443->443/tcp mtproto-proxy2

Pumunta kami sa aming charter sa loob ng docker container:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

At sa pinakahuling linya ng script na "run.sh", idagdag ang nawawalang flag:

Β«--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 ugat $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD"

Magdagdag ng "--http-stats", isang bagay na tulad nito ay dapat gumana:

Β«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 (i-save/lumabas sa nano/lumabas sa lalagyan).

I-restart ang aming docker container:

$ docker restart mtproto-proxy2

Lahat, ngayon sa utos:

$ curl http://localhost:2398/stats #ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΌΠ½ΡƒΡŽ статистику

Pag-deploy ng iyong MTProxy Telegram na may mga istatistika
Maraming "basura" sa mga istatistika (1/3 nito ay nasa screen), lumikha ng isang alias:

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

Nakukuha namin kung para saan ang docker container ay pinakintab: ang bilang ng mga koneksyon at ang pagkarga:

$ telega

Pag-deploy ng iyong MTProxy Telegram na may mga istatistika
Ang lalagyan ng Docker ay tumatakbo, ang mga istatistika ay umiikot.

Ginastos ang mga mapagkukunan

Kasing astig mo si Stuart Redman, kahit mag-iwan ka ng marka sa panty mo. Ang isang tumatakbong imahe ng Docker ay nag-iiwan ng malaking bakas ng paa.

Walang saysay na ilarawan ang mga pakinabang at disadvantages ng mga imahe ng docker, ang isang docker container ay isang mini-virtual machine na kumukonsumo ng mas kaunting mga mapagkukunan kaysa sa isang "tunay" na virtual machine, tulad ng VirtualBox, ngunit ginagawa nito.

1) Inilunsad nang may o walang mga istatistika ng imahe ng docker, dalawang kliyente ang nagsasaya o sampu - ang mga mapagkukunan ay ginagamit ~ sa parehong paraan: 75% ng buong pagganap ng CPU t2.micro.

2) Tinitingnan namin ang pagsubaybay sa VPC server:

Pag-deploy ng iyong MTProxy Telegram na may mga istatistika

Mula sa graph ng paggamit ng mapagkukunan sa VPC, nakikita namin na ang docker container ay patuloy na kumukonsumo ng ~ 7,5% ng kabuuang max. Ang pagganap ng CPU at noong Mayo 28 ay pinahinto ko ng sinasadya/pansamantala (Tandaan - Ang OpenVPN at pptp ay tumatakbo din sa server).

Bakit 10% pare-pareho ang paggamit ng CPU ang limitasyon para sa server na ito?

Dahil may mga paghihigpit mula sa Amazon EC2 at kinakalkula ang mga ito sa mga kredito:

Pag-deploy ng iyong MTProxy Telegram na may mga istatistika

1 CPU credit = 1 CPU na gumagana sa 100% load sa loob ng isang minuto, at mayroon kaming 6 na credits (iyon ay, sa mga peak, 100% CPU utilization ay posible sa loob ng 6 na minuto, at pagkatapos ay ang CPU power ay bababa). Iba pang mga kumbinasyon: halimbawa, 1 CPU credit = 1 CPU na tumatakbo sa 50% na load sa loob ng dalawang minuto (ibig sabihin, magagamit natin ang CPU sa 50% na load sa loob ng 12 minuto), o, halimbawa, isang pare-parehong 10%- ika-CPU load habang sa buong panahon, atbp.

Natuklasan

  • Kami ay bahagi ng "Digital Resistance". Binigyan ang kanilang "mga ama at ina" ng isang maaasahang channel ng komunikasyon.
  • Kung mayroon kang MtprotoProxyTelegram at OpenVPN na na-deploy sa server, ngunit wala na, walang mga pagkaantala / ping / pagkabigo, ngunit kung patuloy kang nag-eeksperimento sa iyong t2 / micro, pagkatapos ay maghintay para sa mga preno ng komunikasyon.
  • Ang aking overseas ping ay ~100-250ms, walang mga pagkaantala sa voice communication.
  • Mga gastos sa pananalapi para sa lahat ng "ito" (kabilang ang mga mapagkukunan ng VPC) = 0β‚½.

Muling pag-print ng iyong artikulo.

UPD: Salamat sa ilang mga habrauser para sa mga kapaki-pakinabang na komento, sa katunayan, posible (suportado ba ang mga istatistika?), Mayroong mas mahusay na mga analogue ng opisyal na Mtproto proxy Telegram docker image.

Pinagmulan: www.habr.com

Magdagdag ng komento