Implementarea MTProxy Telegram cu statistici

Implementarea MTProxy Telegram cu statistici

„Am moștenit această mizerie,
începând cu nerușinatul Zello; LinkedIn
și se termină cu „toate celelalte” pe platforma Telegram
in lumea mea.

Și apoi, sughițând,
oficialul a adăugat grăbit și tare:
dar voi pune lucrurile (aici în IT) în ordine”.
(...).

Durov crede pe bună dreptate că statele autoritare ar trebui să se teamă de el, cypherpunk, iar Roskomnadzor și scuturile de aur cu filtrele lor DPI nu-l deranjează cu adevărat.”
(tehnica politica)

Politica mea tehnică este mai simplă, pot descrie aici părerile mele despre blocarea neglijentă în RuNet, dar cred că cetățenii progresiști ​​ai Rusiei Moderne și utilizatorii Habr au simțit neprofesionalismul actualului guvern, așa că mă voi limita la un o singură frază: politica noastră tehnică este „Rezistență digitală”. „oferirea familiei și prietenilor cu un canal de comunicare stabil.”

Implementarea telegramei proxy MTProto

  • Nivelul tehnic de dificultate este „nu este dificil” dacă, de exemplu, urmați această fișă de cheat.
  • Nivelul de fiabilitate este „peste medie”: imaginea docker funcționează stabil, nu trebuie repornită în fiecare zi, așa cum au scris dezvoltatorii în documentația lor oficială Telegram, dar containerul conține probabil unele vulnerabilități.
  • Nivel de rezistență/anxietate - 10 membri ISIS își țes conspirațiile „rudele profită”, interdicția nu a venit de la RKN nici măcar o dată în tot acest timp (din primăvară).
  • Nivelul de încredere este „neîncrederea copilului public”, problema este de partea clientului (unii prieteni sunt suspicioși cu privire la MtprotoProxy-ul meu).
  • Nivelurile de testosteron „nu au crescut cu nimic”.
  • Costuri financiare - „0₽”.
  • Recompensa financiară „nu depinde de cetățeanul Durov”. Promovarea este capacitatea de a impune publicitate.

Vom construi TelegramProxy-ul nostru folosind capacitățile „gratuite/personale” ale Amazon-ec2: t2.micro. obisnuiam acest mașină.

Bine, am implementat serverul nostru gratuit, să mergem la site-ul oficial dockerhub și descărcați containerul docker.

Nu este nevoie să căutați vreo imagine, fișier sau buton magic - „nu există”, toată magia se face în CLI:

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

Dar înainte de „acesta”, instalați docker pentru CLI:

sudo apt-get install docker.io docker

În plus, în documentația oficială a MtprotoProxyTelegram ni se cere să facem aproximativ următoarele, facem:

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

După această comandă, va apărea un șir HEX în ieșirea terminalului, dar nu ne interesează.

Scriem în CLI:

$ docker logs mtproto-proxy

Și obținem datele necesare:

Implementarea MTProxy Telegram cu statistici
În rezultatul acestui jurnal suntem afișați (negriți):

A) IP-ul serverului nostru (IP server extern);
B) și un secret aleatoriu - un șir aleatoriu în HEX.

Înainte de a ne înregistra MtproProxy, trebuie să configurați firewall-ul principal prin iptables (indiferent cum redirecționați traficul pe acest VPC, acesta va fi indisciplinat, deoarece cel mai important firewall din Amazon-EC2 se află în interfața web și are o prioritate mai mare peste iptables).

Să mergem la "consolă Amazon-EC2" în grupul de securitate și deschideți portul de intrare 443 (mascare logică trafic pentru prima dată).

Implementarea MTProxy Telegram cu statistici

Luăm datele noastre „ip și secret” din jurnal și mergem la messengerul Telegram, găsim botul oficial MTProxy Admin (@MTProxybot) și înregistrăm MtproProxy-ul nostru: rulăm comanda [/newproxy] și introducem [our_ip:443] și apoi [secretul /HEX].

Dacă încurci când introduci date, botul se va enerva și te va trimite la...

Dacă completați două rânduri fără erori, veți primi aprobare și un link de lucru către MtprotoProxyTelegram actual, pe care îl puteți partaja oricui.

Implementarea MTProxy Telegram cu statistici

De asemenea, prin acest bot, poți adăuga canalul tău de sponsorizare (dar nu și un chat), unde îți vei impune opiniile utilizatorilor care s-au conectat la serverul tău și poți evita „spam-ul” și nu-ți deranja potențialii clienți nefiind afișat. canalul din lista de mesageri fixată.

Încă câteva cuvinte despre bot, puteți solicita statistici acolo, dar „este și o gogoașă”. Se pare că „statisticile” sunt disponibile atunci când există o „mulțime de paraziți” în spatele tău în Makhachkala.

monitorizarea

Câți utilizatori ne putem conecta la serverul nostru? Și oricum, cine/ce este acolo? Ce? Și câți?

Să vedem ce e acolo conform documentației oficiale... Da, hai să facem așa:

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

„Păstrați-vă buzunarul mai lat” Folosind comenzile sugerate, vom primi întotdeauna o eroare similară:

«curl: (7) Nu s-a putut conecta la portul localhost 2398: Conexiunea a fost refuzată»

Proxy-ul nostru va funcționa. Dar! Vom primi un covrigi, nu statistici.

Puteți face lucruri pentru oamenii cu ochii roșii: verificați

$ netstat -an | grep 2398 и...

La început am crezut că aceasta este o altă problemă cu dezvoltatorii Telegram (și încă mai cred), apoi am găsit o soluție temporară bună: lustruirea Containerului Docker cu un fișier.

Mai târziu, această informație mi-a atras atenția:

despre dansurile de stat din Roskomnadzor în jurul „statisticilor”.

„Am blocat niște proxy-uri publice pe serverele noastre folosind bazele de date ale proiectului Firehol. Acest proiect monitorizează liste cu proxy publici și creează baze de date cu acestea.

Din acel moment (adică timp de aproape două zile) nici o singură adresă IP a proxy-ului nostru rus nu a fost blocată.

3. Vă spunem cum să creați un proxy care este aproape invulnerabil pentru Roskomnadzor și să distribuiți un script pentru blocarea proxy-urilor publice.

— Actualizați proxy-ul MTProto container docker (sau demon) la cea mai recentă versiune: RKN calculează versiunile vechi utilizând portul de statistici, care era legat la 0.0.0.0 și s-a identificat în mod unic pentru întregul Internet. Mai bine, deschideți porturile necesare folosind iptables și închideți restul (rețineți că în cazul unui container docker, ar trebui să utilizați regula FORWARD).

— Roskomnadzor a învățat de mult să elimine traficul: ei văd solicitările în interiorul proxy-urilor HTTP și SOCKS5 și văd, de asemenea, versiunea veche a ofuscarii proxy MTProto.

Când clienții unor furnizori care au instalate astfel de depozite accesează Telegram prin astfel de proxy, RKN vede astfel de solicitări și blochează imediat acești proxy. Același lucru este valabil și pentru proxy MTProto cu ofuscare veche.

Soluție: oferiți clienților care se conectează la proxy un secret cu doar dd la început (nu este nevoie să specificați litere dd suplimentare în setările proxy-ului mtproto în sine). Acest lucru va permite o versiune de ofuscare pe care depozitele nu o pot detecta.

Și fără proxy HTTP sau SOCKS5.

— O modificare cu ajutorul căreia fiecare proprietar al unui proxy Telegram care este interzis în mod regulat de RKN poate opri complet (sau aproape complet) blocarea (și, în același timp, să se asigure că RKN minte).

Un script care interzice proxy-urile publice și un mic manual pentru acesta.”

Sursă

Proxy-ul nostru este pro-occidental, nu am întâmpinat probleme/blocări în zilele de primăvară și răcoroase de vară, nici nu se preta unei probleme de creație, așa că nu m-am confruntat cu pierderea tempo-ului și n-am" t adăugați prefixul dd* la cheie.

Manualul „obținere statistici/monitorizare” conform instrucțiunilor oficiale ale MtprotoProxyTelegram nu funcționează/învechit, va trebui să reparați imaginea docker.

O reparăm.

Încă mai avem containerul în funcțiune:

$ 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

Să verificăm statisticile:

$ curl http://localhost:2398/stats

curl: (7) Nu s-a putut conecta la portul 0.0.0.0 2398: Conexiune a fost refuzată
Statisticile sunt inca indisponibile!...

Aflați ID-ul containerului docker:

$ docker ps

CONTAINER ID IMAGINE COMANDA CREAȚĂ STAREA PORTURI NUMELE
f423c209cfdc telegrammessenger/proxy:latest „/bin/sh -c '/bin/ba...” Acum aproximativ o oră Sus Aproximativ un minut 0.0.0.0:443->443/tcp mtproto-proxy2

Să mergem cu charterul nostru în containerul docker:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

Și în ultima linie a scriptului „run.sh” adăugăm steag-ul lipsă:

«--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-d h --nat-info „$INTERNAL_IP:$IP” $SECRET_CMD $TAG_CMD”

Adăugați „—http-stats”, ceva de genul acesta ar trebui să arate așa:

«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 (salvare/ieșire din nano/ieșire din container).

Repornim containerul nostru docker:

$ docker restart mtproto-proxy2

Asta e, acum la comandă:

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

Implementarea MTProxy Telegram cu statistici
Există o mulțime de „gunoaie” în statistici (1/3 din aceasta este pe captură de ecran), creați un alias:

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

Obținem pentru ce am șlefuit containerul docker: numărul de conexiuni și încărcarea:

$ telega

Implementarea MTProxy Telegram cu statistici
Containerul Docker rulează, statisticile se rotesc.

Resurse cheltuite

Oricât de cool ești Stuart Redman, chiar și tu lași o urmă de go.na pe chiloți. O imagine Docker care rulează lasă o amprentă semnificativă.

Nu are sens să descriem avantajele și dezavantajele imaginilor docker, un container docker este o mini-mașină virtuală care consumă mai puține resurse decât o mașină virtuală „adevărată”, de exemplu VirtualBox, dar o face.

1) Imaginea docker este lansată cu sau fără statistici, doi clienți se zbârnesc sau zece - resursele sunt utilizate ~i egal: 75% din performanța totală a procesorului t2.micro.

2) Să ne uităm la monitorizarea serverului VPC:

Implementarea MTProxy Telegram cu statistici

Din graficul de utilizare a resurselor de pe VPC, vedem că containerul docker consumă în mod constant ~7,5% din totalul maxim. Performanța procesorului și a fost oprit de mine intenționat/temporar pe 28 mai (Notă - serverul rulează și OpenVPN și pptp).

De ce este limita de încărcare constantă a CPU de 10% pentru acest server?

Pentru că există restricții din partea Amazon EC2 și sunt calculate în credite:

Implementarea MTProxy Telegram cu statistici

1 credit CPU = 1 CPU care funcționează la încărcare de 100% timp de un minut și avem 6 credite (adică în vârfuri, utilizarea CPU 100% este posibilă în 6 minute, iar apoi puterea procesorului va scădea). Alte combinații: de exemplu, 1 credit CPU = 1 CPU care rulează la 50% încărcare timp de două minute (adică putem folosi CPU la 50% încărcare timp de 12 minute) sau, de exemplu, o încărcare constantă de 10% a CPU pe tot parcursul timpului etc.

Constatări

  • Facem parte din Rezistența Digitală. Le-am oferit „mamelor și taților” noștri un canal de comunicare de încredere.
  • Dacă aveți MtprotoProxyTelegram și OpenVPN implementate pe serverul dvs., dar nimic mai mult, nu vor exista întârzieri/ping-uri/eșecuri, dar dacă experimentați în mod constant cu t2/micro, atunci așteptați-vă la încetiniri ale comunicării.
  • Ping-ul meu de peste mări este de ~100-250 ms, nu există întârzieri în comunicarea vocală.
  • Costurile financiare pentru toate „aceasta” (inclusiv resursele VPC) = 0₽.

Retipărește articolul tău.

UPD: Mulțumim unor habrowers pentru comentarii utile, într-adevăr, este posibil (sunt statisticile acceptate?) să existe analogi mai buni cu imaginea oficială Mtproto proxy Telegram docker.

Sursa: www.habr.com

Adauga un comentariu