Implementimi i MTProxy tuaj për Telegram me statistikë

Implementimi i MTProxy tuaj për Telegram me statistikë

Kam e trashëguar këtë kaos,
duke filluar me Zello pa turp; LinkedIn
dhe përfunduar me "të gjitha të tjerat" në platformën Telegram
në botën time.

Pastaj, duke hequr frymën,
zyrtari e shtoi shpejt dhe me zë të lartë:
por unë do të vendos rend (këtu në IT)"
(…).

Durov, me të drejtë mendon se këto janë shtete autoritare që duhet ta kenë frikë nga ai, kriptopankeri, dhe Roskomnadzorët e mbrojtjes me DPI-të e tyre nuk e shqetësojnë aq shumë"
(Teknikë politike)

Politika ime teknike është më e thjeshtë, mund të shkruaj këtu mendimet e mia për bllokimet e papërgjegjshme në Runet, por besoj se qytetarët progresistë modern rusë dhe përdoruesit e Habrës e kanë ndier në lëkurën e tyre papërgjegjshmërinë e autoriteteve aktuale, prandaj do të kufizohem në një frazë të vetme: politika jonë teknike është "Rezistenca Digjitale". "sigurimi i një kanali të qëndrueshëm komunikimi për të afërmit dhe miqtë".

Zhvillimi i MTProto proxy Telegram

  • Niveli teknik i vështirësisë është "i lehtë", nëse, për shembull, ndjek këtë udhëzues.
  • Niveli i besueshmërisë është "mbi mesataren": imazhi i docker funksionon stabilisht, nuk është e nevojshme ta rindezësh çdo ditë, siç shkruan zhvilluesit në dokumentacionin e tyre zyrtar të Telegram, por ndonjë dobësi në kontenier me siguri ekziston.
  • Niveli i rezistencës / shqetësimit – 10 igilovcë po zgjerojnë komplote të tyre "të afërmit përdorin", asnjë ndalim nuk ka ardhur nga RKN asnjëherë për gjithë këtë kohë (nga pranvera).
  • Niveli i besimit – "public baby distrust", problemi është nga ana e klientëve (disa miq janë të dyshimtë ndaj MtprotoProxy tim).
  • Niveli i testosteronit – "nuk është rritur më shumë".
  • Shpenzimet financiare – "0₽".
  • Shpërblimi financiar – "nuk varet nga qytetari Durov". Inkurajimi – mundësia e imponimit të reklamave.

Do të ngremë TelegramProxy tonë në kapacitetet "falas / personale" të Amazon-ec2: t2.micro. Unë përdora artikull. një makinë.

Ok, kemi zhvilluar versionin tonë falas server, kalojmë në faqen zyrtare dockerhub dhe shkarkojmë konteinerin docker.

Nuk është nevoja të kërkosh ndonjë imazh, skedar, ose buton magjik – "nuk ekzistojnë", e gjithë magia bëhet në CLI:

$ docker pull telegrammessenger / proxy #imazhi është shkarkuar.

Por para "kësaj" instaloni docker për CLI:

sudo apt-get install docker.io docker

Më pas, në dokumentacionin zyrtar MtprotoProxyTelegram na ofrohet të bëjmë diçka afërsisht të tillë, bëjmë:

$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest #startojmë kontenierin tonë "mtproto-proxy".

Pas kësaj komande, do të shfaqet një varg HEX në terminal, por ajo nuk na intereson.

Shkruajmë në CLI:

$ docker logs mtproto-proxy

Dhe marrim të dhënat e nevojshme:

Implementimi i MTProxy tuaj për Telegram me statistikë
Në daljen e këtij logu na tregojnë (e kam zbutur):

A) IP-në tonë të serverit (IP-ja e jashtme e serverit);
B) dhe një sekret rastësor — një varg rastësor në HEX.

Para se të regjistrojmë MtproProxy tonë, duhet të konfiguroni firewall-in kryesor mbi iptables (pavarësisht se si e drejtoni trafikun në këtë VPC, ai do të jetë i pakontrolluar, pasi firewall-i kryesor në Amazon-EC2 gjendet në ndërfaqen web dhe ka prioritet më të lartë mbi iptables).

Hymë në "konsolën Amazon-EC2" në Grupin e Sigurisë dhe hapim portin hyrës 443 (maskimi logjik i trafikut për një kohë të parë).

Implementimi i MTProxy tuaj për Telegram me statistikë

Marrim nga logu të dhënat tona "IP dhe sekret" dhe shkojmë në messenger-in Telegram, gjejmë Boten Oficiale MTProxy Admin (@MTProxybot) dhe regjistrojmë MtproProxy tonë: aktivizojmë komandën [\/newproxy] dhe fusim [ip_yanë:443], pastaj dhe [sekretin\/HEX].

Nëse bëni ndonjë gabim gjatë hyrjes së të dhënave, boti do të nervozohet dhe do t'ju dërgojë në...

Nëse plotësoni dy rreshta pa gabime, do të merrni miratim dhe një link funksional për MtprotoProxyTelegram-in tuaj, të cilin mund ta ndani me këdo.

Implementimi i MTProxy tuaj për Telegram me statistikë

Gjithashtu përmes këtij boti mund të shtoni kanalin tuaj të sponsorit (por jo bisedën), ku do t'i impononi mendimet tuaja përdoruesve që janë lidhur me ju serverit, ose mund të mos "spamoni", dhe të mos shqetësoni klientët e mundshëm, duke mos e treguar kanalin në listën e fiksuar të messenger-it.

Një fjalë tjetër për botin, atje mund të kërkoni statistika, por "po ashtu" është një pëndesë. Duket se "statistikat" janë të aksesueshme, kur pas jush është një "turmë e shkelëseve" nga Makhachkala.

Monitorimi

Sa përdorues mund të lidhim në serverin tonë? Dhe në përgjithësi, kush\/çfarë është aty? Çfarë? Dhe sa?

Shikojmë se çfarë ka në dokumentacionin zyrtar... Aha, ja, kështu ta bëjmë:

$ curl http://localhost:2398/stats ose kështu $ docker exec mtproto-proxy curl http://localhost:2398/stats # dhe do të na jepen statistikat direkt në CLI.

"Mbaji xhepat më të gjerë" Në komandat e propozuara gjithmonë do të marrim një gabim të tillë:

«curl: (7) Dështoi të lidhej me portin 2398 të localhost: Nuk u lejua lidhja»

Proxi ynë do të funksionojë. Por! Do të marrim një pëndesë, jo statistika.

Mund të angazhohemi me punë për ata me sy të kuq: kontrolloni

$ netstat -an | grep 2398 dhe...

Fillimisht думova se ky ishte një tjetër gabim nga zhvilluesit e Telegram (dhe ende mendoj kështu), pastaj gjetëm një zgjidhje të përkohshme mjaft të mirë: të polirosh kontenierin Docker me një dosje.

Më vonë më ra në sy një informacion:

rreth atë që bënë autoritetet shtetërore të Roskomnadzor me "statistikat".

"Kemi bllokuar në serverat tanë një pjesë të proxy-ve publikë, duke përdorur bazat e projektit firehol. Ky projekt monitoron listat e proxy-ve publikë dhe krijon baza me to.

Që nga ai moment (dmth pothuajse dy ditë tani) nuk është bllokuar asnjë IP adresë e proxy-it tonë rus.

3. Po tregojmë se si të krijoni një proxy të pothuajse të pa prekshëm për Roskomnadzor dhe po ndajmë një skript për bllokimin e proxy-ve publikë.

- Përditësoni kontenierin docker (ose demonin) MTProto proxy në versionin më të fundit: RKN identifikon versionet e vjetra sipas portit të statistikave, të cilat ishin lidhur në 0.0.0.0 dhe përcaktonin veten për të gjithë internetin. Ekrani më i mirë - hapni portet e nevojshme me iptables dhe mbyllni ato që nuk janë të nevojshme (mos harroni se në rastin e kontenierit docker, duhet të përdorni rregullin FORWARD).

- Roskomnadzor ka mësuar prej kohësh të kapë trafikun: ata shohin kërkesat brenda proxy-ve HTTP dhe SOCKS5, si dhe shohin versionin e vjetër të obfuscation të MTProto proxy.

Kur klientët e disa ofruesve, të cilët kanë vendosur këto skripte, i drejtohen Telegramit përmes këtyre proxy-ve, RKN i sheh këto kërkesa dhe menjëherë i bllokon këto proxy. E njëjta gjë vlen për MTProto proxy me obfuscation të vjetër.

Zgjidhja: ofroni klientëve që lidhen me proxy, secret vetëm me dd në fillim (nuk është e nevojshme të specifikoni letra shtesë dd në konfigurimet e vetë MTProto proxy). Kjo do të aktivizojë versionin e obfuscation që dumpers nuk e njohin.

Dhe asnjë HTTP- dhe SOCKS5-proxy.

- Një zgjidhje, me të cilën çdo pronar i proxy-t të Telegramit, i cili bllokohet rregullisht nga RKN, mund të ndalë plotësisht (ose pothuajse plotësisht) bllokimet (dhe njëkohësisht të verifikojë se RKN po gënjen).

Skripti që bllokon proxy-të publikë dhe një manual të vogël për të."

→ Burimi

Proxy ynë është nga perëndimi, nuk kam hasur asnjë problem/bllokim gjatë ditëve të pranverës dhe verës, nuk më mori shumë mendje për këtë detyrë krijuese, kështu që nuk me interesoi humbja e ritmit dhe nuk shtova prefix dd* në çelës.

Manuali "marrja e statistikave/monitorimi" sipas udhëzimeve zyrtare MtprotoProxyTelegram është i papërshtatshëm/i vjetruar, do të duhet ta riparojmë imazhin docker.

E riparojmë.

Kontejneri ynë ende po funksionon:

$ docker stop mtproto-proxy #ndalojmë konteinerit docker që kemi aktivizuar dhe aktivizojmë një imazh të ri me parametrin e kaluar për statistikën
$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config:/data -e SECRET=sekreti_jot_previous_hex telegrammessenger/proxy:latest

Le të kontrollojmë statistikat:

$ curl http://localhost:2398/stats

curl: (7) Dështoi të lidhë me portin 0.0.0.0 2398: Lidhja u refuzua
Statistikat ende nuk janë në dispozicion .!..

Mësojmë identifikuesin e konteinerit docker:

$ docker ps

ID KONTENIERI IMAGJEN KOMANDA KRIJUAR STATUSI PORTET EMRAT
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba..." Rreth një orë më parë Në funksionim Rreth një minutë 0.0.0.0:443->443/tcp mtproto-proxy2

Hyjmë brenda konteinerit docker me rregullat tona:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

Dhe në rreshtin e fundit të skenarit "run.sh" shtojmë parametrin e humbur:

«---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"

Shtoni "--http-stats", kështu duhet të duket:

"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 (ruaj/exit nga nano/në daljen e konteinerit).

Riparojmë konteinerit tonë docker:

$ docker restart mtproto-proxy2

Kjo është, tani me komandën:

$ curl http://localhost:2398/stats #marrim statistikën e gjerë

Implementimi i MTProxy tuaj për Telegram me statistikë
Në statistikë ka shumë "mbeturina" (në ekran 1/3 e saj), krijojmë alias:

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

Marrim atë që e bëri të vlerësueshëm konteineri docker: numri i lidhjeve dhe ngarkesa:

$ telega

Implementimi i MTProxy tuaj për Telegram me statistikë
Konteineri Docker është aktiv, statistika po shfaqet.

Burimet e shpenzuara

Sa do të ishe i shkëlqyer, Stuart Redman, ende lë një shenjë të keqe mbi fundet e tua. Një imazh Docker funksional lë një shenjë të konsiderueshme.

Nuk ka kuptim të përshkruash përparësitë dhe disavantazhet e imazheve docker, konteineri docker është një mini-makinë virtuale, duke konsumuar më pak burime se një "makinë" virtuale reale, për shembull VirtualBox, por akoma duke konsumuar.

1) Aktivizuar me statistikë ose pa, dy klientë janë të shpejtë ose dhjetë — burimet shfrytëzohen ~po njësoj: 75% të performances totale të CPU t2.micro.

2) Shikojmë monitorimin e serverit VPC:

Implementimi i MTProxy tuaj për Telegram me statistikë

Nga grafiku i shfrytëzimit të burimeve në VPC, shohim se docker-konteneri konsumon vazhdimisht rreth 7.5% të kapacitetit maksimal të CPU-së dhe më 28 maj u ndalua qëllimisht përkohësisht nga unë. (Shënim — në server gjithashtu operojnë OpenVPN & pptp).

Përse 10% ngarkesë të përhershme të CPU-së është kufiri për këtë server?

Për shkak se ka kufizime nga Amazon EC2 dhe ato llogariten në kredite:

Implementimi i MTProxy tuaj për Telegram me statistikë

1 kredit CPU = 1 CPU që punon me 100% ngarkesë për një minutë, dhe ne kemi 6 kredite (domethënë në kulmet 100% shfrytëzimi i CPU-së është i mundur për 6 minuta, pastaj fuqia e CPU-së do të ulet). Kombinime të tjera: për shembull, 1 kredit CPU = 1 CPU që punon me 50% ngarkesë për dy minuta (domethënë mund të përdorim CPU me 50% ngarkesë për 12 minuta), ose, për shembull, ngarkesë të vazhdueshme prej 10% të CPU-së për gjithë kohën dhe kështu me radhë.

Përfundimet

  • Ne jemi një pjesë e "Rezistencës Dixhitale". Siguruam për "prindërit tanë" një kanal të besueshëm komunikimi.
  • Nëse në server keni të instaluar MtprotoProxyTelegram dhe OpenVPN, por jo më shumë, nuk do të ketë vonesa/pingje/ndërprerje, por nëse përherë eksperimentoni me t2/micro tuaj, prisni ngadalësime në lidhje.
  • Ping-i im përtej oqeanit është rreth 100-250ms, nuk ndjehen vonesa në komunikimin me zë.
  • Shpenzimet financiare për të gjithë "këtë" (përfshirë burimet VPC) = 0₽.

Ripublikimi i artikullit tim.

UPD: Faleminderit disa përdoruesve të Habra për komentet e dobishme, me të vërtetë, ndoshta (statistikat mbahen?), ekzistojnë alternativa më të mira për imazhin zyrtar docker të Mtproto proxy Telegram.

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster