
„Ich habe dieses Durcheinander geerbt,
angefangen mit skrupellosen Zello; LinkedIn
und endend mit „allen anderen“ auf der Plattform Telegram
in meiner Welt.Und dann, nach einem Schluckauf,
fügte der Beamte hastig und laut hinzu:
aber ich werde hier (in der IT) Ordnung schaffen“
(…).
Durov hält zu Recht, dass autoritäre Staaten Angst vor ihm, dem Kryptoprofi, haben sollten, während die Roskomnadsors und goldenen Schilde mit ihren DPI-Filtern ihn nicht wirklich stören»
(Politische Technik)
Meine technische Politik ist simpler, ich kann hier meine Überlegungen zu sorglosen Blockaden im Runet darlegen, aber ich glaube, dass fortschrittliche Bürger des modernen Russlands und Nutzer von Habr das Unprofessionalismus der regierenden Macht am eigenen Leib gespürt haben, daher beschränke ich mich auf einen einzigen Satz: unsere technische Politik ist „Digitaler Widerstand“. „Sicherheit für Familie und Freunde durch einen stabilen Kommunikationskanal“.
Bereitstellung von MTProto Proxy Telegram
- Schwierigkeitsgrad — „nicht kompliziert“, wenn man beispielsweise diesem Handzettel folgt.
- Zuverlässigkeitsgrad — „über dem Durchschnitt“: Das Docker-Image funktioniert stabil, es ist nicht erforderlich, es täglich neu zu starten, wie die Entwickler in ihrer offiziellen Telegram-Dokumentation geschrieben haben, aber der Container enthält mit Sicherheit einige Sicherheitsanfälligkeiten.
- Widerstands-/Angstgrad — 10 IS-Kämpfer spinnen ihre Verschwörungen mit „Familie benutzt es“, ein Bann kam seit dem Frühling nie vom RKN.
- Vertrauensgrad — „öffentliches Baby-Misstrauen“, das Problem liegt auf der Seite der Kunden (einige Freunde stehen meinem MtprotoProxy misstrauisch gegenüber).
- Testosteronspiegel — „nicht gestiegen“.
- Finanzielle Ausgaben — „0₽“.
- Finanzielle Belohnung — „hingt nicht von Bürger Durov ab“. Anreiz — Möglichkeit, Werbung aufzuzwingen.
Wir werden unser TelegramProxy auf „kostenlosen/persönlichen“ Ressourcen von Amazon-ec2: t2.micro betreiben. Ich habe diese Maschine verwendet. Okay, wir haben unser kostenloses
, gehen zur offiziellen Website Serverdockerhub und laden den Docker-Container herunter. Es ist nicht nötig, nach einem bestimmten Image, einer Datei oder einem Zauberbutton zu suchen — „gibt es nicht“, die ganze Magie geschieht in der CLI:
$ docker pull telegrammessenger/proxy #Image heruntergeladen.
Aber vor „diesem“ stellen Sie Docker für die CLI ein:sudo apt-get install docker.io docker
Danach schlagen uns die offiziellen Dokumentationen von MtprotoProxyTelegram vor, Folgendes zu tun:In der offiziellen Dokumentation von MtprotoProxyTelegram wird uns vorgeschlagen, Folgendes zu tun:
$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest # starten wir unseren Container «mtproto-proxy».
Nach diesem Befehl wird eine HEX-Zeichenfolge in der Terminalausgabe erscheinen, die uns jedoch nicht interessiert.
Geben Sie im CLI ein:
$ docker logs mtproto-proxyUnd wir erhalten die benötigten Daten:

In der Ausgabe dieses Logs sehen wir (verpixelt):
A) unsere Server-IP (externe Server-IP);
B) und das zufällige Geheimnis — eine zufällige Zeichenfolge in HEX.
Bevor wir unseren MtproProxy registrieren, müssen wir die Hauptfirewall über iptables konfigurieren (egal wie Sie den Verkehr in diesem VPC umleiten, er wird ungehorsam sein, da die wichtigste Firewall in Amazon-EC2 sich im Web-Interface befindet und eine höhere Priorität als iptables hat).
Wir gehen zu «Konsole Amazon-EC2» in die Sicherheitsgruppe und öffnen den eingehenden Port 443 (sinnvolle Maskierung des Verkehrs für die erste Zeit).

Wir nehmen unsere Daten «IP und Geheimnis» aus dem Log und gehen zum Messenger Telegram, finden den offiziellen MTProxy Admin Bot (@MTProxybot) und registrieren unseren MtproProxy: wir führen den Befehl [\/newproxy] aus und geben [unser_ip:443] ein, und danach unser [geheimnis\/HEX].
Wenn Sie beim Eingeben der Daten einen Fehler machen, wird der Bot wütend und schickt Sie auf…
Wenn Sie zwei Zeilen ohne Fehler ausfüllen, erhalten Sie die Genehmigung und einen funktionierenden Link zu Ihrem aktiven MtprotoProxyTelegram, den Sie mit jedem teilen können.

Mit diesem Bot können Sie auch Ihren Sponsorenkanal hinzufügen (aber keinen Chat), wo Sie Ihre Ansichten den Nutzern aufzwingen, die sich mit Ihrem zu einem Server, oder Sie können es vermeiden, «Spam» zu senden und Ihre potenziellen Kunden nicht zu belästigen, indem Sie den Kanal nicht in der angehefteten Liste des Messengers anzeigen.
Noch ein paar Worte zu dem Bot, dort können Sie Statistiken anfordern, aber «auch ein Donut». Offensichtlich ist die «Statistik» verfügbar, wenn Sie von Machatschkala «einer Gruppe von Schmarotzern» verfolgt werden.
Überwachung
Und wie viele Nutzer können wir mit unserem Server verbinden? Und überhaupt, wer/was ist da? Was? Und wie viele?
Sehen wir uns an, was die offizielle Dokumentation sagt… Aha, so machen:
$ curl http://localhost:2398/stats oder so $ docker exec mtproto-proxy curl http://localhost:2398/stats # und wir erhalten die Statistiken direkt im CLI.«Halte deinen Geldbeutel weit offen» Bei den vorgeschlagenen Befehlen werden wir immer einen ähnlichen Fehler erhalten:
«curl: (7) Failed to connect to localhost port 2398: Verbindung abgelehnt»
Proxy wird funktionieren. Aber! Einen Donut und keine Statistik erhalten wir.
Wir können uns mit den roten Augen beschäftigen: überprüfen
$ netstat -an | grep 2398 und...Zunächst dachte ich, dass es ein weiterer Fehler seitens der Entwickler von Telegram sei (und ich denke immer noch so), fand jedoch eine temporäre, ziemlich gute Lösung: die Docker-Container mit einer Feile zu bearbeiten.
Später stieß ich auf Informationen:
über die staatlichen Aktivitäten von Roskomnadzor rund um die „Statistik“.
„Wir haben auf unseren Servern einige öffentliche Proxys blockiert, indem wir die Datenbanken des Projekts firehol genutzt haben. Dieses Projekt überwacht die Listen öffentlicher Proxys und erstellt Datenbanken mit ihnen.
Seit diesem Zeitpunkt (also bereits fast zwei Tage) wurde keine einzige IP-Adresse unseres russischen Proxys blockiert.
3. Wir erklären, wie man einen für Roskomnadzor nahezu unverwundbaren Proxy erstellt und teilen ein Skript zur Blockierung öffentlicher Proxys.
— Aktualisieren Sie den Docker-Container (oder Dienst) MTProto-Proxy auf die neueste Version: RKN erkennt alte Versionen am Statistik-Port, der auf 0.0.0.0 gebunden war und sich somit eindeutig im Internet identifizierte. Am besten — öffnen Sie die benötigten Ports mit Hilfe von iptables, und schließen Sie die anderen — denken Sie daran, dass beim Docker-Container die Regel FORWARD verwendet werden sollte.
— Roskomnadzor hat schon lange gelernt, den Datenverkehr zu dumpen: Sie sehen Anfragen innerhalb von HTTP- und SOCKS5-Proxys und erkennen auch die alte Version der Obfuskation von MTProto-Proxy.
Wenn Kunden einiger Anbieter, auf deren Seite solche Dumps laufen, über solche Proxys auf Telegram zugreifen, sieht RKN diese Anfragen und blockiert sofort diese Proxys. Das Gleiche gilt für MTProto-Proxys mit alter Obfuskation.
Lösung: Geben Sie den Kunden, die sich mit dem Proxy verbinden, ein Secret mit dd zu Beginn (Zusätzliche Buchstaben dd müssen nicht in den Einstellungen des MTProto-Proxys angegeben werden). Dies aktiviert die Version der Obfuskation, die Dump-Tools nicht erkennen können.
Und keine HTTP- und SOCKS5-Proxys.
— Ein Trick, mit dem jeder Besitzer eines Telegram-Proxys, der regelmäßig von RKN gesperrt wird, die Sperrungen vollständig (oder fast vollständig) einstellen kann (und gleichzeitig sicherstellen kann, dass RKN lügt).
Ein Skript, das öffentliche Proxys bannt und eine kleine Anleitung dazu.
→ Quelle
Unser Proxy ist prowestlich, ich habe in den frischen und kühlen Sommertagen keine Probleme/Sperrungen erlebt, es war auch keine kreative Herausforderung, also habe ich mich nicht mit einem Verlust an Tempo beschäftigt und den Präfix dd* nicht zum Schlüssel hinzugefügt.
Das Handbuch „Statistik erhalten / Monitoring“ gemäß der offiziellen MtprotoProxyTelegram-Anleitung ist außer Betrieb / veraltet, und es muss das Docker-Image repariert werden.
Wir reparieren.
Der Container läuft noch:
$ docker stop mtproto-proxy # остановим наш запущенный docker-контейнер und starten ein neues Image mit dem fehlenden Statistik-Flag
$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config: /data -e SECRET=Ihr_vorheriger_Secret_hex telegrammessenger/proxy:latest
Überprüfen wir die Statistik:
$ curl http://localhost:2398/statscurl: (7) Verbindung zu 0.0.0.0 Port 2398 fehlgeschlagen: Die Verbindung wurde abgelehnt
Die Statistik ist immer noch nicht verfügbar. ..!
Wir erfahren die ID des Docker-Containers:
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest „/bin/sh -c ‘/bin/ba…“ Vor etwa einer Stunde Hoch Vor etwa einer Minute 0.0.0.0:443->443/tcp mtproto-proxy2
Gehen wir mit unseren Regeln in den Docker-Container:
$ sudo docker exec -it f423c209cfdc /bin/bash
$ apt-get update
$ apt-get install nano
$ nano -$ run.sh
Und in der letzten Zeile des Skripts „run.sh“ fügen wir 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; so etwas sollte das Ergebnis sein:
„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 (speichern / aus nano aussteigen / aus dem Container aussteigen).
Wir starten unseren Docker-Container neu:
$ docker restart mtproto-proxy2Fertig, jetzt mit dem Befehl:
$ curl http://localhost:2398/stats # erhalten wir umfassende Statistiken
In den Statistiken gibt es viel „Müll“ (auf dem Screenshot 1/3 davon), wir erstellen ein Alias:
$ echo "alias telega='curl localhost:2398/stats | grep -e total_special -e load_average_total'" >> .bashrc && bashWir erhalten das, wofür wir den Docker-Container poliert haben: die Anzahl der Verbindungen und die Last:
$ telega
Der Docker-Container läuft, die Statistik funktioniert.
Verbrauchte Ressourcen
Wie cool du auch bist, Stuart Redman, selbst du hinterlässt einen Fleck von Scheiße auf deiner Unterhose. Ein funktionierendes Docker-Image hinterlässt einen ordentlichen Fußabdruck.
Es macht keinen Sinn, die Vor- und Nachteile von Docker-Images zu erläutern; ein Docker-Container ist eine Mini-Virtualisierungsmaschine, die weniger Ressourcen verbraucht als eine „echte“ virtuelle Maschine wie VirtualBox, aber trotzdem Ressourcen benötigt.
1) Egal, ob das Docker-Image mit oder ohne Statistik läuft, ob zwei Clients oder zehn aktiv sind – die Ressourcen werden ungefähr gleich genutzt: 75% der gesamten CPU-Leistung eines t2.micro.
2) Schauen wir uns das Monitoring des VPC-Servers an:

Aus dem Ressourcenverwertungsdiagramm auf VPC sehen wir, dass der Docker-Container ständig etwa 7,5% der gesamten maximalen CPU-Leistung verbraucht und am 28. Mai von mir absichtlich/zurückhaltend gestoppt wurde. (Hinweis – auf dem Server laufen auch OpenVPN & pptp).
Warum ist eine dauerhafte CPU-Auslastung von 10% das Maximum für diesen Server?
Weil es von Amazon EC2 Beschränkungen gibt, die in Credits berechnet werden:

1 CPU-Credit = 1 CPU, die mit 100% Auslastung für eine Minute läuft, und wir haben 6 Credits (das bedeutet, dass eine 100%-ige CPU-Auslastung in Spitzenzeiten für bis zu 6 Minuten möglich ist, danach wird die CPU-Leistung reduziert). Andere Kombinationen: Zum Beispiel 1 CPU-Credit = 1 CPU, die mit 50% Auslastung für zwei Minuten läuft (das heißt, wir können die CPU mit 50% Auslastung für insgesamt 12 Minuten nutzen) oder, ein Beispiel, eine konstante 10%-ige CPU-Auslastung über die gesamte Zeit.
Das DBMS Tarantool ist ein attraktives, zukunftsträchtiges Produkt zur Erstellung von hochbelasteten Anwendungen.
- Wir sind ein Teil des „Digitalen Widerstands“. Wir haben unseren „Familien“ einen zuverlässigen Kommunikationskanal ermöglicht.
- Wenn auf dem Server MtprotoProxyTelegram und OpenVPN, aber nicht mehr, betreiben, wird es keine Verzögerungen/Pings/Unterbrechungen geben, aber wenn Sie ständig mit Ihrem t2/micro experimentieren, erwarten Sie Verbindungsprobleme.
- Mein überseeischer Ping liegt bei ~100-250 ms, Verzögerungen in der Sprachkommunikation sind nicht spürbar.
- Die finanziellen Kosten für alles „dies“ (einschließlich der VPC-Ressourcen) betragen 0₽.
Wiedergabe meines Artikels.
UPD: Danke an einige Habr-User für die hilfreichen Kommentare, tatsächlich könnte es (wird die Statistik unterstützt?) bessere Alternativen zum offiziellen Docker-Image von Mtproto-Proxy Telegram geben.
Quelle: habr.com
