Desplegando tu MTProxy Telegram con estadísticas

Desplegando tu MTProxy Telegram con estadísticas

"Yo heredé este lío,
empezando por el desvergonzado Zello; LinkedIn
y terminando con "todos los demás" en la plataforma de Telegram
en mi mundo.

Y luego hipo,
El funcionario añadió apresuradamente y en voz alta:
pero pondré las cosas en orden (aquí en TI)"
(...).

Durov, con razón, cree que son los estados autoritarios los que deberían tenerle miedo, un cypherpunk, y Roskomnadzor y los escudos dorados con sus filtros DPI realmente no lo molestan.
(Técnica política)

Mi política técnica es más simple, puedo describir aquí mis pensamientos sobre el bloqueo descuidado en Runet, pero creo que los ciudadanos progresistas del ruso moderno y los usuarios de Habr han sentido la falta de profesionalismo del gobierno actual en su propia piel, así que me limitaré a una sola frase: nuestra política técnica es “Resistencia Digital”. "proporcionar a familiares y amigos un canal de comunicación estable".

Implementación del proxy MTProto Telegram

  • El nivel técnico de complejidad es "fácil", si, por ejemplo, sigue esta hoja de trucos.
  • El nivel de confiabilidad está “por encima del promedio”: la imagen de la ventana acoplable funciona de manera estable, no es necesario reiniciarla todos los días, como escribieron los desarrolladores en su documentación oficial de Telegram, pero es probable que el contenedor contenga algunas vulnerabilidades.
  • El nivel de resistencia/ansiedad: 10 miembros de ISIS están tejiendo sus conspiraciones "uso de familiares", la prohibición no ha venido de la RKN ni una sola vez todo el tiempo (desde la primavera).
  • El nivel de confianza es "desconfianza pública del bebé", un problema del lado del cliente (algunos amigos sospechan de mi MtprotoProxy).
  • Niveles de testosterona: "no aumentaron".
  • Costos financieros - "0₽".
  • Recompensa financiera - "no depende del ciudadano Durov". Promoción - la capacidad de imponer publicidad.

Subiremos nuestro TelegramProxy sobre las capacidades “gratis/personales” de Amazon-ec2: t2.micro. solía este un coche.

De acuerdo, desplegó su servidor gratuito, vaya al sitio web oficial Dockerhub y descargue el contenedor docker.

No es necesario buscar alguna imagen, archivo o botón mágico: "no están allí", toda la magia se realiza en la CLI:

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

Pero antes de "eso", instale docker para CLI:

sudo apt-get install docker.io docker

Además, en la documentación oficial de MtprotoProxyTelegram, se nos ofrece hacer algo como lo siguiente:

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

Después de este comando, aparecerá una cadena HEX en la salida del terminal, pero no nos interesa.

Escribimos en CLI:

$ docker logs mtproto-proxy

Y obtenemos los datos requeridos:

Desplegando tu MTProxy Telegram con estadísticas
En la salida de este registro, se nos muestra (manchado):

A) nuestra ip del servidor (ip del servidor externo);
B) y un secreto aleatorio: una cadena aleatoria en HEX.

Antes de registrar nuestro MtproProxy, debe configurar el firewall principal sobre iptables (no importa cómo redirija el tráfico a esta VPC, será travieso, ya que el firewall principal en Amazon-EC2 se encuentra en la interfaz web y tiene una prioridad más alta sobre iptables).

Vamos a "consola Amazon-EC2" en el grupo de seguridad y abra el puerto de entrada 443 (enmascaramiento lógico tráfico por primera vez).

Desplegando tu MTProxy Telegram con estadísticas

Tomamos nuestros datos de "ip y secreto" del registro y vamos al mensajero de Telegram, buscamos el Bot de administración oficial de MTProxy (@MTProxybot) y registramos nuestro MtproProxy: ejecute el comando [/ newproxy] e ingrese [our_ip: 443], y luego nuestro [secreto /HEX].

Si te equivocas al ingresar datos, el bot se enojará y te enviará a...

Si completa dos líneas sin errores, recibirá la aprobación y un enlace funcional a su MtprotoProxyTelegram actual, que puede compartir con cualquier persona.

Desplegando tu MTProxy Telegram con estadísticas

Además, a través de este bot, puedes agregar tu canal de patrocinio (pero no un chat), donde impondrás tus puntos de vista a los usuarios que se han conectado a tu servidor, o no podrás hacer "spam" y no molestar a tus potenciales clientes sin mostrando el canal en la lista de messenger fijada.

Unas palabras más sobre el bot, donde puedes pedir estadísticas, pero “también una dona”. Aparentemente, las "estadísticas" están disponibles cuando tienes "una multitud de gorrones" detrás de ti Makhachkala.

Monitoreo

¿Cuántos usuarios podemos conectar a nuestro servidor? Y de todos modos, ¿quién/qué hay ahí? ¿Qué? ¿Y cuántos?

Nos fijamos en lo que hay según la documentación oficial... Sí, aquí, hazlo así:

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

“Mantén tu bolsillo más ancho” Según los comandos propuestos, siempre recibiremos un error similar:

«curl: (7) Error al conectarse al puerto localhost 2398: Conexión rechazada»

Nuestro proxy funcionará. ¡Pero! Bagel, no las estadísticas que obtenemos.

Puedes hacer cosas por los ojos rojos: comprobar

$ netstat -an | grep 2398 и...

Al principio pensé que esta era otra jamba detrás de los desarrolladores de Telegram (y sigo pensando así), luego encontré una buena solución temporal: pulir el Contenedor Docker con un archivo.

Más tarde, un infa me llamó la atención:

sobre los bailes estatales de Roskomnadzor en torno a "estadísticas".

“Hemos bloqueado algunos de los proxies públicos en nuestros servidores usando las bases de datos del proyecto firehol. Este proyecto monitorea listas con proxies públicos y crea bases de datos con ellos.

Desde ese momento (es decir, casi dos días ya), no se ha bloqueado ni una sola dirección IP de nuestro proxy ruso.

3. Te decimos cómo hacer un proxy que sea casi invulnerable a Roskomnadzor y compartir un script para bloquear proxies públicos.

- Actualice el contenedor (o daemon) de la ventana acoplable del proxy MTProto a la última versión: RKN calcula las versiones antiguas por el puerto de estadísticas, que estaba vinculado a 0.0.0.0 y se identificaba de forma única para todo Internet. Mejor aún, abra los puertos necesarios usando iptables y cierre el resto (recuerde que en el caso de un contenedor docker, debe usar la regla FORWARD).

— Roskomnadzor aprendió a volcar el tráfico hace mucho tiempo: ven llamadas dentro de proxies HTTP y SOCKS5, y también ven la versión anterior de ofuscación de proxy MTProto.

Cuando los clientes de algunos proveedores que tienen dichos volcados instalados acceden a Telegram a través de tales proxies, el RKN ve tales solicitudes e inmediatamente bloquea estos proxies. Lo mismo ocurre con el proxy MTProto con ofuscación antigua.

Solución: distribuya secret solo con dd al principio a los clientes que se conectan al proxy (no es necesario especificar letras adicionales dd en la configuración del propio proxy mtproto). Esto habilitará una versión de ofuscación que los dumppiles no pueden detectar.

Y sin proxies HTTP o SOCKS5.

- Ajuste, con la ayuda del cual cada propietario de un proxy de Telegram, que RKN banea regularmente, puede dejar de bloquear por completo (o casi por completo) (y al mismo tiempo asegurarse de que RKN está mintiendo).

Un script que prohíbe los proxies públicos y un pequeño manual para ello.

fuente

Nuestro proxy es pro-occidental, no encontré ningún problema/bloqueo durante la primavera y los días frescos de verano, tampoco atrajo una tarea creativa, así que no perdí el ritmo y no agregué el prefijo dd* a la clave.

El manual “obtención de estadísticas/monitoreo” según las instrucciones oficiales de MtprotoProxyTelegram no funciona/no está actualizado, tendrás que reparar la imagen del docker.

Lo arreglamos.

El contenedor todavía se está ejecutando:

$ 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

Veamos las estadísticas:

$ curl http://localhost:2398/stats

curl: (7) Error al conectarse al puerto 0.0.0.0 2398: Conexión rechazada
Las estadísticas aún no están disponibles.!..

Averigüe el ID del contenedor docker:

$ docker ps

ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO NOMBRES DE PUERTOS
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba…" Hace aproximadamente una hora Arriba Aproximadamente un minuto 0.0.0.0:443->443/tcp mtproto-proxy2

Vamos con nuestro charter dentro del contenedor docker:

$ sudo docker exec -it f423c209cfdc /bin/bash

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

Y en la última línea del script "run.sh", agregue el indicador que falta:

«--http-estadísticas»
"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"

Agregue "--http-stats", algo como esto debería funcionar:

«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 (guardar/salir de nano/salir del contenedor).

Reinicie nuestro contenedor docker:

$ docker restart mtproto-proxy2

Todo, ahora al mando:

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

Desplegando tu MTProxy Telegram con estadísticas
Hay mucha “basura” en las estadísticas (1/3 de ella está en la pantalla), crea un alias:

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

Obtenemos para qué se pulió el contenedor docker: la cantidad de conexiones y la carga:

$ telega

Desplegando tu MTProxy Telegram con estadísticas
El contenedor Docker se está ejecutando, las estadísticas están girando.

Recursos gastados

Tan genial como eres Stuart Redman, incluso dejas una marca en tus bragas. Una imagen de Docker en ejecución deja una gran huella.

No tiene sentido describir las ventajas y desventajas de las imágenes docker, un contenedor docker es una mini-máquina virtual que consume menos recursos que una máquina virtual “real”, como VirtualBox, pero lo hace.

1) Lanzado con o sin estadísticas de imagen de docker, dos clientes se divierten o diez: los recursos se utilizan ~ de la misma manera: el 75 % del rendimiento total de la CPU t2.micro.

2) Nos fijamos en la monitorización del servidor VPC:

Desplegando tu MTProxy Telegram con estadísticas

En el gráfico de utilización de recursos en la VPC, vemos que el contenedor acoplable consume constantemente ~ 7,5 % del total máximo. El rendimiento de la CPU y el 28 de mayo lo detuve intencionalmente/temporalmente (Nota: OpenVPN y pptp también se ejecutan en el servidor).

¿Por qué el 10 % de uso constante de la CPU es el límite para este servidor?

Porque hay restricciones de Amazon EC2 y se calculan en créditos:

Desplegando tu MTProxy Telegram con estadísticas

1 crédito de CPU = 1 CPU funcionando al 100 % de la carga durante un minuto, y tenemos 6 créditos (es decir, en los picos, es posible utilizar el 100 % de la CPU en 6 minutos, y luego la potencia de la CPU disminuirá). Otras combinaciones: por ejemplo, 1 crédito de CPU = 1 CPU funcionando al 50 % de carga durante dos minutos (es decir, podemos usar la CPU al 50 % de carga durante 12 minutos), o, por ejemplo, una carga de CPU constante del 10 % durante todo el tiempo, etc

Hallazgos

  • Somos parte de la "Resistencia Digital". Proporcionó a sus "padres y madres" un canal de comunicación confiable.
  • Si tiene MtprotoProxyTelegram y OpenVPN implementados en el servidor, pero no más, no habrá demoras/pings/fallas, pero si está experimentando constantemente con su t2/micro, entonces espere a que se interrumpa la comunicación.
  • Mi ping en el extranjero es ~100-250ms, no hay retrasos en la comunicación de voz.
  • Costos financieros para todo "esto" (incluidos los recursos de VPC) = 0₽.

Reimpresión de su artículo.

UPD: Gracias a algunos habrausers por sus comentarios útiles, de hecho, es posible (¿son compatibles las estadísticas?), Hay mejores análogos de la imagen acoplable oficial de Telegram del proxy Mtproto.

Fuente: habr.com

Añadir un comentario