Implementering af dit MTProxy-telegram med statistik

Implementering af dit MTProxy-telegram med statistik

"Jeg har arvet dette rod,
begyndende med den skamløse Zello; LinkedIn
og slutter med "alle andre" på Telegram-platformen
i min verden.

Og så hikke,
Embedsmanden tilføjede hastigt og højlydt:
men jeg vil bringe tingene i orden (her i IT)"
(...).

Durov, mener med rette, at det er autoritære stater, der burde være bange for ham, en cypherpunk, og Roskomnadzor og gyldne skjolde med deres DPI-filtre generer ham ikke rigtig.
(Politisk teknik)

Min tekniske politik er enklere, jeg kan her beskrive mine tanker om skødesløs blokering i Runet, men jeg tror, ​​at de progressive borgere af moderne russiske og Habr-brugere har følt den nuværende regerings uprofessionalitet i deres egen hud, så jeg vil begrænse mig til en enkelt sætning: vores tekniske politik er "Digital modstand" . "at give slægtninge og venner en stabil kommunikationskanal."

Implementering af MTProto proxy Telegram

  • Det tekniske kompleksitetsniveau er "let", hvis du for eksempel følger dette snydeark.
  • Pålidelighedsniveauet er "over gennemsnittet": Docker-billedet fungerer stabilt, det skal ikke genstartes hver dag, som udviklerne skrev i deres officielle Telegram-dokumentation, men containeren indeholder sandsynligvis nogle sårbarheder.
  • Niveauet af modstand/angst - 10 ISIS-medlemmer væver deres konspirationer "pårørende bruger", forbuddet er ikke kommet fra RKN engang en gang hele tiden (siden foråret).
  • Tillidsniveauet er "offentlig babymistillid", et problem på klientsiden (nogle venner er mistænksomme over for min MtprotoProxy).
  • Testosteronniveauet - "blev ikke højere."
  • Finansielle omkostninger - "0₽".
  • Økonomisk belønning - "afhænger ikke af borger Durov." Promotion - evnen til at påtvinge reklamer.

Vi vil hæve vores TelegramProxy på de "gratis / personlige" kapaciteter i Amazon-ec2: t2.micro. jeg brugte dette bil.

Okay, implementeret din gratis server, gå til den officielle hjemmeside dockerhub og download docker-containeren.

Ingen grund til at lede efter et billede, en fil eller en magisk knap - "de er der ikke", al magien udføres i CLI:

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

Men før "det", installer docker til CLI:

sudo apt-get install docker.io docker

Yderligere, i den officielle dokumentation af MtprotoProxyTelegram, bliver vi tilbudt at gøre noget som følgende, vi gør:

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

Efter denne kommando vises en HEX-streng i terminaludgangen, men vi er ikke interesserede i den.

Vi skriver i CLI:

$ docker logs mtproto-proxy

Og vi får de nødvendige data:

Implementering af dit MTProxy-telegram med statistik
I outputtet af denne log vises (udtværet):

A) vores server ip (ekstern server ip);
B) og en tilfældig hemmelighed - en tilfældig streng i HEX.

Før du registrerer vores MtproProxy, skal du konfigurere hovedfirewallen over iptables (uanset hvordan du omdirigerer trafik til denne VPC, vil det være frækt, da hovedfirewallen i Amazon-EC2 er placeret i webgrænsefladen og har en højere prioritet over iptables).

Lad os gå til "konsol Amazon-EC2" i sikkerhedsgruppen og åben indgående port 443 (logisk maskering Trafik for første gang).

Implementering af dit MTProxy-telegram med statistik

Vi tager vores "ip og hemmelige" data fra loggen og går til Telegram messenger, finder den officielle MTProxy Admin Bot (@MTProxybot) og registrerer vores Mtproxy: kør kommandoen [/newproxy] og indtast [our_ip:443], og derefter vores [hemmelige /HEX].

Hvis du roder, når du indtaster data, vil botten blive vred og sende dig til ...

Hvis du udfylder to linjer uden fejl, vil du modtage godkendelse og et fungerende link til dit nuværende MtprotoProxyTelegram, som du kan dele med enhver.

Implementering af dit MTProxy-telegram med statistik

Gennem denne bot kan du også tilføje din sponsorkanal (men ikke en chat), hvor du vil påtvinge brugere, der har oprettet forbindelse til din server, dine synspunkter, eller du kan ikke "spamme" og ikke genere dine potentielle kunder uden viser kanalen i den fastgjorte messenger-liste.

Et par flere ord om botten, hvor du kan anmode om statistik, men "også en doughnut". Tilsyneladende er "statistik" tilgængelig, når du har "en skare af freeloadere" bag dig Makhachkala.

overvågning

Hvor mange brugere kan vi forbinde til vores server? Og alligevel, hvem/hvad er der? Hvad? Og hvor mange?

Vi ser på, hvad der er der ifølge den officielle dokumentation ... Ja, her, gør det sådan her:

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

"Hold din lomme bredere" Ifølge de foreslåede kommandoer vil vi altid modtage en lignende fejl:

«curl: (7) Kunne ikke oprette forbindelse til localhost-port 2398: Forbindelse afvist»

Vores proxy vil virke. Men! Bagel, ikke statistik vi får.

Du kan gøre ting for de røde øjne: tjek

$ netstat -an | grep 2398 и...

Først troede jeg, at dette var endnu en kage bag Telegram-udviklerne (og det tror jeg stadig), så fandt jeg en midlertidig god løsning: poler Docker Containeren med en fil.

Senere fangede en infa mit øje:

om statsdansene i Roskomnadzor omkring "statistik".

"Vi har blokeret nogle af de offentlige fuldmagter på vores servere ved at bruge databaserne i firehol-projektet. Dette projekt overvåger lister med offentlige fuldmagter og laver databaser med dem.

Siden det øjeblik (det vil sige næsten to dage allerede), er ikke en eneste IP-adresse på vores russiske proxy blevet blokeret.

3. Vi fortæller dig, hvordan du laver en proxy, der er næsten usårbar for Roskomnadzor, og deler et script til at blokere offentlige fuldmagter.

- Opdater MTProto proxy docker-containeren (eller dæmonen) til den nyeste version: RKN beregner gamle versioner af statistikporten, som var bundet til 0.0.0.0 og entydigt identificeret sig selv for hele internettet. Endnu bedre, åbn de nødvendige porte ved hjælp af iptables, og luk resten (husk, at i tilfælde af en docker-container, skal du bruge FORWARD-reglen).

— Roskomnadzor har lært at dumpe trafik for længe siden: de ser anmodninger inde i HTTP- og SOCKS5-proxyer, og de ser også den gamle version af MTProto-proxy-obfuscation.

Når klienter hos nogle udbydere, der har sådanne dumps installeret, får adgang til Telegram gennem sådanne proxyer, ser RKN sådanne anmodninger og blokerer straks disse proxyer. Det samme gælder for MTProto proxy med gammel sløring.

Løsning: distribuer kun hemmelighed med dd i begyndelsen til klienter, der forbinder til proxyen (ingen grund til at angive yderligere bogstaver dd i indstillingerne for selve mtproto-proxyen). Dette vil aktivere en version af sløring, som dumppile ikke kan registrere.

Og ingen HTTP eller SOCKS5 proxyer.

- Justering, ved hjælp af hvilken hver ejer af en telegram proxy, som regelmæssigt er forbudt af RKN, helt (eller næsten helt) kan stoppe med at blokere (og samtidig sikre sig, at RKN lyver).

Et script der forbyder offentlige fuldmagter og en lille manual til det.

Kilde

Vores proxy er pro-vestlig, jeg stødte ikke på problemer/blokeringer i løbet af foråret og kølige sommerdage, det tiltrak heller ikke en kreativ opgave, så jeg tabte ikke tempoet og tilføjede ikke dd*-præfikset til nøglen.

Manualen "få statistik/overvågning" i henhold til de officielle instruktioner fra MtprotoProxyTelegram fungerer ikke/forældet, du bliver nødt til at reparere docker-billedet.

Vi fikser det.

Containeren kører stadig:

$ 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

Lad os tjekke statistikken:

$ curl http://localhost:2398/stats

krølle: (7) Kunne ikke oprette forbindelse til 0.0.0.0-port 2398: Forbindelse afvist
Statistik er stadig utilgængelig.!...

Find ud af id'et for docker-containeren:

$ docker ps

KONTAINER-ID BILLEDEKOMMANDO OPRETTET STATUSPORTNAVNE
f423c209cfdc telegrammessenger/proxy:nyeste "/bin/sh -c '/bin/ba…" For ca. en time siden Op Ca. et minut 0.0.0.0:443->443/tcp mtproto-proxy2

Vi går med vores charter inde i docker-containeren:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

Og i den allersidste linje i "run.sh"-scriptet, tilføjer du det manglende flag:

«--http-statistik»
"exec /usr/local/bin/mtproto-proxy -p 2398 -H 443 -M "$WORKERS" -C 60000 --aes-pwd /etc/telegram/hello-explorer-hvordan-går-du-u root $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD"

Tilføj "--http-stats", noget som dette burde virke:

«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 (gem/afslut nano/afslut container).

Genstart vores docker-container:

$ docker restart mtproto-proxy2

Alt, nu på kommando:

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

Implementering af dit MTProxy-telegram med statistik
Der er meget "skrald" i statistikken (1/3 af det er på skærmen), opret et alias:

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

Vi får, hvad docker-containeren blev poleret til: antallet af forbindelser og belastningen:

$ telega

Implementering af dit MTProxy-telegram med statistik
Docker-containeren kører, statistikkerne kører rundt.

Ressourcer brugt

Så sej som du er Stuart Redman, selv du efterlader et mærke på dine trusser. Et kørende Docker-billede efterlader et stort fodaftryk.

Det giver ingen mening at beskrive fordele og ulemper ved docker-billeder, en docker-container er en mini-virtuel maskine, der bruger færre ressourcer end en "rigtig" virtuel maskine, såsom VirtualBox, men det gør den.

1) Lanceret med eller uden docker-image-statistik, to klienter boltrer sig eller ti - ressourcer udnyttes ~ på samme måde: 75% af hele CPU t2.micro ydeevne.

2) Vi ser på overvågningen af ​​VPC-serveren:

Implementering af dit MTProxy-telegram med statistik

Fra ressourceudnyttelsesgrafen på VPC'en ser vi, at docker-containeren konstant forbruger ~7,5% af det samlede max. CPU-ydelse og den 28. maj blev stoppet af mig bevidst/midlertidigt (Bemærk - OpenVPN & pptp kører også på serveren).

Hvorfor er 10 % konstant CPU-brug grænsen for denne server?

Fordi der er begrænsninger fra Amazon EC2, og de er beregnet i kreditter:

Implementering af dit MTProxy-telegram med statistik

1 CPU-kredit = 1 CPU, der arbejder med 100 % belastning i et minut, og vi har 6 kreditter (det vil sige, ved spidsbelastninger er 100 % CPU-udnyttelse mulig inden for 6 minutter, og så vil CPU-kraften falde). Andre kombinationer: f.eks. 1 CPU-kredit = 1 CPU, der kører med 50 % belastning i to minutter (dvs. vi kan bruge CPU'en ved 50 % belastning i 12 minutter), eller f.eks. en konstant 10 %-te CPU-belastning under hele tiden osv.

Fund

  • Vi er en del af "Den Digitale Modstand". Forsynet deres "fædre og mødre" med en pålidelig kommunikationskanal.
  • Hvis du har MtprotoProxyTelegram og OpenVPN installeret på serveren, men ikke mere, vil der ikke være nogen forsinkelser / pings / fejl, men hvis du konstant eksperimenterer med din t2 / micro, så vent på kommunikationsbremser.
  • Mit oversøiske ping er ~100-250ms, der er ingen forsinkelser i stemmekommunikation.
  • Finansielle omkostninger for alt "dette" (inklusive VPC-ressourcer) = 0₽.

Genoptryk af din artikel.

UPD: Tak til nogle habrausere for nyttige kommentarer, det er faktisk muligt (understøttes statistikken?), Der er bedre analoger af det officielle Mtproto proxy Telegram docker billede.

Kilde: www.habr.com

Tilføj en kommentar