
âIch habe dieses Chaos geerbt,
begonnen mit skrupellosen Zello; LinkedIn
und endend mit âallen anderenâ auf der Telegram-Plattform
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 ist der Meinung, dass autoritĂ€re Staaten Angst vor ihm, dem Kryptonauten, haben sollten, wĂ€hrend Roskomnadzor und Goldene Schilde mit ihren DPI-Filtern ihn kaum störenâ
(Politische Technik)
Meine technische Politik ist einfacher; ich könnte hier meine Gedanken zu sorglosen Sperrungen im Runet ausfĂŒhren, aber ich nehme an, dass progressiv denkende BĂŒrger des modernen Russlands und Nutzer von Habr auf eigene Haut die UnprofessionalitĂ€t der aktuellen Macht verspĂŒrt haben, deshalb beschrĂ€nke ich mich auf einen einzigen Satz: unsere technische Politik ist âDigitaler Widerstandâ. âGewĂ€hrleistung eines stabilen Kommunikationskanals fĂŒr Familie und Freundeâ.
Bereitstellung von MTProto Proxy Telegram
- Technische Schwierigkeitsstufe â ânicht schwierigâ, wenn man zum Beispiel dieser Anleitung folgt.
- ZuverlĂ€ssigkeitslevel â âĂŒberdurchschnittlichâ: Das Docker-Image lĂ€uft stabil, es ist nicht nötig, es tĂ€glich neu zu starten, wie die Entwickler in ihrer offiziellen Dokumentation von Telegram geschrieben haben, aber es enthĂ€lt sicherlich einige SicherheitsanfĂ€lligkeiten.
- Widerstands-/Angstlevel â 10 Mitglieder der IGIL spinnen ihre Verschwörungen âdie Verwandten nutzen esâ, es gab bisher keinen Bann vom RKN (seit FrĂŒhjahr).
- Vertrauensniveau â âöffentliches Baby-Misstrauenâ, das Problem liegt auf der Seite der Kunden (einige Freunde stehen meinem MtprotoProxy misstrauisch gegenĂŒber).
- Testosteronlevel â âhöher ist nicht gewordenâ.
- Finanzielle Kosten â â0âœâ.
- Finanzielle Belohnung â âhĂ€ngt nicht von BĂŒrger Durov abâ. Anreiz â die Möglichkeit, Werbung aufzuzwingen.
Wir werden unseren TelegramProxy auf den âkostenlosen/persönlichenâ Ressourcen von Amazon EC2: t2.micro starten. Ich habe dieses GerĂ€t verwendet.
Okay, wir haben unseren kostenlosen der Server, gehen zur offiziellen Website dockerhub und laden den Docker-Container herunter.
Es ist nicht notwendig, nach einem Image, einer Datei oder einem magischen Knopf zu suchen â âdie gibt es nichtâ, die ganze Magie geschieht im CLI:
$ docker pull telegrammessenger/proxy #Image heruntergeladen.Aber installieren Sie zuerst Docker fĂŒr das CLI:
sudo apt-get install docker.io dockerIn der offiziellen Dokumentation von MtprotoProxyTelegram wird uns Folgendes vorgeschlagen:
$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest # wir starten unseren Container «mtproto-proxy».
Nach diesem Befehl erscheint eine HEX-Zeichenfolge im Terminalausgang, aber die interessiert uns nicht.
Geben Sie im CLI ein:
$ docker logs mtproto-proxyUnd erhalten Sie die benötigten Daten:

Im Auszug dieses Logs sehen wir (verpixelt):
A) unsere Server-IP (externe IP des Servers);
B) und ein zufĂ€lliges Geheimnis â eine zufĂ€llige Zeichenfolge in HEX.
Bevor wir unseren MtproProxy registrieren, mĂŒssen wir die Hauptfirewall ĂŒber iptables konfigurieren (egal wie Sie den Datenverkehr in dieser VPC umleiten, es wird nicht funktionieren, da die wichtigste Firewall in Amazon-EC2 sich im Web-Interface befindet und eine höhere PrioritĂ€t als iptables hat).
Gehen Sie zu der âKonsole Amazon-EC2â in der Sicherheitsgruppe und öffnen Sie den eingehenden Port 443 (logische Maskierung des Datenverkehrs fĂŒr die Anfangszeit).

Nehmen Sie die Daten âIP und Geheimnisâ aus dem Log und gehen Sie zu Telegram, suchen Sie den offiziellen MTProxy Admin Bot (@MTProxybot) und registrieren Sie unseren MtproProxy: FĂŒhren Sie den Befehl [/newproxy] aus und geben Sie [unsere_ip:443] ein, gefolgt von unserem [geheimen/HEX].
Wenn Sie bei der Dateneingabe einen Fehler machen, wird der Bot verÀrgert sein und Sie an⊠senden.
Wenn Sie zwei Zeilen fehlerfrei ausfĂŒllen, erhalten Sie die Genehmigung und einen funktionierenden Link zu Ihrem aktiven MtprotoProxyTelegram, den Sie mit jedem teilen können.

Ăber diesen Bot können Sie auch Ihren Sponsor-Kanal (aber keinen Chat) hinzufĂŒgen, in dem Sie Ihre Ansichten den Nutzern aufzwingen, die sich mit Ihrem verbinden. Server, oder Sie können auf "Spam" verzichten und potenzielle Kunden nicht belĂ€stigen, indem Sie den Kanal nicht in der angepinnten Liste des Messengers anzeigen.
Noch ein paar Worte ĂŒber den Bot: Man kann Statistiken anfordern, aber "auch ein Donut". Offensichtlich sind Statistiken nur verfĂŒgbar, wenn eine "Menge von Heuschrecken" hinter Ihnen steht.
Ăberwachung
Wie viele Nutzer können wir auf unseren Server anschlieĂen? Und ĂŒberhaupt, wer/was ist das? Was? Und wie viele?
Lassen Sie uns sehen, was die offizielle Dokumentation dazu sagt⊠Okay, so machen Sie das:
$ curl http://localhost:2398/stats oder so $ docker exec mtproto-proxy curl http://localhost:2398/stats # und uns wird die Statistik direkt im CLI angezeigt."Halten Sie die Taschen weitâ Mit den vorgeschlagenen Befehlen werden wir immer einen Ă€hnlichen Fehler erhalten:
«curl: (7) Verbindung zum localhost Port 2398 fehlgeschlagen: Verbindung abgelehnt»
Unser Proxy wird funktionieren. Aber! Einen Bagel, und keine Statistiken, die wir erhalten werden.
Wir können Aufgaben fĂŒr die RotĂ€ugigen erledigen: prĂŒfen
$ netstat -an | grep 2398 und...Zuerst dachte ich, das sei ein weiteres Problem der Telegram-Entwickler (und ich denke bis heute so), dann fand ich eine vorĂŒbergehende, anstĂ€ndige Lösung: den Docker-Container mit einer Feile abzurunden.
SpÀter stieà ich auf Informationen:
ĂŒber die staatsgetragenen TĂ€nze der Roskomnadsor rund um die «Statistik».
«Wir haben auf unseren Servern einen Teil der öffentlichen Proxys blockiert, indem wir die Datenbanken des Projekts firehol genutzt haben. Dieses Projekt ĂŒberwacht Listen öffentlicher Proxys und erstellt Datenbanken damit.
Seit diesem Moment (also seit fast zwei Tagen) wurde keine einzige IP-Adresse unseres russischen Proxys blockiert.
3. Wir erklĂ€ren, wie man einen nahezu unverwundbaren Proxy fĂŒr den Roskomnadsor erstellt und teilen das Skript zur Blockierung öffentlicher Proxys.
â Aktualisieren Sie den Docker-Container (oder Daemon) des MTProto-Proxy auf die neueste Version: Die RKN erkennt alte Versionen ĂŒber den Statistikport, der auf 0.0.0.0 gebunden ist und sich eindeutig im gesamten Internet identifiziert. Am besten öffnen Sie die benötigten Ports mit iptables und schlieĂen die anderen â beachten Sie, dass bei einem Docker-Container die Regel FORWARD verwendet werden sollte.
â Der Roskomnadsor hat lĂ€ngst gelernt, den Datenverkehr zu dumpen: Sie sehen Anfragen innerhalb von HTTP- und SOCKS5-Proxys und erkennen auch die alte Version der Obfuskation des MTProto-Proxys.
Wenn Kunden bestimmter Anbieter, die solche Dump-Tools installiert haben, ĂŒber solche Proxys auf Telegram zugreifen, erkennt die RKN diese Anfragen und blockiert sofort diese Proxys. Dasselbe gilt fĂŒr MTProto-Proxys mit alter Obfuskation.
Lösung: Verteilen Sie an die Kunden, die sich mit dem Proxy verbinden, ein Secret, das nur mit dd am Anfang beginnt (es ist nicht notwendig, zusÀtzliche Buchstaben dd in den Einstellungen des MTProto-Proxys anzugeben). Dies aktiviert die Version der Obfuskation, die von Dump-Tools nicht erkannt wird.
Und keine HTTP- und SOCKS5-Proxys.
â Ein Tool, das jedem Besitzer eines Telegram-Proxys, der regelmĂ€Ăig von der RKN blockiert wird, ermöglicht, die Blockierungen vollstĂ€ndig (oder fast vollstĂ€ndig) zu stoppen und gleichzeitig zu ĂŒberprĂŒfen, dass die RKN lĂŒgt.
Ein Skript, das öffentliche Proxys blockiert, sowie eine kurze Anleitung dazu.
â Quelle
Unser Proxy ist westlich orientiert; ich habe wĂ€hrend der FrĂŒhlingstage und kĂŒhlen Sommertage keine Probleme oder Blockierungen festgestellt, sodass ich mich nicht mit der Tempoverzögerung beschĂ€ftigt habe und kein dd*-PrĂ€fix zum SchlĂŒssel hinzugefĂŒgt habe.
Die Anleitung zur "Statistikerfassung/Ăberwachung" entsprechend der offiziellen Anleitung von MtprotoProxyTelegram ist nicht funktionsfĂ€hig/ĂŒberholt; wir mĂŒssen das Docker-Image reparieren.
Wir reparieren.
Der Container lÀuft immer noch:
$ docker stop mtproto-proxy #stoppen Sie unseren laufenden Docker-Container und starten Sie ein neues Image mit der ausgelassenen Statistikflag.
$ 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 Statistiken:
$ curl http://localhost:2398/statscurl: (7) Verbindung zu 0.0.0.0 Port 2398 fehlgeschlagen: Verbindung abgelehnt
Statistik ist immer noch nicht verfĂŒgbar .!..
Lassen Sie uns die ID des Docker-Containers herausfinden:
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest «/bin/sh -c â/bin/baâŠÂ» Vor etwa einer Stunde hochgeladen Vor etwa einer Minute 0.0.0.0:443->443/tcp mtproto-proxy2
Wir gehen mit unseren eigenen 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, es sollte etwa so aussehen:
«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/aussteigen aus nano/Container verlassen).
Wir starten unseren Docker-Container neu:
$ docker restart mtproto-proxy2Alles klar, jetzt mit dem Befehl:
$ curl http://localhost:2398/stats #erhalten umfangreiche Statistiken
In den Statistiken gibt es viel «MĂŒll» (auf dem Screenshot 1/3 davon), erstellen wir ein Alias:
$ echo "alias telega='curl localhost:2398/stats | grep -e total_special -e load_average_total'" >> .bashrc && bashWir erhalten, wofĂŒr wir den Docker-Container verfeinert haben: Anzahl der Verbindungen und Last:
$ telega
Der Docker-Container lÀuft, die Statistik wird berechnet.
Verbrauchte Ressourcen
Egal wie cool du bist, Stuart Redman, selbst du hinterlĂ€sst Spuren von Dreck in deiner UnterwĂ€sche. Ein aktives Docker-Image hinterlĂ€sst einen merklichen FuĂabdruck.
Es macht keinen Sinn, die Vor- und Nachteile von Docker-Images detailliert darzulegen; ein Docker-Container ist eine Mini-Virtual Machine, die weniger Ressourcen verbraucht als eine 'echte' virtuelle Maschine, wie zum Beispiel VirtualBox, aber dennoch Ressourcen benötigt.
1) Ob mit oder ohne Statistik, ein Docker-Image lĂ€uft, ob zwei Clients aktiv sind oder zehn â die Ressourcen werden ungefĂ€hr gleich genutzt: 75 % der gesamten CPU-Leistung von t2.micro.
2) Schauen wir uns das Monitoring des VPC-Servers an:

Der Ressourcenauslastungsgraf des VPC zeigt, dass der Docker-Container konstant etwa 7,5 % der maximalen CPU-Leistung verbraucht, und am 28. Mai wurde er von mir absichtlich/temporĂ€r gestoppt. (Hinweis â auf dem Server laufen auch OpenVPN & pptp).
Warum ist eine konstante CPU-Auslastung von 10 % die Grenze fĂŒr diesen Server?
Weil es EinschrÀnkungen seitens Amazon EC2 gibt, die in Credits berechnet werden.

1 CPU-Kredit = 1 CPU, der mit 100 % Auslastung fĂŒr eine Minute arbeitet, und wir haben 6 Kredite (das bedeutet, dass bei Spitzenzeiten eine 100%-ige CPU-Auslastung fĂŒr 6 Minuten möglich ist, danach sinkt die CPU-Leistung). Andere Kombinationen: Zum Beispiel, 1 CPU-Kredit = 1 CPU, die mit 50 % Auslastung fĂŒr zwei Minuten arbeitet (d.h., wir können die CPU mit 50 % Auslastung ĂŒber 12 Minuten nutzen), oder zur Dauer von 10 % Auslastung der CPU wĂ€hrend der gesamten Zeit usw.
Fazit
- Wir sind ein Teil des "Digitalen Widerstands". Wir haben unseren âMĂŒttern und VĂ€ternâ eine zuverlĂ€ssige Kommunikationsverbindung bereitgestellt.
- Wenn auf Ihrem Server MtprotoProxyTelegram und OpenVPN eingerichtet sind, aber nicht mehr, wird es keine Verzögerungen/Pings/AusfÀlle geben. Wenn Sie jedoch stÀndig mit Ihrem t2/micro experimentieren, erwarten Sie Verbindungsprobleme.
- Mein Ping ĂŒber den Ozean betrĂ€gt ~100-250 ms, Verzögerungen in der SprachĂŒbertragung sind nicht spĂŒrbar.
- Die finanziellen Kosten fĂŒr all das (einschlieĂlich der Ressourcen von VPC) betragen 0 âœ.
Wiedergabe meines eigenen Artikels.
UPD: Vielen Dank an einige Habr-Nutzer fĂŒr die nĂŒtzlichen Kommentare, tatsĂ€chlich könnte es (unterstĂŒtzt durch Statistiken?) bessere Alternativen zum offiziellen Docker-Image von Mtproto Proxy Telegram geben.
Quelle: habr.com
