579 - Proxy y VPN propios para Telegram
configura #telegram con un #proxy #socks5 o #mtproxy o utilizando una #vpn para utilizarlo en cualquier circunstancia, para levantar tu proxy con #docker
Como seguro que ya sabes, y has oído en multitud de medios, hace unos días un juez ordenó bloquear Telegram en España, de forma cautelar, a raíz de una denuncia de varias plataformas multimedia. Esto de que se bloquee Telegram no es algo nuevo en otros países, aunque si en España. Así que desde hace tiempo, Telegram, incorporó dentro de la misma aplicación opciones para poder evadir estas bloqueos. Así, en este episodio del podcast te cuento las opciones que tienes y las que yo he implementado.
Proxy y VPN propios para Telegram
Sobre la medida
Como ya comenté ayer mismo en el podcast de [Ubuntu y otras hierbas](), hay algo que se me escapa en todo esto. Básicamente, como puede ser que prevalezca la propiedad intelectual frente al derecho a la información y la libertad de expresión.
Pero no solo esto, estamos hablando de algunas plataformas multimedia frente a millones de usuarios. Es decir, entiendo que se está anteponiendo el derecho de unos pocos frente al derecho de todos.
Simplemente es hacer una reflexión sobre este aspecto, sin entrar en mas cuestiones.
Soberanía digital
Hace ya mucho tiempo que la soberanía digital entró a formar parte de mi vida. En este sentido, tengo alojados diferentes servicios en un servidor virtual, que casualmente está fuera de España. Aquí es una casualidad que esté fuera de España, pero tal y como está el asunto, lo cierto es que tiene todo el sentido del mundo.
En ese servidor virtual, tengo alojados diferentes servicios, que mantengo yo mismo. Como puede ser mi propio servicio de mensajería, Matrix, o una VPN, mi propio servicio de control de versiones, servicios de notas, y mucho mas. Y ahora también un proxy socks5.
Soy consciente de que esto de tener tus propios servicios representa un coste y un esfuerzo personal, en tanto en cuanto hay que mantenerlo. Pero, en situaciones como la que nos encontramos es cuando te das cuenta de lo importante que es tu soberanía digital.
Opciones
En este caso te traigo varias opciones para poder seguir utilizando Telegram a pesar de este bloqueo. Estas opciones tratan de lo mismo, es decir, de aparentar que estas en otro lugar, con lo que escapas completamente a este bloqueo. Una de las opciones es para todo tu sistema de comunicación, mientras que la otra opción es exclusiva para Telegram.
VPN
La primera de las opciones es utilizar una VPN que te permita conectarte como si estuvieras en otro país. En este caso, cuando te conectas a esa VPN lo haces para todo el móvil o el ordenador. Con lo que aparentemente estarás navegando desde otro país.
En mi caso utilizo WireGuard como VPN, aunque lo hago de forma puntual y en ocasiones concretas. No es algo generalizado.
Por supuesto, también puedes utilizar una VPN de un tercero, pero esto tiene el inconveniente de que sabe por donde estás navegando, y esto, a mi no me gusta lo más mínimo. Pero, por supuesto es una opción.
Proxy
Como decía, esto del bloqueo de Telegram no es nuevo, y en ese sentido, tiene habilitado la posibilidad de conectar mediante proxy. Y además te ofrece dos posibilidades. Por un lado socks5 y por otro mtproxy.
Pero no solo Telegram puede hacer uso de un proxy. Por ejemplo, en el caso de Firefox, tienes FoxyProxy, que te permite utilizar uno varios proxies.
MTProxy
MTProxy es un proxy implementado por los desarrolladores de Telegram que hace de intermediario entre tu cliente y Telegram. Básicamente se trata de una herramienta pensada para eludir las restricciones.
Este proxy funciona solo con Telegram, y tiene algunas características específicas, como las siguientes,
- para contectarse, en lugar de iniciar sesión y una constraseña solo usa una contraseña.
- El tráfico es similar a otro tráfico que puedes encontrar.
- La contraseá no se transmite al servidor cuanto estás contectado.
- El tráfico está cifrado
En concreto para MTProxy, he utilizado el siguiente docker-compose.yml
,
version: "3.7"
services:
mtproxy:
image: ghcr.io/dofamin/mtproxy-docker:main
init: true
container_name: mtproxy
environment:
- MTPROTO_REPO_URL
- SECRET
- WORKERS
- TZ
ports:
- 8388:8889
`` Y estas variables están configuradas en un archivo
.env`. Para mas información te recomiendo le des un vistazo al repositorio de GitHub.
Socks5
En el caso de Socks5, que es la opción por la que me he decantado, simplemente, porque finalmente he utilizado el que está implementado en Rust y he podido personalizarlo a mi gusto. Pero lo cierto es que he probado dos, uno implementado en Go y, el que estoy utilizando implementado en Rust.
go-socks5-proxy
Se trata de un simple servidor socks5 con autenticación, que permite tanto el filtrado de destinos tanto por ip como por fqdn. En mi caso, no he probado la parte del firltrado porque realmente no me interesa, pero si que he estado probando el funcionamiento con Telegram y lo cierto es que es realmente sencillo.
A continuación te indico el docker-compose.yml
que estoy utilizando, aunque te recomiendo que le des un vistazo al repositorio de GitHub para que veas su configuración con detalle,
version: "3.7"
services:
socks5:
image: serjs/go-socks5-proxy
init: true
container_name: socks5
environment:
- PROXY_USER
- PROXY_PASSWORD
- PROXY_PORT
volumes:
- ./config.json:/etc/shadowsocks-rust/config.json
ports:
- "8388:8388"
El puerto lo he configurado, porque es el que ya tengo abierto para esto, y no quería complicarme la vida. Sin embargo, elige el que tu consideres, pero recuerda que tienes que abrir el Firewall, para poder utilizarlo.
merino
En este caso no se trata de la versión orginal, sino que es una versión modificada sobre la que actualmente estoy haciendo algunas pruebas, pruebas, y en el que sigo trabajando, porque a partir del de Go, se me han ido ocurriendo algunas cuestiones interesantes, y que voy a implementar.
En concreto este te permite definir varios usuarios y contraseñas, con lo que puedes controlar quien puede acceder y quien no a este servicio. Además puedes configurar el puerto de conexión así como otros detalles como puedes ver en el docker-compose.yml
, que indico a continuación,
ersion: "3.7"
services:
merino:
image: atareao/merino:latest
container_name: merino
init: true
environment:
IP: "0.0.0.0"
PORT: "8388"
#NO_AUTH: true
RUST_LOG: TRACE
TZ: Europe/Madrid
ports:
- "8388:8388"
volumes:
- ./config.yml:/app/config.yml
Y el archivo de configuración es tan sencillo como el que te muestro a continuación,
users:
- username: username
password: password
active: true
- username: username1
password: password1
active: true
- username: username2
password: password2
active: false
fqdns:
- addr: www.google.es
active: true
- addr: www.google.com
active: true
Los users
son los usuarios que pueden acceder y las fqdns
son las que puedes restringir. Por supuesto que el active
es para indicar si está activo un usurario o una fqdn respectivamente.
En cualquier caso te recomiendo que visites el GitHub del fork de merino para que veas exactamente como lo tienes que configurar, y poner en marcha.
Más información,