Udrulering af din egen MTProxy Telegram med statistik

Udrulering af din egen MTProxy Telegram med statistik

„Jeg har arvet denne forvirring,
startende med de skamløse Zello; LinkedIn
og sluttende med „alle de andre“ på Telegram-platformen
i min verden.

Og så, efter en hosten,
tilføjede embedsmanden hastigt og højt:
men jeg vil etablere orden (her i IT)“
(…).

Pavel Durov mener med rette, at det er autoritære stater, der skal frygte ham, cyberpunkeren, mens Rosskomnadzor og de gyldne skjold med deres DPI-filtre ikke bekymrer ham meget"
(Politisk teknologi)

Min tekniske politik er enklere, jeg kan her skrive mine overvejelser omkring tåbelige blokeringer i runet, men jeg mener, at progressive borgere i det moderne Rusland og brugere af Habr har følt den nuværende myndigheds uprofessionalisme på egen krop, derfor vil jeg nøjes med én sætning: vores tekniske politik er „Digital Modstand“. „at sikre kære og nærmeste en stabil kommunikationskanal“.

Udrulering af MTProto proxy Telegram

  • Niveauet af teknisk kompleksitet er „ikke svært“, hvis man for eksempel følger denne huskeseddel.
  • Pålidelighedsniveauet er „over gennemsnittet“: docker-billedet fungerer stabilt, det kræves ikke at genstarte det hver dag, som udviklerne skriver i deres officielle Telegram-dokumentation, men der er helt sikkert nogle sårbarheder i containeren.
  • Modstands-/angstniveauet er 10 igil-folk, der væver deres intriger „familien bruger“, der har ikke været nogen blokering fra RKN indtil nu (siden foråret).
  • Tillidsniveauet er „offentlig baby mistillid“, problemet ligger hos kunderne (nogle venner er mistroiske over for min MtprotoProxy).
  • Testosteronniveauet er „bliver ikke højere“.
  • Finansielle omkostninger er „0₽“.
  • Finansiel belønning er „ikke afhængig af borger Durov“. Belønning — muligheden for at pådrage sig reklame.

Vi vil drifte vores TelegramProxy på „gratis/personlige“ ressourcer fra Amazon-ec2: t2.micro. Jeg har brugt denne maskine.

Okay, vi har udrullet vores gratis server, vi går til den officielle hjemmeside dockerhub og downloader docker-containeren.

Du behøver ikke at lede efter et eller andet billede, fil eller magisk knap — „de eksisterer ikke“, al magien udføres i CLI:

$ docker pull telegrammessenger/proxy #billedet er hentet.

Men før „dette“ skal du installere docker til CLI:

sudo apt-get install docker.io docker

Dernæst foreslår den officielle dokumentation for MtprotoProxyTelegram, at vi gør omtrent følgende:

$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest #starter vores container «mtproto-proxy».

Efter denne kommando vil en HEX-streng dukke op i terminaludgangen, men den er ikke interessant for os.

Vi skriver i CLI:

$ docker logs mtproto-proxy

Og får de nødvendige data:

Udrulering af din egen MTProxy Telegram med statistik
I udskriften af denne log vises (skjult):

A) vores server IP (ekstern server IP);
B) og den tilfældige hemmelighed — en tilfældig streng i HEX.

Før vi registrerer vores MtproProxy, skal vi konfigurere hovedfirewallen over iptables (uanset hvordan du omdirigerer trafik på denne VPC, vil den være upraktisk, da den vigtigste firewall i Amazon-EC2 findes i webgrænsefladen og har en højere prioritet end iptables).

Vi går ind i «konsol Amazon-EC2» under Security Group og åbner indgående port 443 (logisk maskering af trafik for nu).

Udrulering af din egen MTProxy Telegram med statistik

Vi tager vores data fra loggen “ip og hemmelighed” og går ind i beskedappen Telegram, finder den officielle MTProxy Admin Bot (@MTProxybot) og registrerer vores MtproProxy: starter kommandoen [\/newproxy] og indtaster [vores_ip:443], og derefter vores [hemmelighed\/HEX].

Hvis du laver en fejl ved indtastningen, vil botten blive irritabel og sende dig hen til…

Hvis du udfylder to linjer uden fejl, får du godkendelse og et fungerende link til din aktive MtprotoProxyTelegram, som du kan dele med hvem som helst.

Udrulering af din egen MTProxy Telegram med statistik

Gennem denne bot kan du også tilføje din sponsor kanal (men ikke chatten), hvor du vil påtvinge dine synspunkter til brugere, der tilslutter sig din server, eller du kan vælge ikke at «spam», og ikke generer dine potentielle kunder ved ikke at vise kanalen i den fastgjorte liste i beskedappen.

Et par ord mere om botten, der kan anmode om statistik, men «også en bagatel». Det ser ud til, at «statistik» er tilgængelig, når en “flok parasitter” følger dig.

Overvågning

Og hvor mange brugere kan vi tilslutte til vores server? Og i det hele taget, hvem/hvad er der? Hvad? Og hvor mange?

Lad os se, hvad der står i den officielle dokumentation… Aha, sådan gør vi:

$ curl http://localhost:2398/stats eller sådan her $ docker exec mtproto-proxy curl http://localhost:2398/stats # og vi får statistikken direkte i CLI.

«Hold i lommen bredere» Ved de foreslåede kommandoer vil vi altid få en lignende fejl:

«curl: (7) Failed to connect to localhost port 2398: Forbindelsen er nægtet»

Vores proxy vil fungere. Men! Vi får en bagatel, ikke statistikken.

Man kan tage sig af tingene for de rødøjede: tjekke

$ netstat -an | grep 2398 og...

Først troede jeg, at det bare var endnu et fejltrin fra Telegram-udviklerne (og jeg mener stadig det), men jeg fandt en midlertidig og ret god løsning: at slibe Docker-containeren med en fil.

Senere stødte jeg på oplysninger:

om de statslige danse fra Roskomnadzor omkring "statistikken".

"Vi har blokeret en del offentlige proxyer på vores servere ved at bruge databaser fra firehol-projektet. Dette projekt overvåger lister over offentlige proxyer og laver databaser med dem.

Fra dette øjeblik (dvs. i næsten to døgn) er der ikke blevet blokeret nogen IP-adresse for vores russiske proxy.

3. Vi fortæller, hvordan man laver en næsten uovervindelig proxy for Roskomnadzor og deler scriptet til at blokere offentlige proxyer.

— Opdater docker-containeren (eller demon) til den seneste version af MTProto-proxyen: RKN kan identificere gamle versioner via statistikporten, som blev bundet til 0.0.0.0 og entydigt identificerede sig for hele internettet. Endnu bedre — åbn de nødvendige porte med iptables, og luk de andre (husk, at du i tilfældet med docker-containeren skal bruge FORWARD-reglen).

— Roskomnadzor har længe lært at dumpere trafik: de kan se henvendelser inden for HTTP- og SOCKS5-proxyer, samt de kan se gamle versioner af obfuscation af MTProto-proxyen.

Når kunder fra nogle udbydere, der har sådanne dumpere, henvender sig til Telegram gennem sådanne proxyer, ser RKN de henvendelser og blokerer straks disse proxyer. Det samme gælder MTProto-proxyer med gammel obfuscation.

Løsning: giv de kunder, der opretter forbindelse til proxyen, et secret, der kun begynder med dd (der er ikke behov for at angive yderligere bogstaver dd i indstillingerne for MTProto-proxyen). Dette vil aktivere den obfuscation-version, som dumpere ikke kan bestemme.

Og ingen HTTP- og SOCKS5-proxyer.

— Et trick, som enhver ejer af telegram-proxy, der regelmæssigt bliver blokeret af RKN, kan bruge til helt (eller næsten helt) at stoppe blokeringerne (og samtidig sikre sig, at RKN lyver).

Et script, der blokerer offentlige proxyer og en lille manual til det."

→ Kilde

Vores proxy er pro-vestlig, jeg har ikke mødt nogen problemer/blockeringer i de milde forårs- og kølige sommerdage, så det var ikke et kreativt problem og jeg eksperimenterede ikke med tab af tempo og tilføjede ikke dd*-præfikset til nøgle.

Manualen "modtagelse af statistik / overvågning" efter den officielle vejledning fra MtprotoProxyTelegram er ikke fungerende / forældet, vi bliver nødt til at reparere docker-billedet.

Vi reparerer.

Containeren kører stadig:

$ docker stop mtproto-proxy # stopper vores kørende docker-container og starter et nyt billede med den manglende statistikflag
$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config:/data -e SECRET=dit_tidligere_secret_hex telegrammessenger/proxy:latest

Lad os tjekke statistikken:

$ curl http://localhost:2398/stats

curl: (7) Fejl ved forbindelse til 0.0.0.0 port 2398: Forbindelsen blev nægtet
Statistikken er stadig utilgængelig .!..

Lad os finde docker-containerens id:

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c ‘/bin/ba…" For omkring en time siden Oppe For omkring et minut 0.0.0.0:443->443/tcp mtproto-proxy2

Vi går ind i docker-containeren med vores regler:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

Og i den aller sidste linje af scriptet "run.sh" tilføjer vi den manglende 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 root $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD"

Du tilføjer "--http-stats", dette skal se sådan ud:

"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 (gemme / afslutte nano / afslutte containeren).

Vi genstarter vores docker-container:

$ docker restart mtproto-proxy2

Det er det, nu ved kommandoen:

$ curl http://localhost:2398/stats # får den omfattende statistik

Udrulering af din egen MTProxy Telegram med statistik
I statistikken er der meget "skrald" (på skærmen 1/3 af det), vi opretter et alias:

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

Vi får det, som vi polerede docker-containeren for: antallet af forbindelser og belastning:

$ telega

Udrulering af din egen MTProxy Telegram med statistik
Docker-containeren kører, statistikken kører.

Forbrugte ressourcer

Uanset hvor cool du er, Stuart Redman, efterlader du stadig et spor af lort på dine underbukser. Et fungerende Docker-billede efterlader ikke lidt spor.

At beskrive fordele og ulemper ved docker-billeder giver ingen mening, en docker-container er en mini-virtuel maskine, der bruger færre ressourcer end en "ægte" virtuel maskine, som for eksempel VirtualBox, men som stadig bruger.

1) Kører med statistik fra docker-billedet eller uden, to klienter er aktive eller ti - ressourcerne udnyttes cirka ens: 75% af den samlede CPU-ydeevne på t2.micro.

2) Tjekker VPC-serverens overvågning:

Udrulering af din egen MTProxy Telegram med statistik

Fra ressourceudnyttelsesdiagrammet på VPC kan vi se, at docker-containeren konstant forbruger ~7,5% af den samlede maksimale CPU-ydeevne, og den blev bevidst/midlertidigt stoppet af mig den 28. maj. (Bemærk — OpenVPN & pptp kører også på serveren).

Hvorfor er 10% konstant CPU-belastning en grænse for denne server?

Fordi der er begrænsninger fra Amazon EC2, som beregnes i kreditter:

Udrulering af din egen MTProxy Telegram med statistik

1 CPU-kredit = 1 CPU, der kører med 100% belastning i et minut, og vi har 6 kreditter (det vil sige, at 100% CPU-udnyttelse kan være mulig i 6 minutter under spidser, hvorefter CPU-ydeevnen falder). Andre kombinationer: for eksempel, 1 CPU-kredit = 1 CPU, der kører med 50% belastning i to minutter (det vil sige, at vi kan bruge CPU med 50% belastning i 12 minutter), eller for eksempel, med konstant 10% CPU-belastning i hele tiden osv.

Konklusioner

  • Vi er en del af 'Digital Modstand'. Vi har sikret vores 'forældre' med en pålidelig kommunikationskanal.
  • Hvis der er installeret MtprotoProxyTelegram og OpenVPN på serveren, men ikke mere, vil der ikke være forsinkelser/pinger/fejl, men hvis du konstant eksperimenterer med din t2/micro, så forvent forsinkelser i forbindelsen.
  • Min ping til udlandet er ~100-250ms, der er ingen forsinkelser i taleanlægget.
  • De finansielle omkostninger for alt 'dette' (inklusive VPC-ressourcer) = 0₽.

Genpublicering af sin artikel.

UPD: Tak til nogle Habr-brugere for nyttige kommentarer, det er faktisk muligt (statistik opretholdes?), at der er bedre alternativer til den officielle docker-billede af Mtproto proxy Telegram.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster