Distribuzione del proprio MTProxy Telegram con statistiche

Distribuzione del proprio MTProxy Telegram con statistiche

Ho ereditato questo caos,
partendo dal cinico Zello; LinkedIn
fino a ‘tutti gli altri’ sulla piattaforma Telegram
nel mio mondo.

E poi, dopo un singhiozzo,
l'ufficiale ha aggiunto in fretta e ad alta voce:
ma io riporterò ordine (qui nell'IT)"
(…).

Durov, giustamente, ritiene che siano gli stati autoritari a dover temere lui, il crittografo, mentre i Roskomnadzor e i loro DPI e scudi dorati non lo preoccupano affatto"
(Tecnica politica)

La mia politica tecnica è più semplice, potrei qui abbozzare le mie riflessioni sulle bloccature ingegnosamente imprudenti nel runet, ma credo che i cittadini progressisti della Russia moderna e gli utenti di Habr abbiano sperimentato sulla propria pelle l'incompetenza dell'autorità attuale, quindi mi limiterò a una sola frase: la nostra politica tecnica è il "Resistenza Digitale". "garantendo ai familiari un canale di comunicazione stabile."

Implementazione di proxy MTProto Telegram

  • Il livello di difficoltà tecnica è "non complicato", se, ad esempio, si segue questa guida.
  • Il livello di affidabilità è «sopra la media»: l'immagine docker funziona in modo stabile, non è necessario riavviarla ogni giorno, come indicato dagli sviluppatori nella loro documentazione ufficiale di Telegram, ma sicuramente ci sono delle vulnerabilità nel contenitore.
  • Il livello di resistenza / preoccupazione è che 10 membri dell'ISIS intrecciano le loro cospirazioni «la famiglia è coinvolta», non ho mai ricevuto un blocco dal Roskomnadzor da quando è iniziato tutto (dalla primavera).
  • Il livello di fiducia è «pubblico baby distrust», il problema è dalla parte dei clienti (alcuni amici sono sospettosi nei confronti del mio MtprotoProxy).
  • Il livello di testosterone è «non è aumentato».
  • Costi finanziari — «0₽».
  • Compenso finanziario — «non dipende dal cittadino Durov». Incentivo — possibilità di imposizione di pubblicità.

Alzeremo il nostro TelegramProxy su risorse «gratuite/personalizzate» di Amazon-ec2: t2.micro. Ho usato questo la macchina.

Ok, abbiamo avviato la nostra gratuita un server, andiamo sul sito ufficiale dockerhub e scarichiamo il contenitore docker.

Non è necessario cercare un'immagine, un file o un pulsante magico — «non ci sono», tutta la magia avviene tramite CLI:

$ docker pull telegrammessenger/proxy #immagine scaricata.

Ma prima di «questo», installa docker per CLI:

sudo apt-get install docker.io docker

Successivamente, nella documentazione ufficiale di MtprotoProxyTelegram ci viene suggerito di fare quanto segue:

$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest # avviamo il nostro contenitore «mtproto-proxy».

Dopo questo comando, apparirà una stringa HEX nell'uscita del terminale, ma non ci interessa.

Scriviamo nella CLI:

$ docker logs mtproto-proxy

E otteniamo i dati necessari:

Distribuzione del proprio MTProxy Telegram con statistiche
Nell'uscita di questo log ci mostrano (censurato):

A) il nostro ip server (ip esterno del server);
B) e un segreto casuale — una stringa casuale in HEX.

Prima di registrare il nostro MtproProxy, è necessario configurare il firewall principale sopra iptables (indipendentemente da come si inoltra il traffico su questa VPC, non obbedirà, poiché il firewall principale in Amazon EC2 si trova nell'interfaccia web e ha una priorità più alta rispetto a iptables).

Accediamo a "console Amazon-EC2" nel Security Group e apriamo la porta 443 in entrata (mascheratura logica del traffico per il momento).

Distribuzione del proprio MTProxy Telegram con statistiche

Prendiamo i nostri dati «ip e segreto» dal log e andiamo nel messenger Telegram, troviamo l'official MTProxy Admin Bot (@MTProxybot) e registriamo il nostro MtproProxy: avviamo il comando [/newproxy] e inseriamo [nostro_ip:443], poi anche il nostro [segreto/HEX].

Se fai errori durante l'inserimento dei dati, il bot si arrabbierà e ti manderà a…

Se compili due righe senza errori, riceverai l'approvazione e un link funzionante per il tuo MtprotoProxyTelegram, che puoi condividere con chiunque.

Distribuzione del proprio MTProxy Telegram con statistiche

Attraverso questo bot puoi anche aggiungere il tuo canale sponsor (ma non la chat), dove potrai imporre le tue opinioni agli utenti che si sono connessi al tuo server, oppure puoi evitare di «spam» e non infastidire i tuoi potenziali clienti, non mostrando il canale nell'elenco fissato del messenger.

Altre due parole sul bot, si possono richiedere statistiche, ma «è tutto fumo». Evidentemente le «statistiche» sono disponibili quando hai dietro di te una «folla di parassiti» a Makhachkala.

Monitoraggio

Quanti utenti possiamo connettere al nostro server? E in generale, chi/che cosa c'è lì? Cosa? E quanto?

Controlliamo cosa dice la documentazione ufficiale… Ah, ecco, fai così:

$ curl http://localhost:2398/stats oppure così $ docker exec mtproto-proxy curl http://localhost:2398/stats # e ci fornirà le statistiche direttamente nella CLI.

«Tieni la mano larga» Con i comandi suggeriti, riceveremo sempre un errore simile:

«curl: (7) Impossibile connettersi alla porta 2398 di localhost: Connessione rifiutata»

Il nostro proxy funzionerà. Ma! Bagel, non otterremo statistiche.

Possiamo occuparci degli affari per i rossi: controllare

$ netstat -an | grep 2398 e...

All'inizio pensavo che fosse un'altra sbavatura da parte degli sviluppatori di Telegram (e continuo a pensarlo), poi ho trovato una soluzione temporanea decente: rifinire il Docker Container con una lima.

Più tardi mi è capitata sotto gli occhi una notizia:

sulle danze governative del Roskomnadzor riguardo alla «statistica».

«Abbiamo bloccato sui nostri server parte dei proxy pubblici, utilizzando i database del progetto firehol. Questo progetto monitora le liste di proxy pubblici e crea database con essi.

Da questo momento (ossia già da quasi due giorni) non è stato bloccato alcun indirizzo IP del nostro proxy russo.

3. Raccontiamo come creare un proxy quasi inattaccabile per il Roskomnadzor e condividiamo lo script per bloccare i proxy pubblici.

— Aggiorna il contenitore Docker (o il demone) del proxy MTProto all'ultima versione: il Roskomnadzor determina le vecchie versioni in base alla porta delle statistiche, che era vincolata a 0.0.0.0 e si identificava chiaramente per tutto internet. Meglio ancora, apri le porte necessarie con iptables e chiudi le altre (ricorda, nel caso di un contenitore Docker, di utilizzare la regola FORWARD).

— Il Roskomnadzor ha da tempo imparato a fare il dump del traffico: vedono le richieste all'interno dei proxy HTTP e SOCKS5, così come riconoscono le vecchie versioni dell'offuscamento del proxy MTProto.

Quando i clienti di alcuni provider, dotati di tali strumenti di dumping, si connettono a Telegram tramite tali proxy, il Roskomnadzor vede tali richieste e blocca immediatamente questi proxy. Lo stesso vale per i proxy MTProto con un'offuscazione obsoleta.

Soluzione: fornisci ai clienti che si connettono al proxy un secret solo con dd all'inizio (non è necessario indicare lettere aggiuntive dd nelle impostazioni del proxy mtproto stesso). Questo attiverà la versione dell'offuscamento che gli strumenti di dumping non sono in grado di riconoscere.

E niente proxy HTTP e SOCKS5.

— Uno strumento che permette a ciascun proprietario di un proxy Telegram, soggetto a frequenti blocchi da parte del Roskomnadzor, di interrompere completamente (o quasi completamente) le restrizioni (e al contempo scoprire che il Roskomnadzor mente).

Uno script che blocca i proxy pubblici e un breve manuale per questo.

Fonte

Il nostro proxy è pro-occidentale, non ho incontrato problemi o blocchi durante le fresche giornate primaverili e estive, quindi non ho perso ritmo e non ho aggiunto il prefisso dd* alla chiave.

Il manuale 'ottenere statistiche / monitorare' secondo le istruzioni ufficiali di MtprotoProxyTelegram è non funzionante / obsoleto, dovremo riparare l'immagine docker.

Riparando.

Il nostro contenitore è ancora in esecuzione:

$ docker stop mtproto-proxy # fermiamo il nostro contenitore docker in esecuzione e avviamo una nuova immagine con il flag delle statistiche non attivato
$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config:/data -e SECRET=il_tuo_precedente_segreto_hex telegrammessenger/proxy:latest

Controlliamo le statistiche:

$ curl http://localhost:2398/stats

curl: (7) Impossibile connettersi alla porta 2398: Connessione rifiutata
Le statistiche sono ancora non disponibili .!..

Scopriamo l'identificativo del contenitore docker:

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest «/bin/sh -c ‘/bin/ba…» Circa un'ora fa Up Circa un minuto 0.0.0.0:443->443/tcp mtproto-proxy2

Entriamo con le nostre regole all'interno del contenitore docker:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

E nell'ultima riga dello script «run.sh» aggiungiamo il flag mancante:

«—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»

Aggiungiamo «—http-stats», qualcosa del genere dovrebbe risultare:

«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 (salva/esci da nano/esci dal contenitore).

Riavviamo il nostro contenitore docker:

$ docker restart mtproto-proxy2

Tutto, ora con il comando:

$ curl http://localhost:2398/stats #ottieni statistiche dettagliate

Distribuzione del proprio MTProxy Telegram con statistiche
Nelle statistiche ci sono molti «rifiuti» (nello screenshot 1/3 è una parte di esse), creiamo un alias:

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

Otteniamo ciò per cui abbiamo lucidato il contenitore docker: numero di connessioni e carico:

$ telega

Distribuzione del proprio MTProxy Telegram con statistiche
Il contenitore Docker è in esecuzione, le statistiche sono attive.

Risorse consumate

Per quanto tu possa essere straordinario, Stuart Redman, anche tu lasci segni di... sui tuoi pantaloni. Un'immagine Docker in esecuzione lascia un notevole residuo.

Non ha senso elencare i vantaggi e gli svantaggi delle immagini Docker; un container Docker è una mini macchina virtuale che consuma meno risorse rispetto a una 'vera' macchina virtuale, come VirtualBox, ma consuma comunque.

1) Eseguito con o senza statistiche dell'immagine Docker, due clienti si divertono o dieci — le risorse vengono utilizzate in modo ~uguale: il 75% di tutta la performance della CPU t2.micro.

2) Controlliamo il monitoraggio del server VPC:

Distribuzione del proprio MTProxy Telegram con statistiche

Dal grafico di utilizzo delle risorse sul VPC, vediamo che il container Docker consuma costantemente ~7,5% della massima performance della CPU e il 28 maggio è stato fermato da me intenzionalmente/temporeaneamente. (Nota — sul server girano anche OpenVPN & pptp).

Perché il 10% di carico CPU costante è il limite per questo server?

Perché ci sono limitazioni da parte di Amazon EC2 e queste vengono calcolate in crediti:

Distribuzione del proprio MTProxy Telegram con statistiche

1 credito CPU = 1 CPU che opera al 100% di carico per un minuto, e abbiamo 6 crediti (ciò significa che in picchi è possibile una utilizzazione al 100% della CPU per 6 minuti, dopodiché la potenza della CPU diminuirà). Altre combinazioni: ad esempio, 1 credito CPU = 1 CPU che opera al 50% di carico per due minuti (cioè possiamo utilizzare la CPU con un carico del 50% per 12 minuti), oppure, ad esempio, un carico costante del 10% della CPU per tutto il tempo.

Conclusioni

  • Siamo parte della «Resistenza Digitale». Abbiamo fornito ai nostri «genitori» un canale di comunicazione affidabile.
  • Se sul server hai installato MtprotoProxyTelegram e OpenVPN, ma non di più, non ci saranno ritardi/ping/interruzioni, ma se sperimenti continuamente con il tuo t2/micro, aspettati rallentamenti nella connessione.
  • Il mio ping oltreoceano è di circa 100-250 ms, non avverto ritardi nelle comunicazioni vocali.
  • Le spese finanziarie per tutto 'questo' (inclusi i risorse VPC) = 0₽.

Riportando il proprio articolo.

UPD: Grazie a alcuni utenti di Habr per i commenti utili, davvero, è possibile (la statistica viene supportata?), ci sono alternative migliori all'immagine docker ufficiale di Mtproto proxy Telegram.

Fonte: habr.com

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster