
Dědictví této nepořádku jsem podědil,
počínaje bezostyšnými Zello; LinkedIn
a konče "všemi ostatními" na platformě Telegram
v mém světě.A pak, když se zakuckal,
úředník rychle a nahlas dodal:
ale já zde (v IT) zavádím pořádek"
(…).
Durov s oprávněním tvrdí, že by se měly bát autoritářské státy, ne tolik ruské regulátory a zlaté štíty se svými DPI filtry"
(Politická technika)
Moje technická politika je jednodušší, mohu zde napsat své úvahy o nezkušených blokacích v ruském internetu, ale myslím, že progresivní občané Moderní Ruska a uživatelé Habra na sobě pocítili neprofesionalitu současné vlády, a tak se omezím jednou frází: naše technická politika je "Digitální Odpor". "zajištění příbuzným a blízkým stabilního komunikačního kanálu".
Nasazení MTProto proxy Telegramu
- Úroveň technické složitosti je "nekomplikovaná", pokud například slavíte tuto příručku.
- Úroveň spolehlivosti – "nadprůměrná": docker image funguje stabilně, není nutné ho restartovat každý den, jak psali vývojáři ve své oficiální dokumentaci Telegramu, ale nějaké zranitelnosti kontejner určitě obsahuje.
- Úroveň odporu/úzkosti – 10 igilovců spřádají své spiknutí "příbuzní používají", žádný zákaz od RKN nepřišel za celé období (od jara).
- Úroveň důvěry – "public baby distrust", problém je na straně klientů (někteří přátelé mají podezření na můj MtprotoProxy).
- Úroveň testosteronu – "nesnížil se".
- Finanční náklady – "0₽".
- Finanční odměna – "neodvisí od občana Durova". Odměna – možnost vnucení reklamy.
Naše TelegramProxy vybudujeme na "bezplatných/personalizovaných" kapacitách Amazon-ec2: t2.micro. Použil jsem tento stroj.
Dobře, rozjeli jsme svůj bezplatný server, přecházíme na oficiální stránky dockerhub a stáhneme docker kontejner.
Nemusíte hledat žádný obraz, soubor nebo kouzelný knoflík – "neexistují", veškerá magie se odehrává v CLI:
$ docker pull telegrammessenger/proxy #obraz stažen.Ale předtím nainstalujte docker pro CLI:
sudo apt-get install docker.io dockerPoté, v oficiální dokumentaci MtprotoProxyTelegram nám doporučují udělat přibližně následující, děláme:
$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest #spouštíme náš kontejner "mtproto-proxy".
Po tomto příkazu se v terminálovém výstupu objeví HEX-řetězec, ale ten nás nezajímá.
Píše se do CLI:
$ docker logs mtproto-proxyA získáme potřebná data:

Ve výstupu tohoto logu se nám ukazují (zakryto):
A) naše IP adresa serveru (vnější IP adresa serveru);
B) a náhodné tajemství — náhodný řetězec v HEX.
Před tím, než zaregistrujeme náš MtproProxy, je potřeba nastavit hlavní firewall nad iptables (bez ohledu na to, jakým způsobem směrujete provoz na této VPC, bude nezvladatelný, protože největší firewall v Amazon-EC2 se nachází v webovém rozhraní a má vyšší prioritu než iptables).
Přejděte do „konzoli Amazon-EC2“ do Skupiny zabezpečení a otevřete příchozí port 443 (logické maskování provozu na nějakou dobu).

Vezměte si z logu naše data „ip a tajemství“ a pak přejděte do messengeru Telegram, najděte oficiální MTProxy Admin Bot (@MTProxybot) a zaregistrujte náš MtproProxy: spusťte příkaz [\/newproxy] a zadejte [náš_ip:443], a poté naše [tajemství\/HEX].
Pokud uděláte chybu při zadávání dat, bot se rozčílí a pošle vás na…
Pokud vyplníte dvě řádky bez chyb, obdržíte schválení a fungující odkaz na váš aktivní MtprotoProxyTelegram, který můžete sdílet s kýmkoli.

Také přes tohoto bota můžete přidat svůj sponzorský kanál (ale ne chat), kde budete nutit své názory uživatelům, kteří se připojili k vašemu serveru, nebo můžete „nespamovat“ a neobtěžovat své potenciální zákazníky, když neukážete kanál v připnutém seznamu messengeru.
Ještě pár slov o botu, tam si můžete požádat o statistiku, ale „to také nic“. Zřejmě je „statistika“ dostupná, když za vámi Makhachkala „davy příživníků“.
Monitoring
A kolik uživatelů můžeme připojit k našemu serveru? A vůbec, kdo\/co tam? Co? A kolik?
Podívejme se, co tam je podle oficiální dokumentace… Aha, udělejte to takto:
$ curl http:\/\/localhost:2398\/stats nebo takto $ docker exec mtproto-proxy curl http:\/\/localhost:2398\/stats # a dostaneme statistiku přímo v CLI.„Drž kapsu širší“ Podle navržených příkazů vždy dostaneme podobnou chybu:
«curl: (7) Nepodařilo se připojit k portu localhost 2398: Připojení odmítnuto»
Náš proxy bude fungovat. Ale! Dostat „nic“ místo statistiky.
Můžete se zabývat záležitostmi pro red-eyed: zkontrolujte
$ netstat -an | grep 2398 a...Zpočátku jsem si myslel, že to je další chyba od vývojářů Telegramu (a stále si to myslím), ale pak jsem našel dočasné, docela dobré řešení: vyleštit Docker kontejner.
Později jsem narazil na informace:
o státní cenzuře Roskomnadzoru ohledně "statistik".
"Na našich serverech jsme zablokovali část veřejných proxy, přičemž jsme využili databáze projektu firehol. Tento projekt sleduje seznamy veřejných proxy a vytváří s nimi databáze.
Od tohoto okamžiku (tedy již skoro dva dny) nebyla zablokována žádná IP adresa naší ruské proxy.
3. Povedeme vás, jak vytvořit téměř nezranitelnou proxy proti Roskomnadzoru a sdílíme skript na blokaci veřejných proxy.
— Aktualizujte docker kontejner (nebo daemon) MTProto proxy na poslední verzi: RKN detekuje staré verze podle portu statistiky, který byl bindován na 0.0.0.0 a tím se jednoznačně identifikoval pro celý internet. Nejlépe — otevřete potřebné porty pomocí iptables a ostatní uzavřete (nezapomeňte, že v případě docker kontejneru byste měli použít pravidlo FORWARD).
— Roskomnadzor se již naučil dumpovat provoz: vidí dotazy uvnitř HTTP a SOCKS5 proxy a také vidí starou verzi obfuskační MTProto proxy.
Když se klienti některých poskytovatelů, u kterých jsou tyto dumpovací nástroje nainstalovány, pokouší připojit k Telegramu přes tyto proxy, RKN tyto žádosti vidí a okamžitě tyto proxy blokují. Totéž platí pro MTProto proxy se starou obfuskační technikou.
Řešení: poskytujte klientům, kteří se připojují k proxy, secret pouze s dd na začátku (není nutné uvádět další písmena dd v nastavení samotné MTProto proxy). To aktivuje verzi obfuskace, kterou dumpovací nástroje nedokážou detekovat.
A žádné HTTP a SOCKS5 proxy.
— Přípravek, který každý majitel telegram proxy, který je pravidelně blokován RKN, může úplně (nebo téměř úplně) zastavit blokace (a zároveň se ujistit, že RKN lže).
Skript, který blokuje veřejné proxy a malý manuál k němu.
→ Zdroj
Naše proxy je prozápadní, za jarní a chladné letní dny jsem se nesetkal s žádnými problémy/blokacemi, takže jsem se nezabýval ztrátou tempa a prefix dd* k klíči nepřidával.
Manuál "získání statistik/monitoring" podle oficiálního návodu MtprotoProxyTelegram — nefunguje/zastaralý, bude potřeba opravit docker obraz.
Opraveno.
Kontejner máme stále spuštěný:
$ docker stop mtproto-proxy #zastavíme náš spuštěný docker kontejner a spustíme nový obraz s vynechaným statistickým flagem
$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config:/data -e SECRET=váš_předchozí_secret_hex telegrammessenger/proxy:latest
Zkontrolujeme statistiku:
$ curl http://localhost:2398/statscurl: (7) Nepodařilo se připojit k 0.0.0.0 port 2398: Spojení bylo odmítnuto
Statistika je stále nedostupná .!..
Zjistíme identifikátor docker kontejneru:
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest '/bin/sh -c '/bin/ba…' Přibližně před hodinou Běží Přibližně před minutou 0.0.0.0:443->443/tcp mtproto-proxy2
Vstupujeme do docker kontejneru se svým příkazem:
$ sudo docker exec -it f423c209cfdc /bin/bash
$ apt-get update
$ apt-get install nano
$ nano - $ run.sh
A do posledního řádku skriptu 'run.sh' přidáme chybějící flag:
«--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'
Přidáte '--http-stats', něco jako toto by mělo vyjít:
'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 (uložit/ukončit nano/ukončit kontejner).
Restartujeme náš docker kontejner:
$ docker restart mtproto-proxy2Hotovo, nyní pomocí příkazu:
$ curl http://localhost:2398/stats #získáme podrobnou statistiku
Ve statistice je hodně 'odpadu' (na obrázku 1/3 z ní), vytvoříme alias:
$ echo "alias telega='curl localhost:2398/stats | grep -e total_special -e load_average_total'" >> .bashrc && bashZískáváme to, kvůli čemu jsme polirali docker kontejner: počet připojení a zátěž:
$ telega
Docker kontejner funguje, statistika běží.
Spotřebované zdroje
Ať jsi jakýkoliv frajer, Stuart Redman, i ty zanecháváš stopu na svých trenkách. Fungující Docker obraz zanechává nějakou stopu.
Nemá smysl rozepisovat výhody a nevýhody docker obrazů, docker kontejner je mini virtuální stroj, který spotřebovává zdroje méně než 'skutečný' virtuální stroj, například VirtualBox, ale spotřebovává.
1) Jestliže je spuštěn s statistikou docker obrazu nebo bez ní, dva klienti se baví nebo deset — zdroje se využívají ~stejně: 75% z celkového výkonu CPU t2.micro.
2) Podíváme se na monitoring serveru VPC:

Z grafu využití zdrojů na VPC vidíme, že docker kontejner trvale spotřebovává ~7,5% z celkové maximální produkce CPU a 28. května byl zastaven mnou úmyslně/dočasně. (Poznámka – na serveru také běží OpenVPN & pptp).
Proč je 10% stálého zatížení CPU limitem pro tento server?
Protože existují omezení ze strany Amazon EC2 a počítají se v kreditech:

1 kredit CPU = 1 CPU pracující na 100% zatížení po dobu jedné minuty, a máme 6 kreditů (to znamená, že v špičkách je možná 100% využití CPU po dobu 6 minut, a poté se výkon CPU sníží). Další kombinace: například 1 kredit CPU = 1 CPU pracující se 50% zatížením po dobu dvou minut (to znamená, že můžeme používat CPU se 50% zatížením po dobu 12 minut), nebo příklad, s trvalým 10% zatížením CPU po celou dobu a tak dále.
Závěry
- Jsme součástí „Digitálního Odporu“. Zajistili jsme našim „tátům a maminkám“ spolehlivý komunikační kanál.
- Pokud na serveru budete mít nasazen MtprotoProxyTelegram a OpenVPN, ale ne více, nebudou žádné zpoždění/pingy/výpadky, ale pokud neustále experimentujete se svým t2/micro, očekávejte zpomalení spojení.
- Můj ping přes oceán ~100-250 ms, ve výpovědních rozhovorech se nezaznamenávají zpoždění.
- Finanční náklady na všechno „to“ (včetně zdrojů VPC) = 0₽.
Přepracování svého článku.
UPD: Děkuji některým uživatelům Habr za užitečné komentáře, opravdu, možná (jsou statistiky podporovány?), existují lepší alternativy oficiálnímu docker obrazu Mtproto proxy Telegram.
Zdroj: habr.com
