Déploiement de votre télégramme MTProxy avec statistiques

Déploiement de votre télégramme MTProxy avec statistiques

"J'ai hérité de ce gâchis,
à commencer par l'impudique Zello ; LinkedIn
et se terminant par "tous les autres" sur la plateforme Telegram
dans mon monde.

Et puis hoquet,
Le fonctionnaire ajouta précipitamment et bruyamment :
mais je vais mettre les choses en ordre (ici dans l'informatique)"
(...).

Durov, estime à juste titre que ce sont les États autoritaires qui devraient avoir peur de lui, un cypherpunk, et Roskomnadzor et les boucliers dorés avec leurs filtres DPI ne le dérangent pas vraiment.
(Technique politique)

Ma politique technique est plus simple, je peux décrire ici mes réflexions sur le blocage imprudent dans Runet, mais je crois que les citoyens progressistes des utilisateurs russes modernes et Habr ont ressenti le manque de professionnalisme du gouvernement actuel dans leur propre peau, donc je me limiterai à une seule phrase : notre politique technique est « Digital Resistance » . "fournir aux parents et amis un canal de communication stable."

Déploiement du télégramme proxy MTProto

  • Le niveau de complexité technique est "facile", si, par exemple, vous suivez cette feuille de triche.
  • Le niveau de fiabilité est « au-dessus de la moyenne » : l'image du docker fonctionne de manière stable, il n'a pas besoin d'être redémarré tous les jours, comme l'ont écrit les développeurs dans leur documentation officielle de Telegram, mais le conteneur contient probablement quelques vulnérabilités.
  • Le niveau de résistance/anxiété - 10 membres de l'ISIS tissent leurs conspirations "l'utilisation des parents", l'interdiction n'est pas venue du RKN une seule fois tout le temps (depuis le printemps).
  • Le niveau de confiance est "public baby méfiance", un problème côté client (certains amis se méfient de mon MtprotoProxy).
  • Les niveaux de testostérone - "n'ont pas augmenté."
  • Frais financiers - "0₽".
  • Récompense financière - "ne dépend pas du citoyen Durov". Promotion - la capacité d'imposer de la publicité.

Nous relèverons notre TelegramProxy sur les capacités « libre/personnelle » d'Amazon-ec2 : t2.micro. j'ai utilisé cette une voiture.

Ok, déployé votre serveur gratuit, allez sur le site officiel DockerHub et téléchargez le conteneur docker.

Pas besoin de chercher une image, un fichier ou un bouton magique - "ils ne sont pas là", toute la magie se fait dans la CLI :

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

Mais avant "ça", installez docker pour CLI :

sudo apt-get install docker.io docker

De plus, dans la documentation officielle de MtprotoProxyTelegram, on nous propose de faire quelque chose comme ce qui suit, nous faisons :

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

Après cette commande, une chaîne HEX apparaîtra dans la sortie du terminal, mais cela ne nous intéresse pas.

On écrit en CLI :

$ docker logs mtproto-proxy

Et nous obtenons les données requises :

Déploiement de votre télégramme MTProxy avec statistiques
Dans la sortie de ce journal, on nous montre (barbouillé):

A) l'adresse IP de notre serveur (adresse IP du serveur externe) ;
B) et un secret aléatoire - une chaîne aléatoire en HEX.

Avant d'enregistrer notre MtproProxy, vous devez configurer le pare-feu principal sur iptables (peu importe comment vous redirigez le trafic vers ce VPC, ce sera méchant, car le pare-feu principal d'Amazon-EC2 est situé dans l'interface Web et a une priorité plus élevée sur iptables ).

Nous allons à "console Amazon-EC2" dans le groupe de sécurité et ouvrez le port entrant 443 (masquage logique circulation pour la première fois).

Déploiement de votre télégramme MTProxy avec statistiques

Nous prenons nos données "ip et secrètes" du journal et allons au messager Telegram, trouvons le bot d'administration MTProxy officiel (@MTProxybot) et enregistrons notre MtproProxy : exécutez la commande [/newproxy] et entrez [our_ip:443], et puis notre [secret /HEX].

Si vous vous trompez lors de la saisie des données, le bot se mettra en colère et vous enverra à ...

Si vous remplissez deux lignes sans erreur, vous recevrez une approbation et un lien de travail vers votre MtprotoProxyTelegram actuel, que vous pourrez partager avec n'importe qui.

Déploiement de votre télégramme MTProxy avec statistiques

Aussi, grâce à ce bot, vous pouvez ajouter votre canal de parrainage (mais pas de chat), où vous imposerez vos vues aux utilisateurs qui se seront connectés à votre serveur, mais vous ne pourrez pas « spammer » et ne pas déranger vos clients potentiels sans montrant le canal dans la liste des messagers épinglés.

Quelques mots de plus sur le bot, où l'on peut demander des statistiques, mais "aussi un beignet". Apparemment, les "statistiques" sont disponibles lorsque vous avez "une foule de profiteurs" derrière vous Makhachkala.

Surveillance

Combien d'utilisateurs pouvons-nous connecter à notre serveur ? Et de toute façon, qui / qu'y a-t-il? Quoi? Et combien?

On regarde ce qu'il y a d'après la documentation officielle... Ouais, voilà, fais comme ça :

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

"Gardez votre poche plus large" Selon les commandes proposées, nous recevrons toujours une erreur similaire :

«curl : (7) Échec de la connexion au port 2398 de l'hôte local : connexion refusée»

Notre proxy fonctionnera. Mais! Bagel, pas de statistiques que nous obtenons.

Vous pouvez faire des choses pour les yeux rouges : cochez

$ netstat -an | grep 2398 и...

Au début, je pensais que c'était un autre jambage derrière les développeurs de Telegram (et je le pense toujours), puis j'ai trouvé une bonne solution temporaire : peaufiner le conteneur Docker avec un fichier.

Plus tard, un INFA a attiré mon attention :

sur les danses d'État de Roskomnadzor autour de "statistiques".

« Nous avons bloqué certains des proxies publics sur nos serveurs en utilisant les bases de données du projet firehol. Ce projet surveille les listes avec des proxys publics et crée des bases de données avec eux.

Depuis ce moment (c'est-à-dire presque deux jours déjà), pas une seule adresse IP de notre proxy russe n'a été bloquée.

3. Nous vous expliquons comment créer un proxy presque invulnérable à Roskomnadzor et partager un script pour bloquer les proxys publics.

- Mettez à jour le conteneur docker proxy MTProto (ou démon) vers la dernière version : RKN calcule les anciennes versions par le port de statistiques, qui était lié à 0.0.0.0 et s'est identifié de manière unique pour l'ensemble d'Internet. Mieux encore, ouvrez les ports nécessaires à l'aide d'iptables et fermez le reste (rappelez-vous que dans le cas d'un conteneur docker, vous devez utiliser la règle FORWARD).

— Roskomnadzor a appris à vider le trafic il y a longtemps : ils voient les appels à l'intérieur des proxys HTTP et SOCKS5, et ils voient également l'ancienne version de l'obscurcissement du proxy MTProto.

Lorsque les clients de certains fournisseurs qui ont installé de tels vidages accèdent à Telegram via de tels proxys, le RKN voit ces demandes et bloque immédiatement ces proxys. Il en va de même pour le proxy MTProto avec un ancien obfuscation.

Solution : distribuer le secret uniquement avec dd au début aux clients qui se connectent au proxy (inutile de spécifier des lettres supplémentaires dd dans les paramètres du proxy mtproto lui-même). Cela activera une version d'obfuscation que les dumppiles ne peuvent pas détecter.

Et pas de proxy HTTP ou SOCKS5.

- Ajustement, à l'aide duquel chaque propriétaire d'un proxy de télégramme, qui est régulièrement interdit par le RKN, peut complètement (ou presque complètement) arrêter de bloquer (et en même temps s'assurer que le RKN ment).

Un script qui interdit les proxys publics et un petit manuel pour cela.

Source

Notre proxy est pro-occidental, je n'ai rencontré aucun problème/blocage pendant les journées de printemps et d'été fraîches, il n'a pas attiré de tâche créative non plus, donc je n'ai pas perdu le rythme et n'ai pas ajouté le préfixe dd* à la clé.

Le manuel "obtenir des statistiques/surveillance" selon les instructions officielles de MtprotoProxyTelegram ne fonctionne pas/obsolète, vous devrez réparer l'image docker.

Nous le réparons.

Le conteneur est toujours en cours d'exécution :

$ 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

Vérifions les statistiques :

$ curl http://localhost:2398/stats

curl : (7) Échec de la connexion au port 0.0.0.0 2398 : connexion refusée
Les statistiques ne sont toujours pas disponibles.!..

Découvrez l'ID du conteneur Docker :

$ docker ps

COMMANDE D'IMAGE D'ID DE CONTENEUR ÉTAT CRÉÉ NOMS DE PORTS
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba…" Il y a environ une heure Up Environ une minute 0.0.0.0:443->443/tcp mtproto-proxy2

Nous allons avec notre charte à l'intérieur du conteneur docker :

$ sudo docker exec -it f423c209cfdc /bin/bash

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

Et dans la toute dernière ligne du script "run.sh", ajoutez le drapeau manquant :

«--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 racine $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD"

Ajoutez "--http-stats", quelque chose comme ceci devrait fonctionner :

«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 (enregistrer/quitter nano/quitter le conteneur).

Redémarrez notre conteneur Docker :

$ docker restart mtproto-proxy2

Tout, maintenant sur commande :

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

Déploiement de votre télégramme MTProxy avec statistiques
Il y a beaucoup de "garbage" dans les statistiques (1/3 c'est à l'écran), créez un alias :

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

Nous obtenons ce pour quoi le conteneur docker a été peaufiné : le nombre de connexions et la charge :

$ telega

Déploiement de votre télégramme MTProxy avec statistiques
Le conteneur Docker est en cours d'exécution, les statistiques tournent.

Ressources dépensées

Aussi cool que vous soyez Stuart Redman, même vous laissez une marque sur votre culotte. Une image Docker en cours d'exécution laisse une grande empreinte.

Cela n'a aucun sens de décrire les avantages et les inconvénients des images docker, un conteneur docker est une mini-machine virtuelle qui consomme moins de ressources qu'une "vraie" machine virtuelle, comme VirtualBox, mais le fait.

1) Lancé avec ou sans statistiques docker-image, deux clients s'ébattent ou dix - les ressources sont utilisées ~ de la même manière : 75 % de l'ensemble des performances du processeur t2.micro.

2) On regarde le monitoring du serveur VPC :

Déploiement de votre télégramme MTProxy avec statistiques

D'après le graphique d'utilisation des ressources sur le VPC, nous voyons que le conteneur docker consomme constamment ~ 7,5 % du total max. Performances du processeur et le 28 mai, j'ai été arrêté intentionnellement/temporairement (Remarque - OpenVPN et pptp sont également en cours d'exécution sur le serveur).

Pourquoi une utilisation constante du processeur de 10 % est-elle la limite pour ce serveur ?

Parce qu'il y a des restrictions d'Amazon EC2 et qu'elles sont calculées en crédits :

Déploiement de votre télégramme MTProxy avec statistiques

1 crédit CPU = 1 CPU fonctionnant à 100% de charge pendant une minute, et nous avons 6 crédits (c'est-à-dire qu'aux pics, une utilisation à 100% du CPU est possible en 6 minutes, puis la puissance du CPU diminuera). Autres combinaisons : par exemple, 1 crédit CPU = 1 CPU fonctionnant à 50 % de charge pendant deux minutes (c'est-à-dire que nous pouvons utiliser le CPU à 50 % de charge pendant 12 minutes), ou, par exemple, une charge CPU constante de 10 % pendant tout le temps, etc...

résultats

  • Nous faisons partie de la "Résistance numérique". Fourni à leurs "pères et mères" un canal de communication fiable.
  • Si vous avez déployé MtprotoProxyTelegram et OpenVPN sur le serveur, mais pas plus, il n'y aura pas de retards / pings / échecs, mais si vous expérimentez constamment avec votre t2 / micro, attendez les freins de communication.
  • Mon ping à l'étranger est d'environ 100 à 250 ms, il n'y a pas de retard dans la communication vocale.
  • Coûts financiers pour tout "cela" (y compris les ressources VPC) = 0₽.

Réimpression de votre article.

UPD : Merci à certains habrausers pour leurs commentaires utiles, en effet, c'est possible (les statistiques sont-elles prises en charge ?), Il existe de meilleurs analogues de l'image officielle du docker Mtproto proxy Telegram.

Source: habr.com

Ajouter un commentaire