
Am moștenit această confuzie,
începând cu lipsiți de rușine Zello; LinkedIn
și terminând cu „toți ceilalți” pe platforma Telegram
în lumea mea.Apoi, după o răsuflare adâncă,
functionarul a adăugat în grabă și cu voce tare:
dar voi pune ordine (aici în IT)"
(…).
Durov consideră pe bună dreptate că aceste state autoritare ar trebui să-i fie frică de el, criptopunk-ul, iar Roskomnadzor și scuturile lor aurii cu filtrele DPI nu-l deranjează prea mult"
(Tehnica politică)
Politica mea tehnică este simplă; pot scrie aici gândurile mele despre blocările negligente din Runet, dar consider că cetățenii progresiști ai Rusiei Moderne și utilizatorii de pe Habr au simțit pe propria piele neprofesionalismul autorităților actuale, așa că mă voi limita la o singură frază: politica noastră tehnică este „Rezistența Digitală”. „asigurarea familiei și a apropiaților cu un canal de comunicare stabil”.
Dezvoltarea proxy-ului MTProto Telegram
- Nivelul de dificultate tehnică este „nu complicat”, dacă, de exemplu, urmezi această foaie de parcurs.
- 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 oficială a Telegram, dar cu siguranță containerul conține unele vulnerabilități.
- Nivelul de rezistență/îngrijorare este de 10, jihadiștii își plănuiesc conspirațiile „familia folosește”, nu am primit niciodată interdicții de la RKN (din primăvară).
- Nivelul de încredere este „distrust public baby”, problema este de partea clienților (unii prieteni se îndoiesc de MtprotoProxy-ul meu).
- Nivelul de testosteron este „nu a crescut”.
- Costuri financiare — „0₽”.
- Recompensa financiară — „nu depinde de cetățeanul Durov”. Răsplata este oportunitatea de a impune publicitate.
Vom lansa TelegramProxy-ul nostru pe puteri „gratuite/personalizate” oferite de Amazon-ec2: t2.micro. Am folosit această mașina.
Ok, am desfășurat propriul nostru gratuit serverul, mergem pe site-ul oficial dockerhub și descărcăm containerul docker.
Nu trebuie să căutați o imagine, un fișier sau un buton magic — „nu există”, toată magia se face în CLI:
$ docker pull telegrammessenger/proxy #imaginea a fost descărcată.Dar înainte de „asta” instalați docker pentru CLI:
sudo apt-get install docker.io dockerApoi, în documentația oficială a MtprotoProxyTelegram, ni se sugerează să facem aproximativ următoarele:
$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest #pornim containerul nostru „mtproto-proxy”.
După această comandă, pe ieșirea terminalului va apărea un șir HEX, dar nu ne interesează.
Scriem în CLI:
$ docker logs mtproto-proxyȘi obținem datele necesare:

În ieșirea acestui log ne arată (mascat):
A) ip-ul serverului nostru (ip-ul extern al serverului);
B) și secretul aleator — un șir aleatoriu în HEX.
Înainte de a înregistra MtproProxy-ul nostru, trebuie să configurăm firewall-ul principal deasupra iptables (indiferent cum redirecționați traficul în acest VPC, va fi neascultător, deoarece cel mai important firewall în Amazon-EC2 se află în interfața web și are o prioritate mai mare decât iptables).
Accesăm „consola Amazon-EC2” în Security Group și deschidem portul 443 pentru intrare (mascare logică a traficului pentru o perioadă).

Luăm din log datele noastre „ip și secret” și mergem către aplicația de mesagerie Telegram, găsim oficialul MTProxy Admin Bot (@MTProxybot) și înregistrăm MtproProxy-ul nostru: lansăm comanda [\/newproxy] și introducem [ip_nostru:443], iar apoi și [secretul\/HEX].
Dacă greșiți la introducerea datelor, botul se va enerva și vă va trimite pe...
Dacă completați cele două linii fără erori, veți primi aprobat și un link activ pentru MtprotoProxyTelegram-ul vostru, pe care îl puteți împărtăși cu oricine.

De asemenea, prin acest bot se poate adăuga canalul vostru de sponsorizare (dar nu chat-ul), unde veți impune utilizatorilor părerile voastre, cei care s-au conectat la server, dar puteți alege să nu „spam-uiți” și să nu deranjați potențialii clienți, neafișând canalul în lista fixată a aplicației de mesagerie.
Încă câteva cuvinte despre bot, acolo puteți solicita statistici, dar „tot un nimic”. Se pare că „statistica” este disponibilă atunci când grupul de la Makhachkala te urmărește.
Monitorizare
Câți utilizatori putem conecta la serverul nostru? Și, în general, cine/ce acolo? Ce? Și cât?
Vedem ce spune documentația oficială... Aha, deci, trebuie să facem așa:
$ curl http:\/\/localhost:2398\/stats sau așa $ docker exec mtproto-proxy curl http:\/\/localhost:2398\/stats # și ne va oferi statisticile direct în CLI.„Țineți cont!” Conform comenzilor propuse, vom primi întotdeauna o astfel de eroare:
«curl: (7) Conexiunea la portul localhost 2398 a fost refuzată»
Proxy-ul nostru va funcționa. Dar! O să primim un nimic, nu statistici.
Putem să ne ocupăm de afaceri pentru cei cu ochi roșii: verificați
$ netstat -an | grep 2398 și...La început am crezut că este o nouă greșeală a dezvoltatorilor Telegram (și încă mai cred asta), apoi am găsit o soluție temporară decentă: să polish Docker-Container-ul cu un șmirghel.
Mai târziu, mi-a căzut în ochi informația:
despre dansurile guvernamentale ale Roskomnadzor în jurul „statisticilor”.
„Am blocat pe serverele noastre o parte dintre proxy-urile publice, folosind bazele de date ale proiectului firehol. Acest proiect monitorizează listele de proxy-uri publice și le face baze de date.
De atunci (adică de aproape două zile) nu a fost blocat niciun IP al proxy-ului nostru rusesc.
3. Vă arătăm cum să creați un proxy aproape imun la Roskomnadzor și împărtășim un script pentru blocarea proxy-urilor publice.
— Actualizați containerul Docker (sau demonul) MTProto proxy la cea mai recentă versiune: RKN calculează versiunile vechi după portul statistic, care era legat pe 0.0.0.0 și se identifica clar pentru întreaga internet. Mai bine — deschideți porturile necesare cu ajutorul iptables, iar pe celelalte închideți-le (amintiți-vă că în cazul containerului Docker ar trebui să folosiți regula FORWARD).
— Roskomnadzor a învățat demult să analizeze traficul: ei văd apelurile din interiorul proxy-urilor HTTP și SOCKS5, precum și versiunile vechi ale obfuscației MTProto proxy.
Când clienții unor furnizori, la care sunt instalate astfel de analizoare, se conectează la Telegram prin aceste proxy-uri, RKN vede astfel de apeluri și blochează imediat aceste proxy-uri. Aceleași lucruri se aplică și pentru MTProto proxy cu obfuscație veche.
Soluția: distribuiți clienților care se conectează la proxy secretul doar cu dd la început (nu este nevoie să indicați literele suplimentare dd în setările proxy-ului mtproto). Acest lucru va activa versiunea de obfuscație pe care analizoarele nu o pot identifica.
Și niciun HTTP- și SOCKS5-proxy.
— Un instrument prin care fiecare proprietar de proxy Telegram, care este blocat frecvent de RKN, poate completa (sau aproape completa) blocările (iar pe deasupra să se convingă că RKN minte).
Scriptul care blochează proxy-urile publice și un mic manual pentru acesta.
→ Sursa
Proxy-ul nostru este pro-occidental, nu am întâmpinat probleme/blocări în zilele de primăvară și vara răcoroasă, nu a fost nevoie de o sarcină creativă, astfel încât nu m-am ocupat cu pierderea ritmului și nu am adăugat prefixul dd* la cheie.
Manualul „obținerea statisticilor/monitorizare” conform instrucțiunilor oficiale MtprotoProxyTelegram este inutilizabil/îmbătrânit, va trebui să reparăm imaginea docker.
Reparăm.
Containerul nostru este încă activ:
$ docker stop mtproto-proxy #oprim containerul docker activ și lansăm o nouă imagine cu steagul statisticelor omis
$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config:/data -e SECRET=secretul_tău_precedent_hex telegrammessenger/proxy:latest
Să verificăm statisticile:
$ curl http://localhost:2398/statscurl: (7) Eșec conectare la 0.0.0.0 port 2398: Conexiunea a fost refuzată
Statisticile sunt încă indisponibile .!..
Să aflăm identificatorul containerului docker:
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest "'/bin/sh -c '/bin/ba..." Acum o oră Activ Aproape un minut 0.0.0.0:443->443/tcp mtproto-proxy2
Intrăm cu regulile noastre î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 steagul omis:
«—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 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-proxy2Totul, acum pe comanda:
$ curl http://localhost:2398/stats #obținem statistici detaliate
Statistica conține multe „deșeuri” (în captura de ecran 1/3 din parte), creăm un alias:
$ echo "alias telega='curl localhost:2398/stats | grep -e total_special -e load_average_total'" >> .bashrc && bashObținem ceea ce am lustruit containerul docker: numărul de conexiuni și sarcina:
$ telega
Containerul Docker funcționează, statisticile sunt active.
Resurse consumate
Oricât de grozav ai fi, Stuart Redman, chiar și tu lași o urmă de murdărie pe chiloții tăi. O imagine Docker în funcțiune lasă o amprentă considerabilă.
Nu are sens să enumerăm avantajele și dezavantajele imaginilor docker, containerul docker este o mini-mașină virtuală, consumând resurse mai puțin decât o „mașină virtuală” reală, de exemplu VirtualBox, dar care consumă.
1) Fie că imaginea docker este activată cu statistici sau nu, doi clienți se delectează sau zece — resursele sunt utilizate aproximativ la fel: 75% din întreaga performanță CPU t2.micro.
2) Să verificăm monitorizarea serverului VPC:

Din graficul de utilizare a resurselor pe VPC vedem că containerul Docker consumă constant ~7,5% din performanța maximă totală a CPU-ului și pe 28 mai a fost oprit de mine intenționat/temporar. (Notă — pe server rulează de asemenea OpenVPN & pptp).
De ce 10% din utilizarea constantă a CPU-ului este limita pentru acest server?
Pentru că există restricții impuse de Amazon EC2 și acestea se calculează în credite:

1 credit CPU = 1 CPU, funcționând la 100% utilizare timp de un minut, iar noi avem 6 credite (adică în vârf, utilizarea de 100% a CPU-ului este posibilă timp de 6 minute, după care puterea CPU-ului va scădea). Alte combinații: de exemplu, 1 credit CPU = 1 CPU, funcționând cu o sarcină de 50% timp de două minute (adică putem utiliza CPU-ul cu o sarcină de 50% timp de 12 minute), sau, de exemplu, o sarcină constantă de 10% a CPU-ului pe toată durata.
Conclusions
- Noi suntem o parte a „Rezistenței Digitale”. Am oferit părinților noștri un canal de comunicație de încredere.
- Dacă pe server aveți instalat MtprotoProxyTelegram și OpenVPN, dar nu mai mult, nu vor fi întârzieri/pinguri/cade, dar dacă experimentați constant cu t2/micro, așteptați-vă la întârzieri în comunicație.
- Pingul meu transatlantic este ~100-250ms, întârzierile în comunicația vocală nu se resimt.
- Costurile financiare pentru toate „acestea” (inclusiv resursele VPC) = 0₽.
Reproducerea propriului articol.
UPD: Mulțumesc unor utilizatori de pe Habr pentru comentariile utile, într-adevăr, este posibil (se menține statistica?), există alternative mai bune la imaginea oficială Docker a Mtproto proxy Telegram.
Sursa: habr.com
