Roskomnadzor y Telegram bots a trav茅s de un proxy

Es imposible encontrar la mejor publicidad para un gran mensajero: "el ac茅rrimo Durov defiende la defensa y defiende la privacidad de sus clientes, en cuanto a su vida". Pero la esencia de esta publicaci贸n no est谩 en el componente de marketing del bloqueo de Telegram en Rusia. Si su robot Telegram ha dejado de funcionar y necesita restaurar este trabajo con urgencia, bienvenido a cat.


Anoche nos encontramos con un problema que se esperaba que chocara. El servidor API de uno de nuestros clientes estaba ubicado en Heroku. Ayer, un cliente descontento me escribi贸 (en Telegram, por supuesto) que la informaci贸n en el sitio aparece al azar, luego no. El sitio en s铆 (una aplicaci贸n en NodeJS) ya se ha transferido al servidor de Mosc煤 por adelantado para reducir el ping.


Despu茅s de media hora de estudiar el problema, se lleg贸 a una conclusi贸n simple: Roskomnadzor bloque贸 parte de las direcciones de heroku. La rotaci贸n de los servidores heroku se produce a nivel de DNS y DNS a veces proporciona una IP que funciona, a veces no. Por cierto, descubrir la causa del problema fue bastante dif铆cil, cuando probamos con los desarrolladores, no hubo ning煤n problema. Cuando el cliente lo prob贸, lo fueron. Los pensamientos ya parec铆an responder a la gran frase del desarrollador del cliente "todo funciona en mi computadora".


La soluci贸n fue bastante simple: transferimos el servidor API de la aplicaci贸n al servidor cliente de San Petersburgo y all铆 se implement贸 silenciosamente. Todo funcion贸 a la perfecci贸n, excepto, por supuesto, la integraci贸n con Telegram. Dado que abandonar esta integraci贸n no es posible, porque No existe una alternativa que valga la pena, comenzamos a buscar una soluci贸n a este problema. Todo es simple con el cliente nativo de Telegram: ya tiene una interacci贸n integrada con un servidor proxy y su configuraci贸n tarda unos segundos. Con la API de Bot, las cosas son un poco diferentes. La aplicaci贸n interact煤a con https://api.telegram.org/ para cada acci贸n del bot de Telegram, y esta direcci贸n, por supuesto, est谩 bloqueada por el ILV.


Como una soluci贸n expresa al problema, inmediatamente se nos ocurri贸 conectar el servidor API del cliente a nuestra red OpenVPN para evitar este bloqueo. La decisi贸n fue rechazada de inmediato, ya que la velocidad de respuesta dej贸 mucho que desear. Google y Yandex no pudieron compartir informaci贸n 煤til conmigo para resolver este problema.


Como resultado, se le ocurri贸 una idea simple y obvia: crear el servidor proxy m谩s simple por su cuenta para conectarse a los telegramas. Por supuesto, elevamos el servidor fuera de la Federaci贸n Rusa para que el proxy funcione


A continuaci贸n se muestra la configuraci贸n nginx que ahora est谩 haciendo su trabajo perfectamente


Nginx config

servidor {
escucha 80;
nombre_servidor my-telegram-proxy.server;
ubicaci贸n / {
proxy_set_header X-Fordered-Host $ host;
proxy_set_header X-Fordered-Server $ host;
proxy_set_header X-Fordered-For $ proxy_add_x_forwards_for;
proxy_pass https://api.telegram.org/ ;
client_max_body_size 100M;
}
}


Adem谩s en la aplicaci贸n, reemplac茅 la URL url BOT para interactuar con telegram, en lugar de
https://api.telegram.org/bot
escribi贸
http: //my-telegram-proxy.server/bot
e integraci贸n con Bot Api obtenida con 茅xito


Para mayor comodidad, cre茅 un contenedor acoplable con instrucciones detalladas para su uso. Esto le permitir谩 elevar su proxy de bot de telegramas con un comando en segundos
https://hub.docker.com/r/zvinger/docker-proxy-rkn/builds/
Ejemplo de comando:
docker run -d -p 8012:80 zvinger/docker-proxy-rkn
y especifique http: // direcci贸n del servidor: 8012 / en la configuraci贸n de la aplicaci贸n. Puede seleccionar cualquier puerto al ingresar un comando

Source: https://habr.com/ru/post/es424427/


All Articles