Het opzetten van je eigen MTProxy Telegram met statistieken

Het opzetten van je eigen MTProxy Telegram met statistieken

„Ik heb deze chaos geërfd,
te beginnen met de schaamteloze Zello; LinkedIn
en eindigend met 'alle anderen' op het Telegram-platform
in mijn wereld.

En toen, nukkig,
voegde de ambtenaar snel en luid toe:
maar ik zal hier (in IT) orde scheppen“
(…).

Durov gelooft terecht dat autoritaire staten bang voor hem, de cryptokid, moeten zijn, en de Roskomnadzor en de gouden schilden met hun DPI-filters hem niet echt zorgen baren»
(Politieke techniek)

Mijn technische beleid is eenvoudiger, ik kan hier mijn gedachten over onzorgvuldige blokkades in het runet opschrijven, maar ik denk dat vooruitstrevende burgers van Modern Russian en gebruikers van Habr de onprofessionaliteit van de zittende macht aan den lijve hebben ondervonden, dus ik beperk me tot één zin: ons technische beleid is 'Digitale Weerstand'. 'het waarborgen van een veilige communicatieroeping voor familie en vrienden'.

Het opzetten van een MTProto proxy Telegram

  • Technisch niveau van complexiteit — 'niet moeilijk', als je bijvoorbeeld deze handleiding volgt.
  • Betrouwbaarheidsniveau — 'boven gemiddeld': het docker-image werkt stabiel, het is niet nodig om het elke dag opnieuw op te starten, zoals de ontwikkelaars in hun officiële Telegram-documentatie hebben geschreven, maar het container bevat waarschijnlijk wel enkele kwetsbaarheden.
  • Niveau van weerstand/zorg — 10 ISIS-leden smeden hun complotten 'de familie gebruikt het', er is tot nu toe nooit een ban van de RKN gekomen (sinds het voorjaar).
  • Niveau van vertrouwen — 'publieke baby wantrouwen', het probleem ligt aan de kant van de klanten (sommige vrienden hebben een wantrouwende houding tegenover mijn MtprotoProxy).
  • Niveau van testosteron — 'niet hoger geworden'.
  • Financiële kosten — '0₽'.
  • Financiële beloning — 'hangt niet af van burger Durov'. Beheerste — de mogelijkheid van advertentieverplichting.

We zullen onze TelegramProxy opzetten op 'gratis/persoonlijke' mogelijkheden van Amazon-ec2: t2.micro. Ik heb gebruikt deze de machine.

Oké, we hebben onze gratis server, laten we naar de officiële website gaan dockerhub en download de docker-container.

Je hoeft geen beeld, bestand of toverknop te zoeken — 'die zijn er niet', alle magie gebeurt in de CLI:

$ docker pull telegrammessenger/proxy #afbeelding gedownload.

Maar installeer eerst docker voor de CLI:

sudo apt-get install docker.io docker

Vervolgens wordt in de officiële documentatie van MtprotoProxyTelegram ongeveer het volgende voorgesteld, laten we dit doen:

$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest #We starten onze container 'mtproto-proxy'.

Na deze opdracht verschijnt er een HEX-string in de terminaluitvoer, maar die is niet van belang voor ons.

Typ in de CLI:

$ docker logs mtproto-proxy

En we krijgen de benodigde gegevens:

Het opzetten van je eigen MTProxy Telegram met statistieken
In de uitvoer van deze log worden ons (vervangen):

A) ons server ip (extern ip van de server);
B) en een willekeurig geheim - een willekeurige string in HEX.

Voordat we onze MtproProxy registreren, moeten we de hoofd firewall boven iptables configureren (hoe je ook verkeer op deze VPC omleidt, het zal niet gehoorzaam zijn, omdat de hoofd firewall in Amazon-EC2 in de webinterface bevindt en een hogere prioriteit heeft dan iptables).

Ga naar "console Amazon-EC2" in Security Group en open binnenkomend poort 443 (logische maskering van verkeer voor nu).

Het opzetten van je eigen MTProxy Telegram met statistieken

Haal uit de log onze gegevens "ip en geheim" en ga naar de Telegram messenger, zoek de officiële MTProxy Admin Bot (@MTProxybot) en registreer onze MtproProxy: voer de opdracht [\/newproxy] in en geef [onze_ip:443] in, en daarna onze [geheim\/HEX].

Als je fouten maakt bij het invoeren van de gegevens, zal de bot boos zijn en je naar… sturen.

Als je de twee regels zonder fouten invult, ontvang je goedkeuring en een werkende link naar je actieve MtprotoProxyTelegram, die je met iedereen kunt delen.

Het opzetten van je eigen MTProxy Telegram met statistieken

Ook via deze bot kun je je sponsor kanaal toevoegen (maar niet de chat), waar je jouw ideeën aan de gebruikers die zich met jouw server, of je kunt ervoor kiezen om niet te “spammen” en je potentiële klanten niet te storen door het kanaal niet in de vastgezette lijst van de messenger te tonen.

Nog een paar woorden over de bot, daar kan je statistieken opvragen, maar "ook een kringeltje". Blijkbaar is "statistiek" toegankelijk wanneer er een menigte "profiteurs" achter je aan zit.

Monitoring

Hoeveel gebruikers kunnen we op onze server aansluiten? En wie/what is daar? Wat? En hoeveel?

Laten we kijken wat er in de officiële documentatie staat... Aha, zo doen:

$ curl http://localhost:2398/stats of zo $ docker exec mtproto-proxy curl http://localhost:2398/stats # en we krijgen de statistieken rechtstreeks in de CLI.

"Hou je zakken wijd" Bij de voorgestelde opdrachten zullen we altijd een dergelijke fout ontvangen:

«curl: (7) Verbinding met localhost poort 2398 mislukt: Verbinding geweigerd»

Onze proxy zal werken. Maar! Een kringeltje, geen statistiek gaan we krijgen.

We kunnen zaken doen voor de zij die het niet begrijpen: controleren

$ netstat -an | grep 2398 en...

Eerst dacht ik dat dit weer een fout was van de ontwikkelaars van Telegram (en dat denk ik nog steeds), maar daarna vond ik een tijdelijke oplossing: schuur de Docker-container.

Later kwam ik informatie tegen:

over de overheidsdans van Roskomnadzor rondom de 'statistieken'.

‘We hebben een deel van de openbare proxies op onze servers geblokkeerd, gebruikmakend van de databases van het project firehol. Dit project houdt lijsten bij van openbare proxies en maakt databases met hen.

Sinds dat moment (dat wil zeggen, al bijna twee dagen) is er geen enkel IP-adres van onze Russische proxy geblokkeerd.

3. We leggen uit hoe je een bijna onverwoestbare proxy voor Roskomnadzor kunt maken en delen een script voor het blokkeren van openbare proxies.

— Update de Docker-container (of daemon) van de MTProto proxy naar de nieuwste versie: RKN herkent oude versies aan de statistiekpoort, die op 0.0.0.0 gebonden was en zich duidelijk identificeerde voor het hele internet. Het is beter om de benodigde poorten te openen met iptables en de rest te sluiten (vergeet niet dat je in het geval van de Docker-container de FORWARD-regel moet gebruiken).

— Roskomnadzor heeft lang geleerd om verkeer te dumpen: ze zien verzoeken binnen HTTP- en SOCKS5-proxies, en ze zien ook de oude versie van de obfuscatietechniek van de MTProto proxy.

Wanneer klanten van bepaalde providers, waar dergelijke dumpers zijn geïnstalleerd, via zulke proxies verbinding maken met Telegram, ziet RKN dergelijke verzoeken en blokkeert deze proxies onmiddellijk. Hetzelfde geldt voor MTProto proxies met oude obfuscatie.

Oplossing: geef klanten die verbinding maken met de proxy een geheim, waarbij dd aan het begin staat (geef geen extra letters dd op in de instellingen van de mtproto proxy). Dit activeert de obfuscatieversie die dumpers niet kunnen bepalen.

En geen HTTP- en SOCKS5-proxies.

— Een hulpmiddel waarmee iedere eigenaar van een telegramproxy, die regelmatig door RKN wordt geblokkeerd, volledig (of bijna volledig) blokkades kan stopzetten (en bovendien kan bevestigen dat RKN liegt).

Een script dat openbare proxies blokkeert en een kleine handleiding daarbij."

→ Bron

Onze proxy is pro-westers, ik heb geen problemen/blokkades ondervonden in de lente en de koele zomerdagen, dit was ook geen creatieve taak, dus ik heb me niet beziggehouden met het verlies van tempo en heb de voorvoegsel dd* niet aan de sleutel toegevoegd.

De handleiding 'statistieken verkrijgen / monitoring' volgens de officiële instructies van MtprotoProxyTelegram is niet werkend / verouderd, we zullen de docker-afbeelding moeten repareren.

We repareren.

De container draait nog steeds:

$ docker stop mtproto-proxy # stop onze draaiende docker-container en start een nieuwe afbeelding met de gemiste statistieken vlag
$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config:/data -e SECRET=je_vorige_secret_hex telegrammessenger/proxy:latest

Laten we de statistieken controleren:

$ curl http://localhost:2398/stats

curl: (7) Verbinding met 0.0.0.0 poort 2398 mislukt: Verbinding geweigerd
Statistieken zijn nog steeds niet beschikbaar...

Laten we de ID van de docker-container achterhalen:

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest '/bin/sh -c '/bin/ba…' Ongeveer een uur geleden Up Ongeveer een minuut 0.0.0.0:443->443/tcp mtproto-proxy2

Laten we zonder verdere voorwaarden de docker-container binnen gaan:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

En voeg in de laatste regel van het script 'run.sh' de gemiste vlag toe:

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

Je voegt '--http-stats' toe, iets als dit zou het moeten worden:

'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 (opslaan/afsluiten van nano/afsluiten van de container).

We herstarten onze docker-container:

$ docker restart mtproto-proxy2

Dat is het, nu met het commando:

$ curl http://localhost:2398/stats #we krijgen uitgebreide statistieken

Het opzetten van je eigen MTProxy Telegram met statistieken
De statistieken bevatten veel 'rommel' (op de screenshot 1/3 ervan), we maken een alias:

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

We krijgen waar het om gaat bij het polijsten van de docker-container: het aantal verbindingen en de belasting:

$ telega

Het opzetten van je eigen MTProxy Telegram met statistieken
De docker-container draait, de statistieken zijn actief.

Verbruikte bronnen

Hoe cool je ook bent, Stuart Redman, zelfs jij laat een spoor van rotzooi achter op je ondergoed. Een werkende Docker-afbeelding laat een aanzienlijk spoor achter.

Het heeft geen zin om de voordelen en nadelen van docker-afbeeldingen uit te leggen, een docker-container is een mini-virtuele machine die minder middelen consumeert dan een 'echte' virtuele machine, bijvoorbeeld VirtualBox, maar verbruikt ook.

1) Draait met of zonder statistieken van de docker-afbeelding, of er nu twee of tien clients zijn, de middelen worden ongeveer evenveel gebruikt: 75% van de totale CPU-prestaties van t2.micro.

2) Laten we de monitoring van de VPC-server bekijken:

Het opzetten van je eigen MTProxy Telegram met statistieken

Uit de resourcegebruik grafiek op de VPC blijkt dat de docker-container constant ongeveer 7,5% van de totale maximale CPU-prestaties verbruikt en op 28 mei tijdelijk door mij is gestopt. (Opmerking - op de server draaien ook OpenVPN & pptp).

Waarom is 10% constante CPU-belasting de limiet voor deze server?

Omdat er beperkingen zijn vanuit Amazon EC2 en deze worden berekend in credits:

Het opzetten van je eigen MTProxy Telegram met statistieken

1 CPU-credit = 1 CPU die 100% belasting heeft gedurende één minuut, en we hebben 6 credits (dat wil zeggen, in pieken is 100% CPU-gebruik mogelijk gedurende 6 minuten, daarna zal de CPU-kracht afnemen). Andere combinaties: bijvoorbeeld, 1 CPU-credit = 1 CPU die gedurende twee minuten met 50% belasting werkt (dat betekent dat we de CPU gedurende 12 minuten met 50% belasting kunnen gebruiken), of bijvoorbeeld, constante 10% CPU-belasting gedurende de gehele tijd.

Conclusies

  • Wij zijn een stuk van de "Digitale Weerstand". We hebben ons ‘ouders’ voorzien van een betrouwbare communicatielijn.
  • Als je MtprotoProxy Telegram en OpenVPN op de server hebt draaien, maar niet meer, zullen er geen vertragingen/lags/storing zijn, maar als je constant experimenteert met je t2/micro, bereid je dan voor op verbindingsproblemen.
  • Mijn buitenlandse ping ligt rond de 100-250ms, vertragingen in spraakcommunicatie zijn niet merkbaar.
  • De financiële kosten voor dit alles (inclusief VPC-resources) = 0₽.

Herpublicatie van mijn artikel.

UPD: Dank aan sommige Habr-gebruikers voor nuttige opmerkingen, het lijkt er echt op dat er misschien (de statistieken worden ondersteund?) betere alternatieven zijn voor de officiële docker-image van Mtproto proxy Telegram.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster