Desplegant el vostre MTProxy Telegram amb estadístiques

Desplegant el vostre MTProxy Telegram amb estadístiques

"He heretat aquest embolic,
començant pel descarat Zello; LinkedIn
i acabant amb "tots els altres" a la plataforma de Telegram
al meu món.

I després singlot,
El funcionari va afegir precipitadament i en veu alta:
però posaré les coses en ordre (aquí a IT)"
(...).

Durov, creu amb raó que són els estats autoritaris els que haurien de tenir por d'ell, un cypherpunk, i Roskomnadzor i els escuts daurats amb els seus filtres DPI realment no el molesten.
(Tècnica política)

La meva política tècnica és més senzilla, puc descriure aquí els meus pensaments sobre el bloqueig negligent a Runet, però crec que els ciutadans progressistes del rus modern i els usuaris d'Habr han sentit la falta de professionalitat de l'actual govern en la seva pròpia pell, així que em limitaré a una sola frase: la nostra política tècnica és "Resistència digital". "Oferir a familiars i amics un canal de comunicació estable".

Desplegant el proxy MTProto Telegram

  • El nivell tècnic de complexitat és "fàcil", si, per exemple, seguiu aquest full de trucs.
  • El nivell de fiabilitat està "per sobre de la mitjana": la imatge de Docker funciona de manera estable, no cal reiniciar-la cada dia, tal com van escriure els desenvolupadors a la seva documentació oficial de Telegram, però el contenidor probablement conté algunes vulnerabilitats.
  • El nivell de resistència / ansietat - 10 membres de l'ISIS teixeixen les seves conspiracions "ús dels familiars", la prohibició no va venir de la RKN ni tan sols una vegada tot el temps (des de la primavera).
  • El nivell de confiança és "desconfiança pública del nadó", un problema del costat del client (alguns amics sospiten del meu MtprotoProxy).
  • Els nivells de testosterona - "no van augmentar".
  • Costos financers - "0₽".
  • Recompensa financera - "no depèn del ciutadà Durov". Promoció: la capacitat d'imposar publicitat.

Aixecarem el nostre TelegramProxy sobre les capacitats "gratuïtes / personals" d'Amazon-ec2: t2.micro. jo solia això cotxe.

D'acord, heu desplegat el vostre servidor gratuït, aneu al lloc web oficial dockerhub i descarregueu el contenidor Docker.

No cal buscar cap imatge, fitxer o botó màgic: "no hi són", tota la màgia es fa a la CLI:

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

Però abans d'"això", instal·leu Docker per a CLI:

sudo apt-get install docker.io docker

A més, a la documentació oficial de MtprotoProxyTelegram, se'ns ofereix fer alguna cosa com el següent, fem:

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

Després d'aquesta ordre, apareixerà una cadena HEX a la sortida del terminal, però no ens interessa.

Escrivim en CLI:

$ docker logs mtproto-proxy

I obtenim les dades necessàries:

Desplegant el vostre MTProxy Telegram amb estadístiques
A la sortida d'aquest registre, se'ns mostra (untades):

A) la nostra ip del servidor (ip del servidor extern);
B) i un secret aleatori: una cadena aleatòria en HEX.

Abans de registrar el nostre MtproProxy, heu de configurar el tallafoc principal a través d'iptables (no importa com redirigeu el trànsit a aquest VPC, serà entremaliat, ja que el tallafoc principal d'Amazon-EC2 es troba a la interfície web i té una prioritat més alta que iptables).

Anem a "consola Amazon-EC2" al grup de seguretat i obre el port d'entrada 443 (emmascarament lògic trànsit per primera vegada).

Desplegant el vostre MTProxy Telegram amb estadístiques

Agafem les nostres dades "ip i secret" del registre i anem al missatger de Telegram, busquem el bot oficial d'administració de MTProxy (@MTProxybot) i registrem el nostre MtproProxy: executeu l'ordre [/newproxy] i introduïu [our_ip:443], i llavors el nostre [secret /HEX].

Si emboliques en introduir dades, el bot s'enfadarà i t'enviarà a...

Si empleneu dues línies sense errors, rebreu l'aprovació i un enllaç de treball al vostre MtprotoProxyTelegram actual, que podeu compartir amb qualsevol persona.

Desplegant el vostre MTProxy Telegram amb estadístiques

A més, a través d'aquest bot, pots afegir el teu canal de patrocini (però no un xat), on imposaràs les teves opinions als usuaris que s'hagin connectat al teu servidor, o no pots "enviar correu brossa" i no molestar els teus potencials clients sense mostrant el canal a la llista de missatgeria fixada.

Unes paraules més sobre el bot, on podeu demanar estadístiques, però “també un donut”. Aparentment, les "estadístiques" estan disponibles quan tens "una multitud de freeloaders" darrere teu Makhachkala.

Seguiment

Quants usuaris ens podem connectar al nostre servidor? I de totes maneres, qui/què hi ha? Què? I quants?

Mirem què hi ha segons la documentació oficial... Sí, aquí, fes-ho així:

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

"Mantingueu la butxaca més àmplia" Segons les ordres proposades, sempre rebrem un error similar:

«curl: (7) No s'ha pogut connectar al port localhost 2398: connexió rebutjada»

El nostre proxy funcionarà. Però! Bagel, no tenim estadístiques.

Podeu fer coses per als ulls vermells: comprovar

$ netstat -an | grep 2398 и...

Al principi vaig pensar que això era un altre brancal darrere dels desenvolupadors de Telegram (i encara ho penso), després vaig trobar una bona solució temporal: polir el Docker Container amb un fitxer.

Més tard, un infa em va cridar l'atenció:

sobre els balls estatals de Roskomnadzor al voltant de les "estadístiques".

"Hem bloquejat alguns dels servidors intermediaris públics dels nostres servidors mitjançant les bases de dades del projecte Firehol. Aquest projecte monitoritza llistes amb servidors intermediaris públics i fa bases de dades amb ells.

Des d'aquell moment (és a dir, gairebé dos dies ja), no s'ha bloquejat ni una sola adreça IP del nostre proxy rus.

3. Us expliquem com crear un servidor intermediari que sigui gairebé invulnerable a Roskomnadzor i compartir un script per bloquejar els servidors intermediaris públics.

- Actualitzeu el contenidor (o dimoni) del servidor intermediari MTProto a l'última versió: RKN calcula les versions antigues pel port d'estadístiques, que estava vinculat a 0.0.0.0 i s'identificava de manera única per a tot Internet. Millor encara, obriu els ports necessaris amb iptables i tanqueu la resta (recordeu que en el cas d'un contenidor docker, hauríeu d'utilitzar la regla FORWARD).

— Roskomnadzor va aprendre a bolcar el trànsit fa molt de temps: veuen trucades dins dels servidors intermediaris HTTP i SOCKS5 i també veuen la versió antiga de l'ofuscament del servidor intermediari MTProto.

Quan els clients d'alguns proveïdors que tenen instal·lats aquests abocadors accedeixen a Telegram a través d'aquests servidors intermediaris, el RKN veu aquestes sol·licituds i bloqueja immediatament aquests servidors intermediaris. El mateix passa amb el proxy MTProto amb una ofuscació antiga.

Solució: distribuïu el secret només amb dd al principi als clients que es connecten al proxy (no cal especificar lletres addicionals dd a la configuració del proxy mtproto). Això permetrà una versió d'ofuscament que els bolquets no poden detectar.

I no hi ha servidors intermediaris HTTP o SOCKS5.

- Ajust, amb l'ajuda del qual cada propietari d'un proxy de telegrama, que el RKN prohibeix regularment, pot deixar de bloquejar completament (o gairebé completament) (i, al mateix temps, assegurar-se que el RKN menteix).

Un script que prohibeix els servidors intermediaris públics i un petit manual per a això.

Font

El nostre proxy és pro-occidental, no he trobat cap problema/bloqueig durant els dies de primavera i frescos d'estiu, tampoc va atreure una tasca creativa, així que no vaig perdre el ritme i no vaig afegir el prefix dd* a la clau.

El manual "obtenció d'estadístiques/monitoratge" segons les instruccions oficials de MtprotoProxyTelegram no funciona/obsolet, haureu de reparar la imatge del docker.

Ho arreglem.

El contenidor encara funciona:

$ 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

Comprovem les estadístiques:

$ curl http://localhost:2398/stats

curl: (7) No s'ha pogut connectar al port 0.0.0.0 2398: connexió rebutjada
Les estadístiques encara no estan disponibles!...

Esbrineu l'ID del contenidor docker:

$ docker ps

IDENTIFICACIÓ DEL CONTENIDOR IMATGE COMANDA CREAT ESTAT NOMS PORTS
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba..." Fa aproximadament una hora Amunt Aproximadament un minut 0.0.0.0:443->443/tcp mtproto-proxy2

Anem amb la nostra carta dins del contenidor docker:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

I a l'última línia de l'script "run.sh", afegiu el senyalador que falta:

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

Afegiu "--http-stats", alguna cosa com això hauria de funcionar:

«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 (desar/sortir de nano/sortir del contenidor).

Reinicieu el nostre contenidor Docker:

$ docker restart mtproto-proxy2

Tot, ara al comandament:

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

Desplegant el vostre MTProxy Telegram amb estadístiques
Hi ha molta "escombraries" a les estadístiques (1/3 és a la pantalla), creeu un àlies:

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

Obtenim per a què es va polir el contenidor Docker: el nombre de connexions i la càrrega:

$ telega

Desplegant el vostre MTProxy Telegram amb estadístiques
El contenidor Docker s'està executant, les estadístiques estan girant.

Recursos gastats

Per molt bo que siguis Stuart Redman, fins i tot tu deixes una empremta a les teves calces. Una imatge de Docker en execució deixa una gran petjada.

No té sentit descriure els avantatges i desavantatges de les imatges docker, un contenidor docker és una mini màquina virtual que consumeix menys recursos que una màquina virtual "real", com ara VirtualBox, però ho fa.

1) Llançat amb o sense estadístiques d'imatge de docker, dos clients xoquen o deu - els recursos s'utilitzen ~ de la mateixa manera: el 75% de tot el rendiment de la CPU t2.micro.

2) Mirem el seguiment del servidor VPC:

Desplegant el vostre MTProxy Telegram amb estadístiques

A partir del gràfic d'utilització de recursos del VPC, veiem que el contenidor Docker consumeix constantment ~ 7,5% del total màxim. El rendiment de la CPU i el 28 de maig el vaig aturar de manera intencionada/temporal (Nota: OpenVPN i pptp també s'executen al servidor).

Per què és un 10% d'ús constant de la CPU el límit per a aquest servidor?

Com que hi ha restriccions d'Amazon EC2 i es calculen en crèdits:

Desplegant el vostre MTProxy Telegram amb estadístiques

1 crèdit de CPU = 1 CPU funcionant al 100% de càrrega durant un minut, i tenim 6 crèdits (és a dir, en els pics, és possible una utilització del 100% de la CPU en 6 minuts i després la potència de la CPU disminuirà). Altres combinacions: per exemple, 1 crèdit de CPU = 1 CPU funcionant amb una càrrega del 50% durant dos minuts (és a dir, podem utilitzar la CPU amb una càrrega del 50% durant 12 minuts), o, per exemple, una càrrega constant de la CPU del 10% durant tot el temps, etc.

Troballes

  • Formem part de la "Resistència Digital". Proporcionaven als seus "pares i mares" un canal de comunicació fiable.
  • Si teniu MtprotoProxyTelegram i OpenVPN desplegats al servidor, però no més, no hi haurà retards / pings / fallades, però si esteu experimentant constantment amb el vostre t2 / micro, espereu els frens de comunicació.
  • El meu ping a l'estranger és de ~ 100-250 ms, no hi ha retards en la comunicació de veu.
  • Costos financers de tot "això" (inclosos els recursos VPC) = 0₽.

Reimpressió del teu article.

UPD: Gràcies a alguns usuaris per comentaris útils, de fet, és possible (les estadístiques són compatibles?), Hi ha millors anàlegs de la imatge oficial del docker de Telegram del proxy Mtproto.

Font: www.habr.com

Afegeix comentari