MTProxy Telegram-ni statistika bilan joylashtirish

MTProxy Telegram-ni statistika bilan joylashtirish

"Men bu tartibsizlikni meros qilib oldim,
uyatsiz Zellodan boshlab; LinkedIn
va Telegram platformasida "hamma boshqa" bilan tugaydi
mening dunyomda.

Va keyin hiqichoq,
Amaldor shoshib va ​​baland ovozda qo‘shib qo‘ydi:
lekin men narsalarni tartibga solaman (bu erda ITda)"
(...).

Durovning fikricha, avtoritar davlatlar undan qo'rqishlari kerak, shifrlangan va Roskomnadzor va DPI filtrli oltin qalqonlar uni umuman bezovta qilmaydi.
(Siyosiy texnika)

Mening texnik siyosatim sodda, men bu erda Runet-da ehtiyotsiz blokirovka qilish haqidagi fikrlarimni tasvirlab bera olaman, lekin men zamonaviy rus va Habr foydalanuvchilarining ilg'or fuqarolari hozirgi hukumatning noprofessionalligini o'zlarining terilarida his qilishlariga ishonaman, shuning uchun men o'zimni cheklayman. bitta ibora: bizning texnik siyosatimiz "Raqamli qarshilik" . "qarindoshlar va do'stlarni barqaror aloqa kanali bilan ta'minlash".

MTProto Telegram proksi-serverini o'rnatish

  • Murakkablikning texnik darajasi "oson", agar siz, masalan, ushbu aldash varaqiga amal qilsangiz.
  • Ishonchlilik darajasi "o'rtachadan yuqori": docker tasviri barqaror ishlaydi, uni har kuni qayta ishga tushirish shart emas, chunki ishlab chiquvchilar o'zlarining rasmiy Telegram hujjatlarida yozganlar, ammo konteynerda ba'zi zaifliklar bo'lishi mumkin.
  • Qarshilik/tashvish darajasi - 10 nafar IShID a'zosi o'zlarining "qarindoshlari foydalanadigan" fitnalarini to'qishmoqda, taqiq RKNdan bir marta ham kelgani yo'q (bahordan beri).
  • Ishonch darajasi - "ommaviy chaqaloqqa ishonchsizlik", mijoz tomonidagi muammo (ba'zi do'stlar mening MtprotoProxy-ga shubha bilan qarashadi).
  • Testosteron darajasi - "yuqori ko'tarilmadi".
  • Moliyaviy xarajatlar - "0₽".
  • Moliyaviy mukofot - "fuqaro Durovga bog'liq emas". Rag'batlantirish - reklama qo'yish qobiliyati.

Biz TelegramProxy-ni Amazon-ec2: t2.micro-ning "bepul / shaxsiy" imkoniyatlariga ko'taramiz. foydalandim bu mashina

OK, bepul serveringiz o'rnatildi, rasmiy veb-saytga o'ting dockerhub va docker konteynerini yuklab oling.

Ba'zi rasm, fayl yoki sehrli tugmani qidirishning hojati yo'q - "ular yo'q", barcha sehr CLI da amalga oshiriladi:

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

Ammo "bundan" oldin CLI uchun dockerni o'rnating:

sudo apt-get install docker.io docker

Bundan tashqari, MtprotoProxyTelegram-ning rasmiy hujjatlarida bizga quyidagi kabi narsalarni qilish taklif etiladi, biz qilamiz:

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

Ushbu buyruqdan so'ng, terminal chiqishida HEX qatori paydo bo'ladi, lekin bizni bu qiziqtirmaydi.

Biz CLI da yozamiz:

$ docker logs mtproto-proxy

Va biz kerakli ma'lumotlarni olamiz:

MTProxy Telegram-ni statistika bilan joylashtirish
Ushbu jurnalning chiqishida biz ko'rsatilgan (yog'langan):

A) serverimiz ip (tashqi server ip);
B) va tasodifiy sir - HEXdagi tasodifiy qator.

MtproProxy-ni ro'yxatdan o'tkazishdan oldin, siz iptables orqali asosiy xavfsizlik devorini sozlashingiz kerak (trafikni ushbu VPC-ga qanday yo'naltirishingizdan qat'i nazar, u yaramas bo'ladi, chunki Amazon-EC2-dagi asosiy xavfsizlik devori veb-interfeysda joylashgan va undan yuqori ustunlikka ega. iptables).

Biz boramiz"konsoli Xavfsizlik guruhida Amazon-EC2" ni oching va 443 kirish portini oching (mantiqiy maskalash tirbandlik birinchi marta).

MTProxy Telegram-ni statistika bilan joylashtirish

Biz jurnaldan "IP va maxfiy" ma'lumotlarimizni olamiz va Telegram messenjeriga o'tamiz, rasmiy MTProxy Admin Botni (@MTProxybot) topamiz va MtproProxy-ni ro'yxatdan o'tkazamiz: [/newproxy] buyrug'ini ishga tushiring va [our_ip:443] ni kiriting va keyin bizning [sir / HEX].

Agar siz ma'lumotlarni kiritishda chalkashlik qilsangiz, bot g'azablanadi va sizni ...

Agar siz ikkita qatorni xatosiz to'ldirsangiz, siz rozilik va joriy MtprotoProxyTelegram-ga ish havolasini olasiz, uni har kim bilan baham ko'rishingiz mumkin.

MTProxy Telegram-ni statistika bilan joylashtirish

Shuningdek, ushbu bot orqali siz o'z homiylik kanalingizni qo'shishingiz mumkin (lekin chat emas), u yerda serveringizga ulangan foydalanuvchilarga o'z qarashlaringizni yuklaysiz yoki siz "spam" yubora olmaysiz va potentsial mijozlaringizni bezovta qilolmaysiz. messenjerlar ro'yxatida kanalni ko'rsatish.

Bot haqida yana bir necha so'z, bu erda siz statistikani so'rashingiz mumkin, lekin "shuningdek, donut". Ko'rinib turibdiki, "statistika" sizning orqangizda "erkin yuklovchilar olomoni" bo'lganda mavjud bo'ladi Maxachqal'a .

Monitoring

Serverimizga qancha foydalanuvchi ulanishi mumkin? Va baribir, u erda kim / nima? Nima? Va qancha?

Biz rasmiy hujjatlarga ko'ra u erda nima borligini ko'rib chiqamiz ... Ha, mana shunday qiling:

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

"Cho'ntagingizni kengroq tuting" Taklif etilgan buyruqlarga ko'ra, biz har doim shunga o'xshash xatoni olamiz:

«curl: (7) localhost 2398 portiga ulanib bo'lmadi: Ulanish rad etildi»

Bizning proksi-serverimiz ishlaydi. Lekin! Bagel, biz olgan statistika emas.

Qizil ko'zlar uchun narsalarni qilishingiz mumkin: tekshiring

$ netstat -an | grep 2398 и...

Avvaliga men bu Telegram ishlab chiquvchilari ortidagi yana bir tiqilinch deb o'yladim (va men hali ham shunday deb o'ylayman), keyin vaqtinchalik yaxshi yechim topdim: Docker konteynerini fayl bilan jilolab qo'ying.

Keyinroq ko'zimga bir infa tushdi:

Roskomnadzorning "statistika" atrofidagi davlat raqslari haqida.

“Biz firehol loyihasining maʼlumotlar bazalaridan foydalangan holda serverlarimizdagi baʼzi ommaviy proksi-serverlarni blokladik. Ushbu loyiha umumiy proksi-serverlar bilan ro'yxatlarni kuzatib boradi va ular bilan ma'lumotlar bazalarini yaratadi.

O'sha paytdan beri (ya'ni deyarli ikki kundan beri) bizning rus proksi-serverimizning birorta ham IP manzili bloklanmagan.

3. Biz sizga Roskomnadzor uchun deyarli daxlsiz bo'lgan proksi-serverni qanday qilishni va ommaviy proksi-serverlarni blokirovka qilish uchun skriptni baham ko'rishni aytamiz.

- MTProto proksi-docker konteynerini (yoki demonini) so'nggi versiyaga yangilang: RKN eski versiyalarni 0.0.0.0 ga bog'langan va butun Internet uchun o'ziga xos tarzda identifikatsiya qilingan statistika porti bo'yicha hisoblab chiqadi. Yaxshisi, iptables yordamida kerakli portlarni oching va qolganlarini yoping (esda tutingki, docker konteynerida FORWARD qoidasidan foydalaning).

— Roskomnadzor trafikni qanday yo‘q qilishni allaqachon o‘rgangan: ular HTTP va SOCKS5 proksi-serverlari ichidagi qo‘ng‘iroqlarni ko‘rishadi, shuningdek, MTProto proksi-serverini chalkashtirishning eski versiyasini ham ko‘rishadi.

Bunday dumplar o'rnatilgan ba'zi provayderlarning mijozlari Telegram'ga shunday proksi-serverlar orqali kirishganda, RKN bunday so'rovlarni ko'radi va darhol ushbu proksi-serverlarni bloklaydi. Xuddi shu narsa eski xiralashgan MTProto proksi-serveriga ham tegishli.

Yechim: proksi-serverga ulangan mijozlarga faqat boshida dd bilan sirni tarqating (mtproto proksi-serverining sozlamalarida qo'shimcha dd harflarini ko'rsatish shart emas). Bu dumppiles aniqlay olmaydigan noaniqlik versiyasini faollashtiradi.

Va HTTP yoki SOCKS5 proksi-serverlari yo'q.

- RKN tomonidan muntazam ravishda taqiqlangan telegram proksi-serverining har bir egasi blokirovka qilishni to'liq (yoki deyarli to'liq) to'xtatishi mumkin bo'lgan sozlash (va shu bilan birga RKN yolg'on ekanligiga ishonch hosil qilish).

Umumiy proksi-serverlarni taqiqlovchi skript va u uchun kichik qo'llanma.

manba

Bizning proksi-serverimiz g'arbparast, bahor va yozning salqin kunlarida men hech qanday muammoga / to'siqlarga duch kelmadim, u ijodiy vazifani ham jalb qilmadi, shuning uchun men tezlikni yo'qotmadim va dd* prefiksini qo'shmadim. Kalit.

MtprotoProxyTelegram rasmiy ko'rsatmalariga muvofiq "statistik ma'lumotlarni olish/monitoring" qo'llanmasi ishlamayapti/eskirgan, siz docker tasvirini tuzatishingiz kerak bo'ladi.

Biz tuzatamiz.

Konteyner hali ham ishlaydi:

$ 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

Statistikani tekshiramiz:

$ curl http://localhost:2398/stats

curl: (7) 0.0.0.0 2398 portiga ulanib bo'lmadi: Ulanish rad etildi
Statistik ma'lumotlar hali ham mavjud emas.!..

Docker konteynerining identifikatorini bilib oling:

$ docker ps

KONTEYNER identifikatori tasvir buyrug'i yaratilgan STATUS PORTLAR NOMLARI
f423c209cfdc telegrammessenger/proksi: oxirgi "/bin/sh -c '/bin/ba…" Taxminan bir soat oldin Yuqoriga Taxminan bir daqiqa 0.0.0.0:443->443/tcp mtproto-proxy2

Biz nizomimiz bilan docker konteyneriga boramiz:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

Va "run.sh" skriptining oxirgi qatorida etishmayotgan bayroqni qo'shing:

«--http-statistika»
"exec /usr/local/bin/mtproto-proxy -p 2398 -H 443 -M "$WORKERS" -C 60000 --aes-pwd /etc/telegram/hello-explorers-qalay-yaxshisiz -u root $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD"

"--http-stats" qo'shing, shunga o'xshash narsa ishlashi kerak:

«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 (saqlash/chiqish nano/konteynerdan chiqish).

Docker konteynerimizni qayta ishga tushiring:

$ docker restart mtproto-proxy2

Hamma narsa, endi buyruq bo'yicha:

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

MTProxy Telegram-ni statistika bilan joylashtirish
Statistikada juda ko'p "axlat" bor (uning 1/3 qismi ekranda), taxallus yarating:

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

Biz docker konteyneri nima uchun silliqlanganligini olamiz: ulanishlar soni va yuk:

$ telega

MTProxy Telegram-ni statistika bilan joylashtirish
Docker konteyneri ishlamoqda, statistika aylanmoqda.

Sarflangan resurslar

Styuart Redman qanchalik zo'r bo'lsangiz ham, külotingizda iz qoldirasiz. Ishlayotgan Docker tasviri katta iz qoldiradi.

Docker tasvirlarining afzalliklari va kamchiliklarini tasvirlashning ma'nosi yo'q, docker konteyneri VirtualBox kabi "haqiqiy" virtual mashinaga qaraganda kamroq resurslarni iste'mol qiladigan mini-virtual mashinadir, lekin shunday qiladi.

1) Docker-image statistikasi bilan yoki bo'lmasdan ishga tushirilganda, ikkita mijoz quvnoq yoki o'nta - resurslardan ~ xuddi shu tarzda foydalaniladi: butun CPU t75.micro ishlashining 2%.

2) Biz VPC serverining monitoringini ko'rib chiqamiz:

MTProxy Telegram-ni statistika bilan joylashtirish

VPC-dagi resurslardan foydalanish grafigidan biz docker konteyneri doimiy ravishda umumiy maksimalning ~ 7,5% iste'mol qilishini ko'ramiz. CPU ishlashi va 28-may kuni men tomonidan ataylab/vaqtinchalik to'xtatildi (Eslatma - OpenVPN va pptp ham serverda ishlaydi).

Nima uchun 10% doimiy protsessordan foydalanish bu server uchun chegara hisoblanadi?

Chunki Amazon EC2 tomonidan cheklovlar mavjud va ular kreditlarda hisoblanadi:

MTProxy Telegram-ni statistika bilan joylashtirish

1 protsessor krediti = 1 protsessor bir daqiqada 100% yuk bilan ishlaydi va bizda 6 ta kredit bor (ya'ni, eng yuqori cho'qqilarda 100 daqiqa ichida 6% protsessordan foydalanish mumkin, keyin esa protsessor quvvati pasayadi). Boshqa kombinatsiyalar: masalan, 1 protsessor krediti = 1 protsessor ikki daqiqa davomida 50% yuk bilan ishlaydi (ya'ni, biz protsessorni 50 daqiqa davomida 12% yuk bilan ishlatishimiz mumkin) yoki, masalan, protsessorning doimiy 10% yuklanishi. butun vaqt va boshqalar.

topilmalar

  • Biz "Raqamli qarshilik" ning bir qismimiz. Ularning "ota va onalarini" ishonchli aloqa kanali bilan ta'minladilar.
  • Agar sizda MtprotoProxyTelegram va OpenVPN serverda o'rnatilgan bo'lsa, lekin bundan ortiq bo'lmasa, kechikishlar / pinglar / nosozliklar bo'lmaydi, lekin agar siz doimo t2 / micro bilan tajriba o'tkazayotgan bo'lsangiz, u holda aloqa tormozlarini kuting.
  • Mening xorijdagi pingim ~ 100-250ms, ovozli aloqada kechikishlar yo'q.
  • Bularning barchasi uchun moliyaviy xarajatlar (shu jumladan VPC resurslari) = 0₽.

Maqolangizni qayta chop etish.

UPD: Foydali sharhlar uchun ba'zi habrauzerlarga rahmat, albatta, bu mumkin (statistik ma'lumotlar qo'llab-quvvatlanadimi?), Rasmiy Mtproto proksi Telegram docker tasvirining yaxshiroq analoglari mavjud.

Manba: www.habr.com

a Izoh qo'shish