Deplojante vian MTProxy Telegramon kun statistikoj

Deplojante vian MTProxy Telegramon kun statistikoj

"Mi heredis ĉi tiun malordon,
komencante per la senhonta Zello; LinkedIn
kaj finiĝante kun "ĉiu alia" sur la Telegram-platformo
en mia mondo.

Kaj poste singulto,
La oficisto aldonis haste kaj laŭte:
sed mi ordigos aferojn (ĉi tie en IT)"
(...).

Durov, prave kredas, ke estas aŭtoritataj ŝtatoj, kiuj devus timi lin, cypherpunk, kaj Roskomnadzor kaj oraj ŝildoj kun siaj DPI-filtriloj ne vere ĝenas lin.
(Politika tekniko)

Mia teknika politiko estas pli simpla, mi povas priskribi ĉi tie miajn pensojn pri senatenta blokado en Runet, sed mi kredas, ke la progresemaj civitanoj de la Modern Russian kaj Habr-uzantoj sentis la malprofesiecon de la nuna registaro en sia propra haŭto, do mi limigos min al ununura frazo: nia teknika politiko estas "Digital Resistance" . "provizi parencojn kaj amikojn per stabila komunika kanalo."

Deplojante MTProto-prokurilon Telegramon

  • La teknika nivelo de komplekseco estas "facila", se, ekzemple, vi sekvas ĉi tiun trompfolion.
  • La fidindnivelo estas "super mezumo": la docker-bildo funkcias stabile, ĝi ne bezonas esti rekomencita ĉiutage, kiel la programistoj skribis en sia oficiala Telegram-dokumentado, sed la ujo verŝajne enhavas iujn vundeblecojn.
  • La nivelo de rezisto/maltrankvilo - 10 ISIS-anoj teksas siajn konspirojn "uzas parencoj", la malpermeso ne venis de RKN eĉ unufoje la tutan tempon (ekde printempo).
  • La fidnivelo estas "publika beba malkonfido", problemo ĉe la klientflanko (kelkaj amikoj estas suspektema pri mia MtprotoProxy).
  • Testosterona niveloj - "ne pliiĝis."
  • Financaj kostoj - "0₽".
  • Financa rekompenco - "ne dependas de civitano Durov." Promocio - la kapablo trudi reklamadon.

Ni altigos nian TelegramProxy sur la "senpagaj / personaj" kapabloj de Amazon-ec2: t2.micro. mi uzis ĉi tio aŭto.

Bone, deplojis vian senpagan servilon, iru al la oficiala retejo dockerhub kaj elŝutu la docker-ujon.

Ne necesas serĉi iun bildon, dosieron aŭ magian butonon - "ili ne estas tie", la tuta magio estas farita en la CLI:

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

Sed antaŭ "tio", instalu docker por CLI:

sudo apt-get install docker.io docker

Plue, en la oficiala dokumentado de MtprotoProxyTelegram, ni proponas fari ion kiel la jenon, ni faras:

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

Post ĉi tiu komando, HEX-ĉeno aperos en la fina eligo, sed ni ne interesiĝas pri ĝi.

Ni skribas en CLI:

$ docker logs mtproto-proxy

Kaj ni ricevas la bezonatajn datumojn:

Deplojante vian MTProxy Telegramon kun statistikoj
En la eligo de ĉi tiu protokolo, ni estas montritaj (ŝmiris):

A) nia servilo ip (ekstera servilo ip);
B) kaj hazarda sekreto - hazarda ŝnuro en HEX.

Antaŭ ol registri nian Mtproxy, vi devas agordi la ĉefan fajroŝirmilon per iptables (ne gravas kiel vi alidirektas trafikon al ĉi tiu VPC, ĝi estos malbona, ĉar la ĉefa fajroŝirmilo en Amazon-EC2 situas en la retinterfaco kaj havas pli altan prioritaton super iptables).

Ni iru al "konzolo Amazon-EC2" en la Sekureca Grupo kaj malfermu envenantan havenon 443 (logika maskado trafiko unuafoje).

Deplojante vian MTProxy Telegramon kun statistikoj

Ni prenas niajn "ip kaj sekretajn" datumojn de la protokolo kaj iras al la Telegram-mesaĝo, trovas la oficialan MTProxy Admin Bot (@MTProxybot) kaj registras nian Mtproxy: rulu la komandon [/newproxy] kaj enigu [nian_ip:443], kaj tiam nia [sekreta /HEX].

Se vi fuŝas dum enigo de datumoj, la roboto koleros kaj sendos vin al...

Se vi plenigas du liniojn sen eraroj, vi ricevos aprobon kaj laboran ligon al via nuna MtprotoProxyTelegram, kiun vi povas dividi kun iu ajn.

Deplojante vian MTProxy Telegramon kun statistikoj

Ankaŭ, per ĉi tiu bot, vi povas aldoni vian sponsoran kanalon (sed ne babilejon), kie vi trudos viajn opiniojn al uzantoj, kiuj konektiĝis al via servilo, aŭ vi ne povas "spami" kaj ne ĝeni viajn esti-potencajn klientojn sen montrante la kanalon en la alpinglita mesaĝistolisto.

Kelkajn pliajn vortojn pri la bot, kie vi povas peti statistikojn, sed "ankaŭ bendon". Ŝajne, "statistiko" disponeblas kiam vi havas "amason da liberŝarĝantoj" malantaŭ vi Maĥaĉkala.

Monitorado

Kiom da uzantoj ni povas konekti al nia servilo? Kaj ĉiuokaze, kiu/kio estas tie? Kio? Kaj kiom?

Ni rigardas kio estas tie laŭ la oficiala dokumentaro ... Jes, ĉi tie, faru ĝin tiel:

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

"Konservu vian poŝon pli larĝa" Laŭ la proponitaj ordonoj, ni ĉiam ricevos similan eraron:

«buklo: (7) Malsukcesis konekti al lokahost-haveno 2398: Konekto rifuzita»

Nia prokurilo funkcios. Sed! Bagel, ne statistikojn ni ricevas.

Vi povas fari aferojn por la ruĝ-okulaj: kontrolu

$ netstat -an | grep 2398 и...

Komence mi pensis, ke tio estas alia jam malantaŭ la programistoj de Telegramo (kaj mi ankoraŭ pensas tiel), poste mi trovis provizoran bonan solvon: poluri la Docker-Ujon per dosiero.

Poste, infao kaptis mian atenton:

pri la ŝtataj dancoj de Roskomnadzor ĉirkaŭ "statistiko".

"Ni blokis kelkajn publikajn prokurojn sur niaj serviloj uzante la datumbazojn de la projekto Firehol. Ĉi tiu projekto kontrolas listojn kun publikaj prokuriloj kaj faras datumbazojn per ili.

Ekde tiu momento (tio estas, preskaŭ du tagojn), eĉ ne unu IP-adreso de nia rusa prokurilo estas blokita.

3. Ni diras al vi kiel fari prokurilon, kiu estas preskaŭ nevundebla al Roskomnadzor kaj kunhavigi skripton por bloki publikajn prokurojn.

- Ĝisdatigu la MTProto-prokuran docker-ujon (aŭ demonon) al la plej nova versio: RKN kalkulas malnovajn versiojn per la statistika haveno, kiu estis ligita al 0.0.0.0 kaj unike identigita sin por la tuta Interreto. Pli bone, malfermu la necesajn havenojn per iptables, kaj fermu la ceterajn (memoru, ke en la kazo de docker-ujo, vi devus uzi la regulon FORWARD).

— Roskomnadzor lernis kiel forĵeti trafikon antaŭ longe: ili vidas vokojn ene de HTTP kaj SOCKS5 prokuriloj, kaj ili ankaŭ vidas la malnovan version de MTProto-prokura malklarigado.

Kiam klientoj de iuj provizantoj, kiuj havas tiajn rubejojn instalitajn, aliras Telegramon per tiaj prokuriloj, la RKN vidas tiajn petojn kaj tuj blokas ĉi tiujn prokurojn. La sama validas por MTProto-prokurilo kun malnova malklarigado.

Solvo: distribuu sekreton nur per dd komence al klientoj, kiuj konektas al la prokurilo (ne necesas specifi pliajn literojn dd en la agordoj de la mtproto-prokurilo mem). Ĉi tio ebligos version de malklarigado, kiun dumpiloj ne povas detekti.

Kaj neniu HTTP aŭ SOCKS5 prokuriloj.

- Alĝustigo, per kiu ĉiu posedanto de telegrama prokurilo, kiu estas regule malpermesita de RKN, povas tute (aŭ preskaŭ tute) ĉesi blokadon (kaj samtempe certigi, ke RKN mensogas).

Skripto kiu malpermesas publikajn prokurojn kaj malgrandan manlibron por ĝi.

Fonto

Nia prokurilo estas por-okcidenta, mi ne renkontis problemojn / blokadon dum printempo kaj malvarmetaj someraj tagoj, ĝi ankaŭ ne altiris kreivan taskon, do mi ne perdis la ritmon kaj ne aldonis la dd*-prefikson al la ŝlosilon.

La manlibro "ricevi statistikojn/monitoradon" laŭ la oficialaj instrukcioj de MtprotoProxyTelegram ne funkcias/malmoderna, vi devos ripari la docker-bildon.

Ni riparas ĝin.

La ujo ankoraŭ funkcias:

$ 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

Ni kontrolu la statistikojn:

$ curl http://localhost:2398/stats

buklo: (7) Malsukcesis konekti al 0.0.0.0 haveno 2398: Konekto rifuzita
Statistikoj ankoraŭ ne disponeblas.!...

Eltrovu la ID de la docker-ujo:

$ docker ps

UZINO ID BILDO KREITA KREITA STATO PORTOJ NOMOJ
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba..." Antaŭ proksimume unu horo Supre Ĉirkaŭ minuto 0.0.0.0:443->443/tcp mtproto-proxy2

Ni iras kun nia ĉarto en la docker-ujo:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

Kaj en la plej lasta linio de la skripto "run.sh", aldonu la mankantan flagon:

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

Aldonu "--http-stats", io tia devus funkcii:

«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 (konservi/eliri nano/eliri ujon).

Rekomencu nian docker-ujon:

$ docker restart mtproto-proxy2

Ĉio, nun laŭ komando:

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

Deplojante vian MTProxy Telegramon kun statistikoj
Estas multe da "rubo" en la statistiko (1/3 el ĝi estas sur la ekrano), kreu kaŝnomon:

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

Ni ricevas, por kio la docker-ujo estis polurita: la nombro da konektoj kaj la ŝarĝo:

$ telega

Deplojante vian MTProxy Telegramon kun statistikoj
La Docker-ujo funkcias, la statistikoj turniĝas.

Rimedoj elspezitaj

Tiel mojosa kiel vi estas Stuart Redman, eĉ vi lasas markon sur viaj kalsonoj. Kuranta Docker-bildo lasas grandan spuron.

Ne havas sencon priskribi la avantaĝojn kaj malavantaĝojn de docker-bildoj, docker-ujo estas mini-virtuala maŝino, kiu konsumas malpli da rimedoj ol "reala" virtuala maŝino, kiel VirtualBox, sed jes.

1) Lanĉite kun aŭ sen docker-bildaj statistikoj, du klientoj petolas aŭ dek - rimedoj estas uzataj ~ same: 75% de la tuta CPU t2.micro-efikeco.

2) Ni rigardas la monitoradon de la VPC-servilo:

Deplojante vian MTProxy Telegramon kun statistikoj

De la grafiko pri uzado de rimedoj sur la VPC, ni vidas, ke la docker-ujo konstante konsumas ~ 7,5% de la totala maksimumo. CPU-efikeco kaj la 28-an de majo estis ĉesigita de mi intence/provizore (Noto - OpenVPN kaj pptp ankaŭ funkcias en la servilo).

Kial 10% konstanta uzado de CPU estas la limo por ĉi tiu servilo?

Ĉar ekzistas limigoj de Amazon EC2 kaj ili estas kalkulitaj en kreditoj:

Deplojante vian MTProxy Telegramon kun statistikoj

1 CPU-kredito = 1 CPU laboranta je 100% ŝarĝo dum unu minuto, kaj ni havas 6 kreditojn (tio estas, ĉe pintoj, 100% CPU-uzado eblas ene de 6 minutoj, kaj tiam la CPU-potenco malpliiĝos). Aliaj kombinaĵoj: ekzemple, 1 CPU-kredito = 1 CPU funkcianta je 50% ŝarĝo dum du minutoj (t.e. ni povas uzi la CPU je 50% ŝarĝo dum 12 minutoj), aŭ, ekzemple, konstanta 10%-a CPU-ŝarĝo dum la tutan tempon, ktp.

trovoj

  • Ni estas parto de la "Cifereca Rezisto". Provizis al iliaj "patroj kaj patrinoj" fidinda komunika kanalo.
  • Se vi havas MtprotoProxyTelegram kaj OpenVPN deplojitaj sur la servilo, sed ne pli, ne estos prokrastoj / pings / fiaskoj, sed se vi konstante eksperimentas kun via t2 / micro, tiam atendu komunikajn bremsojn.
  • Mia eksterlanda ping estas ~100-250ms, ne estas prokrastoj en voĉa komunikado.
  • Financaj kostoj por ĉio "ĉi tio" (inkluzive de VPC-resursoj) = 0₽.

Represo de via artikolo.

UPD: Dankon al kelkaj habrausers por utilaj komentoj, ja, ĝi eblas (ĉu la statistiko estas subtenata?), Estas pli bonaj analogoj de la oficiala Mtproto proxy Telegram-docker-bildo.

fonto: www.habr.com

Aldoni komenton