Telegram Messenger tiene soporte para diferentes tipos de servidores proxy: un servidor proxy SOCKS5 estándar y un servidor proxy MTProto.

En este tutorial aprenderemos a construir un servidor proxy SOCKS5. Este estilo de proxy puede ayudarte a evitar la censura en ciertos países.

A continuación aprenderemos a crear un servidor proxy SOCKS5 que implemente el protocolo TLS falso en el mismo host que el servidor web.

Si prefieres montar un servidor con MTProto, puedes hacerlo en el siguiente tutorial:

Instalar tu propio Proxy para Telegram con MTProto
En este tutorial aprenderemos a construir un servidor proxy MTProto. Este estilo de proxy puede ayudarte a evitar la censura en ciertos países.

Requisitos básicos

Para hacer este tutorial necesitaremos un servidor cloud o VPS que disponga de IP de un país el cual Telegram no se encuentre bloqueado.

Este tutorial lo realizaremos con Debian 12, pero se puede usar con diferentes distribuciones de GNU/Linux basadas en Debian.

Necesitaremos también acceso root completo por SSH.

Paso 1: Conectarse al servidor

Lo primero que haremos será conectarnos al servidor. Para ello usaremos SSH y el usuario root. Para conectarnos ejecutaremos lo siguiente:

ssh root@[IP_SERVIDOR]

Con esto, después de introducir la contraseña, ya estaremos conectados al servidor.

root@proxy:~# 

Paso 2: Configurar el Firewall de tu servidor

Muchos proveedores de servidores disponen de un Firewall, en este cortafuegos tendremos que configurarlo de manera que tengamos los siguientes puertos habilitados:

Puerto Uso
22/tcp Acceso SSH, puedes configurar otro si quieres
8443/tcp Acceso SOCKS5

Paso 3: Instalación y configuración de Dante Server

Dante Server es un servidor de SOCKS5 que permite configurar todo lo necesario para utilizarlo en Telegram.

apt install dante-server

Eliminamos el contenido del fichero /etc/danted.conf y añadimos el siguiente:

logoutput: syslog
user.privileged: root
user.unprivileged: nobody

internal: 0.0.0.0 port = 8443

external: eth0

socksmethod: username
clientmethod: none
user.libwrap: nobody
client pass {
        from: 0/0 to: 0/0
        log: connect disconnect error
}

socks pass {
        from: 0/0 to: 0/0
        log: connect disconnect error
}
💡
En el parámetro internal podremos habilitar el puerto que necesitemos, en este caso, usaremos el puerto 8443.
💡
Tendremos que tener en cuenta, que en external deberemos de poner la interfaz de red que queremos usar. Por lo general suele ser eth0 pero puedes comprobar cual es tu interfaz con el comando ip a .

Ahora tendremos que configurar un usuario que usaremos para conectarnos al Proxy:

useradd --shell /usr/sbin/nologin proxyuser

Y le añadimos una contraseña segura:

passwd proxyuser
💡
Para el tutorial hemos creado el usuario proxyuser pero puedes crear los usuarios que necesites con el nombre que quieras. Eso si, una contraseña segura siempre! 😺

Una vez tenemos nuestro fichero de configuración a nuestro gusto, lo guardamos y reiniciamos el servicio:

systemctl restart danted
systemctl enable danted

Podemos comprobar que está escuchando correctamente con:

# ss -tulpn | grep 443
tcp LISTEN 0 511 0.0.0.0:8443 0.0.0.0:* users (("danted",pid=14977,fd=8))     

Paso 4: Generando la configuración del Proxy

Ahora tenemos que construir la URL para configurar el Proxy directamente en Telegram. La estructura de este comando tiene que ser como esto:

# CON HTTPS:
https://t.me/socks?server=[IP_SERVIDOR]&port=[PUERTO]&user=[USUARIO]&pass=[CONTRASEÑA]

# CON TELEGRAM:
tg://socks?server=[IP_SERVIDOR]&port=[PUERTO]&user=[USUARIO]&pass=[CONTRASEÑA]

Deberemos de rellenar los campos de la siguiente forma:

  • IP_SERVIDOR: La IP pública de nuestro servidor
  • PUERTO: El puerto que hayamos habilitado en el fichero de configuración, en este tutorial hemos usado el 8443.
  • USUARIO: El nombre de usuario que hayamos creado.
  • CONTRASEÑA: La contraseña del usuario.

Paso 5: Probando que funciona [Opcional]

Para comprobar que funciona correctamente el Proxy, podemos hacerlo probando con curl, una herramienta genial.

curl -I socks5://proxyuser:[CONTRASEÑA]@[IP_SERVIDOR]:8443 https://voidnull.es

Este comando obtendremos la siguiente respuesta:

HTTP/2 200 
server: nginx/1.18.0
date: Sun, 24 Mar 2024 21:26:11 GMT
content-type: text/html; charset=utf-8
vary: Accept-Encoding
x-powered-by: Express
cache-control: public, max-age=0
etag: W/"12097-ohz7TsFboSPpJzHDxRkuUR91EMU"
vary: Accept-Encoding
x-varnish: 5345170
age: 0
via: 1.1 varnish (Varnish/6.5)
accept-ranges: bytes
access-control-allow-origin: *
access-control-allow-credentials: true
content-security-policy: upgrade-insecure-requests;

Veremos que la respuesta HTTP/2 es con el código de salida 200, lo que significa que la respuesta es correcta.

Paso 6: Conectarse al Proxy desde Telegram

Ahora desde nuestro dispositivo tenemos que abrir la URL que hemos generado para HTTP o TG y abrirla con Telegram:

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación