Bereitstellen Ihres MTProxy-Telegramms mit Statistiken

Bereitstellen Ihres MTProxy-Telegramms mit Statistiken

„Ich habe dieses Chaos geerbt,
angefangen mit dem schamlosen Zello; LinkedIn
und endet mit „alle anderen“ auf der Telegram-Plattform
in meiner Welt.

Und dann Schluckauf,
Der Beamte fügte hastig und laut hinzu:
aber ich werde die Dinge in Ordnung bringen (hier in IT)“
(...).

Durov glaubt zu Recht, dass es autoritäre Staaten sind, die sich vor ihm, einem Cypherpunk, fürchten sollten, und Roskomnadzor und goldene Schilde mit ihren DPI-Filtern stören ihn nicht wirklich.
(Politische Technik)

Meine technische Richtlinie ist einfacher, ich kann hier meine Gedanken zum unvorsichtigen Blockieren in Runet beschreiben, aber ich glaube, dass die fortschrittlichen Bürger der modernen russischen und Habr-Benutzer die Unprofessionalität der aktuellen Regierung an ihrer eigenen Haut gespürt haben, deshalb werde ich mich darauf beschränken Ein einziger Satz: Unsere technische Richtlinie lautet „Digital Resistance“. „Verwandten und Freunden einen stabilen Kommunikationskanal bieten.“

Bereitstellen des MTProto-Proxy-Telegramms

  • Der technische Komplexitätsgrad ist „einfach“, wenn man beispielsweise diesem Spickzettel folgt.
  • Das Zuverlässigkeitsniveau ist „überdurchschnittlich“: Das Docker-Image funktioniert stabil, es muss nicht jeden Tag neu gestartet werden, wie die Entwickler in ihrer offiziellen Telegram-Dokumentation schreiben, aber der Container enthält wahrscheinlich einige Schwachstellen.
  • Das Ausmaß des Widerstands / der Angst – 10 ISIS-Mitglieder weben ihre Verschwörungen „von Verwandten aus“, das Verbot kam von der RKN nicht einmal ein einziges Mal (seit dem Frühjahr).
  • Die Vertrauensstufe ist „öffentliches Baby-Misstrauen“, ein Problem auf der Client-Seite (einige Freunde sind meinem MtprotoProxy gegenüber misstrauisch).
  • Testosteronspiegel – „ist nicht höher geworden.“
  • Finanzielle Kosten - „0₽“.
  • Finanzielle Belohnung – „hängt nicht vom Bürger Durov ab.“ Werbung – die Möglichkeit, Werbung durchzusetzen.

Wir werden unseren TelegramProxy auf die „freien/persönlichen“ Kapazitäten von Amazon-ec2 aufstocken: t2.micro. ich benutzte diese einen Wagen.

Okay, stellen Sie Ihren kostenlosen Server bereit und gehen Sie zur offiziellen Website Dockerhub und laden Sie den Docker-Container herunter.

Sie müssen nicht nach einem Bild, einer Datei oder einem magischen Knopf suchen – „sie sind nicht da“, die ganze Magie wird in der CLI erledigt:

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

Aber vorher installieren Sie Docker für CLI:

sudo apt-get install docker.io docker

Darüber hinaus wird uns in der offiziellen Dokumentation von MtprotoProxyTelegram angeboten, etwa Folgendes zu tun:

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

Nach diesem Befehl erscheint in der Terminalausgabe ein HEX-String, der uns aber nicht interessiert.

Wir schreiben in CLI:

$ docker logs mtproto-proxy

Und wir erhalten die erforderlichen Daten:

Bereitstellen Ihres MTProxy-Telegramms mit Statistiken
In der Ausgabe dieses Protokolls wird Folgendes angezeigt (verschmiert):

A) unsere Server-IP (externe Server-IP);
B) und ein zufälliges Geheimnis – eine zufällige Zeichenfolge in HEX.

Bevor Sie unseren MtproProxy registrieren, müssen Sie die Haupt-Firewall über iptables konfigurieren (egal wie Sie den Datenverkehr zu dieser VPC umleiten, es wird unschön sein, da sich die Haupt-Firewall in Amazon-EC2 in der Weboberfläche befindet und eine höhere Priorität hat). iptables ).

Wir gehen zu "Konsole Amazon-EC2“ in der Sicherheitsgruppe und öffnen Sie den eingehenden Port 443 (logische Maskierung). Verkehr zum ersten Mal).

Bereitstellen Ihres MTProxy-Telegramms mit Statistiken

Wir nehmen unsere „IP- und Geheim“-Daten aus dem Protokoll und gehen zum Telegram-Messenger, suchen den offiziellen MTProxy Admin Bot (@MTProxybot) und registrieren unseren MtproProxy: Führen Sie den Befehl [/newproxy] aus und geben Sie [our_ip:443] ein, und dann unser [geheimes /HEX].

Wenn Sie bei der Dateneingabe Fehler machen, wird der Bot wütend und schickt Sie an ...

Wenn Sie zwei Zeilen fehlerfrei ausfüllen, erhalten Sie eine Genehmigung und einen funktionierenden Link zu Ihrem aktuellen MtprotoProxyTelegram, den Sie mit jedem teilen können.

Bereitstellen Ihres MTProxy-Telegramms mit Statistiken

Außerdem können Sie über diesen Bot Ihren Sponsoring-Kanal (jedoch keinen Chat) hinzufügen, in dem Sie den Benutzern, die sich mit Ihrem Server verbunden haben, Ihre Ansichten aufdrängen, oder Sie können ohne „Spam“ Ihre potenziellen Kunden nicht belästigen Zeigt den Kanal in der angehefteten Messenger-Liste an.

Noch ein paar Worte zum Bot, bei dem man Statistiken anfordern kann, aber „auch ein Donut“. Anscheinend sind „Statistiken“ verfügbar, wenn man „eine Menge Trittbrettfahrer“ hinter Machatschkala hat.

Überwachung

Wie viele Benutzer können wir mit unserem Server verbinden? Und überhaupt, wer/was ist da? Was? Und wie viel?

Wir schauen uns an, was laut offizieller Dokumentation da ist ... Ja, hier, machen Sie es so:

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

„Halten Sie Ihre Tasche breiter“ Gemäß den vorgeschlagenen Befehlen erhalten wir immer eine ähnliche Fehlermeldung:

«curl: (7) Verbindung zum Localhost-Port 2398 fehlgeschlagen: Verbindung abgelehnt»

Unser Proxy wird funktionieren. Aber! Bagel, keine Statistiken, die wir bekommen.

Sie können etwas für Rotäugige tun: Überprüfen Sie

$ netstat -an | grep 2398 и...

Zuerst dachte ich, dass dies ein weiterer Fehler hinter den Telegram-Entwicklern sei (und ich denke immer noch), dann habe ich eine vorübergehende gute Lösung gefunden: Den Docker-Container mit einer Datei aufpolieren.

Später fiel mir eine Info auf:

über die Staatstänze von Roskomnadzor rund um die „Statistik“.

„Wir haben einige der öffentlichen Proxys auf unseren Servern mithilfe der Datenbanken des Firehol-Projekts blockiert. Dieses Projekt überwacht Listen mit öffentlichen Proxys und erstellt Datenbanken mit ihnen.

Seit diesem Moment (also bereits fast zwei Tage) wurde keine einzige IP-Adresse unseres russischen Proxys blockiert.

3. Wir erklären Ihnen, wie Sie einen Proxy erstellen, der für Roskomnadzor nahezu unverwundbar ist, und stellen Ihnen ein Skript zum Blockieren öffentlicher Proxys zur Verfügung.

- Aktualisieren Sie den MTProto-Proxy-Docker-Container (oder Daemon) auf die neueste Version: RKN berechnet alte Versionen anhand des Statistikports, der an 0.0.0.0 gebunden war und sich für das gesamte Internet eindeutig identifizierte. Besser noch: Öffnen Sie die erforderlichen Ports mit iptables und schließen Sie den Rest (denken Sie daran, dass Sie im Falle eines Docker-Containers die FORWARD-Regel verwenden sollten).

– Roskomnadzor hat schon vor langer Zeit gelernt, wie man Datenverkehr ableitet: Sie sehen Aufrufe innerhalb von HTTP- und SOCKS5-Proxys und sie sehen auch die alte Version der MTProto-Proxy-Verschleierung.

Wenn Clients einiger Anbieter, die solche Dumps installiert haben, über solche Proxys auf Telegram zugreifen, sieht das RKN solche Anfragen und blockiert diese Proxys sofort. Das Gleiche gilt für den MTProto-Proxy mit alter Verschleierung.

Lösung: Verteilen Sie das Geheimnis nur mit dd am Anfang an Clients, die sich mit dem Proxy verbinden (keine Notwendigkeit, zusätzliche Buchstaben dd in den Einstellungen des mtproto-Proxys selbst anzugeben). Dadurch wird eine Version der Verschleierung aktiviert, die Dumppiles nicht erkennen können.

Und keine HTTP- oder SOCKS5-Proxys.

- Anpassung, mit deren Hilfe jeder Inhaber eines Telegram-Proxys, der regelmäßig vom RKN gesperrt wird, die Sperrung komplett (oder fast komplett) beenden kann (und gleichzeitig sicherstellen kann, dass der RKN lügt).

Ein Skript, das öffentliche Proxys verbietet, und eine kleine Anleitung dazu.

Quelle

Unser Proxy ist pro-westlich, ich habe im Frühling und an kühlen Sommertagen keine Probleme/Blockaden festgestellt, es hat auch keine kreative Aufgabe angezogen, also habe ich nicht nachgelassen und das Präfix dd* nicht hinzugefügt der Schlüssel.

Das Handbuch „Statistiken abrufen/Überwachen“ gemäß den offiziellen Anweisungen von MtprotoProxyTelegram funktioniert nicht/veraltet, Sie müssen das Docker-Image reparieren.

Wir reparieren es.

Der Container läuft noch:

$ 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

Schauen wir uns die Statistiken an:

$ curl http://localhost:2398/stats

curl: (7) Verbindung zum 0.0.0.0-Port 2398 fehlgeschlagen: Verbindung abgelehnt
Statistiken sind noch nicht verfügbar.!..

Finden Sie die ID des Docker-Containers heraus:

$ docker ps

CONTAINER-ID-BILDBEFEHL ERSTELLTER STATUS-PORT-NAMEN
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba…" Vor etwa einer Stunde Hoch Etwa eine Minute 0.0.0.0:443->443/tcp mtproto-proxy2

Wir gehen mit unserer Charter in den Docker-Container:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

Und fügen Sie in der allerletzten Zeile des „run.sh“-Skripts das fehlende Flag hinzu:

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

Fügen Sie „--http-stats“ hinzu, etwa so sollte es funktionieren:

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

Strg+o/Strg+x/Strg+d (Speichern/Nano beenden/Container verlassen).

Starten Sie unseren Docker-Container neu:

$ docker restart mtproto-proxy2

Alles, jetzt auf Befehl:

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

Bereitstellen Ihres MTProxy-Telegramms mit Statistiken
Die Statistik enthält viel „Müll“ (1/3 davon ist auf dem Bildschirm), erstellen Sie einen Alias:

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

Wir erhalten, wofür der Docker-Container poliert wurde: die Anzahl der Verbindungen und die Last:

$ telega

Bereitstellen Ihres MTProxy-Telegramms mit Statistiken
Der Docker-Container läuft, die Statistiken drehen sich.

Aufgewandte Ressourcen

So cool du auch bist, Stuart Redman, selbst du hinterlässt Spuren auf deinem Höschen. Ein ausgeführtes Docker-Image hinterlässt einen großen Fußabdruck.

Es macht keinen Sinn, die Vor- und Nachteile von Docker-Images zu beschreiben. Ein Docker-Container ist eine mini-virtuelle Maschine, die weniger Ressourcen verbraucht als eine „echte“ virtuelle Maschine wie VirtualBox, aber das tut sie.

1) Mit oder ohne Docker-Image-Statistiken gestartet, tummeln sich zwei oder zehn Clients – Ressourcen werden ~ auf die gleiche Weise genutzt: 75 % der gesamten CPU-T2.Micro-Leistung.

2) Wir schauen uns die Überwachung des VPC-Servers an:

Bereitstellen Ihres MTProxy-Telegramms mit Statistiken

Aus dem Ressourcenauslastungsdiagramm auf der VPC sehen wir, dass der Docker-Container ständig ~ 7,5 % der gesamten max. Kapazität verbraucht. Die CPU-Leistung wurde am 28. Mai von mir absichtlich/vorübergehend gestoppt (Hinweis – OpenVPN und pptp laufen auch auf dem Server).

Warum ist eine konstante CPU-Auslastung von 10 % die Grenze für diesen Server?

Da es Einschränkungen durch Amazon EC2 gibt und diese in Credits berechnet werden:

Bereitstellen Ihres MTProxy-Telegramms mit Statistiken

1 CPU-Credit = 1 CPU, die eine Minute lang mit 100 % Auslastung arbeitet, und wir haben 6 Credits (d. h. bei Spitzen ist eine 100 %ige CPU-Auslastung innerhalb von 6 Minuten möglich, dann nimmt die CPU-Leistung ab). Andere Kombinationen: zum Beispiel 1 CPU-Guthaben = 1 CPU läuft zwei Minuten lang mit 50 % Auslastung (d. h. wir können die CPU 50 Minuten lang mit 12 % Auslastung nutzen), oder zum Beispiel eine konstante 10 %-ige CPU-Auslastung währenddessen die ganze Zeit usw.

Befund

  • Wir sind Teil des „Digital Resistance“. Bietet ihren „Vätern und Müttern“ einen zuverlässigen Kommunikationskanal.
  • Wenn Sie MtprotoProxyTelegram und OpenVPN auf dem Server bereitgestellt haben, aber nicht mehr, wird es keine Verzögerungen/Pings/Ausfälle geben, aber wenn Sie ständig mit Ihrem t2/micro experimentieren, dann warten Sie auf Kommunikationsbremsen.
  • Mein Ping im Ausland beträgt ca. 100–250 ms, es gibt keine Verzögerungen bei der Sprachkommunikation.
  • Finanzielle Kosten für alles „dies“ (einschließlich VPC-Ressourcen) = 0₽.

Nachdruck Ihres Artikels.

UPD: Vielen Dank an einige Habrauser für nützliche Kommentare. Tatsächlich ist es möglich (werden die Statistiken unterstützt?), dass es bessere Analoga des offiziellen Mtproto-Proxy-Telegram-Docker-Images gibt.

Source: habr.com

Kommentar hinzufügen