Wdrażanie telegramu MTProxy ze statystykami

Wdrażanie telegramu MTProxy ze statystykami

„Odziedziczyłem ten bałagan,
zaczynając od bezwstydnego Zello; Linkedin
i kończąc na „wszystkich innych” na platformie Telegram
w moim świecie.

A potem czkawka,
Urzędnik dodał pospiesznie i głośno:
ale zrobię porządek (tutaj w IT)"
(...).

Durow słusznie uważa, że ​​to autorytarne państwa powinny się go bać, cypherpunka, a Roskomnadzor i złote tarcze z ich filtrami DPI specjalnie mu nie przeszkadzają.
(technika polityczna)

Moja polityka techniczna jest prostsza, mogę tu opisać swoje przemyślenia na temat nieostrożnego blokowania w Runecie, ale wierzę, że postępowi obywatele Noworosyjskiego i użytkowników Habr odczuli na własnej skórze nieprofesjonalizm obecnego rządu, więc ograniczę się do jedno zdanie: naszą polityką techniczną jest „Digital Resistance” . „zapewnienie bliskim i przyjaciołom stabilnego kanału komunikacji”.

Wdrażanie telegramu proxy MTProto

  • Techniczny poziom złożoności jest „łatwy”, jeśli na przykład zastosujesz się do tej ściągawki.
  • Poziom niezawodności jest „ponadprzeciętny”: obraz dokera działa stabilnie, nie trzeba go codziennie restartować, jak napisali twórcy w oficjalnej dokumentacji Telegrama, ale kontener prawdopodobnie zawiera jakieś luki.
  • Poziom oporu/niepokoju - 10 członków ISIS splata swoje spiski "krewni używają", zakaz nie wyszedł z RKN ani razu cały czas (od wiosny).
  • Poziom zaufania to „publiczna nieufność dziecka”, problem po stronie klienta (niektórzy znajomi są podejrzliwi wobec mojego MtprotoProxy).
  • Poziom testosteronu – „nie wzrósł”.
  • Koszty finansowe - „0₽”.
  • Nagroda finansowa - „nie zależy od obywatela Durowa”. Promocja - możliwość narzucenia reklamy.

Podniesiemy nasze TelegramProxy na „bezpłatne / osobiste” możliwości Amazon-ec2: t2.micro. użyłem to samochód.

Dobra, wdrożyłeś swój darmowy serwer, przejdź do oficjalnej strony internetowej dockerhub i pobierz kontener dokera.

Nie trzeba szukać obrazka, pliku czy magicznego przycisku - „nie ma ich tam”, cała magia odbywa się w CLI:

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

Ale przed „tym” zainstaluj okno dokowane dla CLI:

sudo apt-get install docker.io docker

Ponadto w oficjalnej dokumentacji MtprotoProxyTelegram proponujemy wykonanie czegoś takiego:

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

Po tym poleceniu na wyjściu terminala pojawi się ciąg HEX, ale nas to nie interesuje.

Piszemy w CLI:

$ docker logs mtproto-proxy

I otrzymujemy wymagane dane:

Wdrażanie telegramu MTProxy ze statystykami
W danych wyjściowych tego dziennika jesteśmy pokazani (rozmazani):

A) ip naszego serwera (ip serwera zewnętrznego);
B) i losowy sekret - losowy ciąg w HEX.

Przed zarejestrowaniem naszego MtproProxy należy skonfigurować główną zaporę ogniową przez iptables (nieważne jak przekierujesz ruch do tego VPC, będzie to niegrzeczne, ponieważ główna zapora ogniowa w Amazon-EC2 znajduje się w interfejsie webowym i ma wyższy priorytet niż iptables).

Idziemy do "konsola Amazon-EC2” w Security Group i otwórz port przychodzący 443 (logiczne maskowanie ruch drogowy po raz pierwszy).

Wdrażanie telegramu MTProxy ze statystykami

Bierzemy nasze dane „ip i tajne” z dziennika i przechodzimy do komunikatora Telegram, znajdujemy oficjalnego bota administratora MTProxy (@MTProxybot) i rejestrujemy naszego MtproProxy: uruchamiamy polecenie [/newproxy] i wpisujemy [our_ip:443], a następnie nasz [sekret /HEX].

Jeśli pomylisz się przy wprowadzaniu danych, bot się zdenerwuje i wyśle ​​Cię do…

Jeśli wypełnisz dwie linie bez błędów, otrzymasz akceptację i działający link do swojego aktualnego MtprotoProxyTelegram, którym możesz się podzielić z kimkolwiek.

Wdrażanie telegramu MTProxy ze statystykami

Ponadto za pomocą tego bota możesz dodać swój kanał sponsorski (ale nie czat), gdzie będziesz narzucał swoje poglądy użytkownikom, którzy połączyli się z twoim serwerem, lub nie możesz „spamować” i nie przeszkadzać swoim potencjalnym klientom bez wyświetlanie kanału na przypiętej liście komunikatorów.

Jeszcze kilka słów o bocie, w którym można zażądać statystyk, ale „także pączka”. Najwyraźniej „statystyki” są dostępne, gdy masz za sobą „tłum darmozjadów” Machaczkała.

Monitorowanie

Ilu użytkowników możemy połączyć z naszym serwerem? A tak w ogóle, kto/co tam jest? Co? I ile?

Patrzymy, co tam jest zgodnie z oficjalną dokumentacją ... Tak, tutaj, zrób to tak:

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

„Trzymaj szerszą kieszeń” Zgodnie z proponowanymi poleceniami zawsze otrzymamy podobny błąd:

«curl: (7) Połączenie z portem localhost 2398 nie powiodło się: Połączenie odrzucone»

Nasz serwer proxy będzie działał. Ale! Bajgiel, a nie statystyki, które otrzymujemy.

Możesz zrobić coś dla czerwonookich: sprawdź

$ netstat -an | grep 2398 и...

Na początku myślałem, że to kolejny oścież za twórcami Telegrama (i nadal tak uważam), potem znalazłem chwilowe dobre rozwiązanie: dopracowanie kontenera Dockera plikiem.

Później moją uwagę przykuła informacja:

o tańcach państwowych Roskomnadzora wokół „statystyki”.

„Zablokowaliśmy niektóre publiczne serwery proxy na naszych serwerach, korzystając z baz danych projektu firehol. Ten projekt monitoruje listy z publicznymi serwerami proxy i tworzy z nimi bazy danych.

Od tego momentu (czyli już prawie dwa dni) ani jeden adres IP naszego rosyjskiego proxy nie został zablokowany.

3. Mówimy ci, jak zrobić serwer proxy, który jest prawie niewrażliwy na Roskomnadzor i udostępniamy skrypt do blokowania publicznych serwerów proxy.

- Zaktualizuj kontener dokera proxy MTProto (lub demona) do najnowszej wersji: RKN oblicza stare wersje na podstawie portu statystyk, który był powiązany z 0.0.0.0 i jednoznacznie identyfikował się w całym Internecie. Jeszcze lepiej, otwórz niezbędne porty za pomocą iptables, a resztę zamknij (pamiętaj, że w przypadku kontenera dokera powinieneś użyć reguły FORWARD).

— Roskomnadzor już dawno nauczył się ograniczać ruch: widzi połączenia wewnątrz serwerów proxy HTTP i SOCKS5, a także widzi starą wersję zaciemniania proxy MTProto.

Kiedy klienci niektórych dostawców, którzy mają zainstalowane takie zrzuty, uzyskują dostęp do Telegramu za pośrednictwem takich serwerów proxy, RKN widzi takie żądania i natychmiast blokuje te serwery proxy. To samo dotyczy proxy MTProto ze starym zaciemnianiem.

Rozwiązanie: dystrybuuj sekret tylko z dd na początku do klientów łączących się z proxy (nie trzeba podawać dodatkowych liter dd w ustawieniach samego proxy mtproto). Umożliwi to wersję zaciemniania, której dumppiles nie może wykryć.

I żadnych serwerów proxy HTTP lub SOCKS5.

- Dostosowanie, za pomocą którego każdy właściciel proxy telegramu, który jest regularnie blokowany przez RKN, może całkowicie (lub prawie całkowicie) przestać blokować (a jednocześnie upewnić się, że RKN kłamie).

Skrypt, który blokuje publiczne serwery proxy i mały podręcznik do tego.

źródło

Nasze proxy jest prozachodnie, nie napotkałem żadnych problemów / blokad podczas wiosennych i chłodnych letnich dni, nie przyciągało też twórczego zadania, więc nie straciłem tempa i nie dodałem prefiksu dd* do klucz.

Instrukcja „pobieranie statystyk/monitorowanie” według oficjalnej instrukcji MtprotoProxyTelegram nie działa/jest nieaktualna, trzeba będzie naprawić obraz dockera.

Naprawiamy to.

Kontener nadal działa:

$ 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

Sprawdźmy statystyki:

$ curl http://localhost:2398/stats

curl: (7) Nie udało się połączyć z portem 0.0.0.0 2398: Odmowa połączenia
Statystyki są nadal niedostępne.!..

Znajdź identyfikator kontenera dokera:

$ docker ps

IDENTYFIKATOR KONTENERA OBRAZ POLECENIE UTWORZENIE STANU NAZWY PORTÓW
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba..." Około godziny temu Do góry Około minuty 0.0.0.0:443->443/tcp mtproto-proxy2

Idziemy z naszym czarterem do kontenera dokera:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

A w ostatnim wierszu skryptu „run.sh” dodaj brakującą flagę:

«--http-statystyki»
„exec /usr/local/bin/mtproto-proxy -p 2398 -H 443 -M „$ PRACOWNICY” -C 60000 --aes-pwd /etc/telegram/hello-explorers-jak-się-robisz -u root $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD"

Dodaj „--http-stats”, coś takiego powinno działać:

«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 (zapisz/wyjdź z nano/wyjdź z kontenera).

Zrestartuj nasz kontener dokera:

$ docker restart mtproto-proxy2

Wszystko, teraz na komendę:

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

Wdrażanie telegramu MTProxy ze statystykami
W statystykach jest dużo „śmieci” (1/3 jest na ekranie), utwórz alias:

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

Otrzymujemy to, do czego dopracowano kontener dokera: ilość połączeń i obciążenie:

$ telega

Wdrażanie telegramu MTProxy ze statystykami
Kontener Dockera działa, statystyki się kręcą.

Wydane zasoby

Tak fajny jak Stuart Redman, nawet ty zostawiasz ślad na swoich majtkach. Uruchomiony obraz Docker pozostawia duży ślad.

Nie ma sensu opisywać zalet i wad obrazów dokerów, kontener dokera to mini-maszyna wirtualna, która zużywa mniej zasobów niż „prawdziwa” maszyna wirtualna, taka jak VirtualBox, ale tak jest.

1) Uruchomiony ze statystykami obrazu dokera lub bez, dwóch klientów lub dziesięciu - zasoby są wykorzystywane ~ w ten sam sposób: 75% całej wydajności procesora t2.micro.

2) Patrzymy na monitorowanie serwera VPC:

Wdrażanie telegramu MTProxy ze statystykami

Z wykresu wykorzystania zasobów na VPC widzimy, że kontener dokera stale zużywa ~ 7,5% całkowitego max. Wydajność procesora i 28 maja została przeze mnie zatrzymana celowo/tymczasowo (Uwaga - na serwerze działają również OpenVPN i pptp).

Dlaczego 10% stałego użycia procesora jest limitem dla tego serwera?

Ponieważ istnieją ograniczenia z Amazon EC2 i są one obliczane w kredytach:

Wdrażanie telegramu MTProxy ze statystykami

1 kredyt procesora = 1 procesor pracujący na 100% obciążeniu przez jedną minutę, a kredytów mamy 6 (czyli w szczytach 100% wykorzystania procesora jest możliwe w ciągu 6 minut, a wtedy moc procesora spadnie). Inne kombinacje: na przykład 1 kredyt procesora = 1 procesor pracujący z 50% obciążeniem przez dwie minuty (czyli możemy używać procesora z 50% obciążeniem przez 12 minut) lub na przykład stałe 10% obciążenie procesora podczas cały czas itp.

odkrycia

  • Jesteśmy częścią „Cyfrowego Ruchu Oporu”. Zapewnili swoim „ojcom i matkom” niezawodny kanał komunikacji.
  • Jeśli masz wdrożone MtprotoProxyTelegram i OpenVPN na serwerze, ale nie więcej, nie będzie żadnych opóźnień / pingów / awarii, ale jeśli ciągle eksperymentujesz ze swoim t2 / micro, poczekaj na przerwy w komunikacji.
  • Mój ping za granicą to ~100-250ms, nie ma opóźnień w komunikacji głosowej.
  • Koszty finansowe tego wszystkiego (w tym zasoby VPC) = 0₽.

Przedruk twojego artykułu.

UPD: Dzięki niektórym habrauserom za przydatne komentarze, rzeczywiście jest to możliwe (czy statystyki są obsługiwane?), Istnieją lepsze analogi oficjalnego obrazu dokera Telegram proxy Mtproto.

Źródło: www.habr.com

Dodaj komentarz