Saltar al contenido principal

Shadowsocks a través de WebSockets

Versión 1.15.0 o posterior del cliente de Outline.

Este tutorial es una guía detallada para ayudarte a implementar Shadowsocks a través de WebSockets, una técnica eficaz para sortear la censura en los entornos en los que las conexiones de Shadowsocks normales estén bloqueadas. Al encapsular el tráfico de Shadowsocks en WebSockets, puedes hacerlo pasar por tráfico web estándar, lo que mejora la resiliencia y la accesibilidad.

Paso 1: Configura y ejecuta un servidor de Outline

Crea un archivo config.yaml con la siguiente configuración:

web:
servers:
- id: server1
listen: 127.0.0.1:<WEB_SERVER_PORT>

services:
- listeners:
- type: websocket-stream
web_server: server1
path: /<TCP_PATH>
- type: websocket-packet
web_server: server1
path: /<UDP_PATH>
keys:
- id: 1
cipher: chacha20-ietf-poly1305
secret: <SHADOWSOCKS_SECRET>

Descarga la última versión de outline-ss-server y ejecútala con la configuración que has creado:

outline-ss-server -config=config.yaml

Paso 2: Expón el servidor web

Para que se pueda acceder a tu servidor web de WebSocket de forma pública, deberás exponerlo en Internet y configurar TLS. Tienes varias formas de hacerlo. Puedes usar un servidor web local, como Caddy, nginx o Apache (asegurándote de que tenga un certificado TLS válido) o usar un servicio de tunelización, como Cloudflare Tunnel o ngrok.

Ejemplo con TryCloudflare

En este ejemplo, vamos a hacer una demo con TryCloudflare de cómo crear un túnel rápido. Este método te permite exponer tu servidor web local de una forma conveniente y segura sin abrir puertos de entrada.

  1. Descarga e instala cloudflared.

  2. Crea un túnel que dirija al puerto de tu servidor web local:

cloudflared tunnel --url http://127.0.0.1:<WEB_SERVER_PORT>

Cloudflare proporcionará un subdominio (por ejemplo, acids-iceland-davidson-lb.trycloudflare.com) para acceder a tu endpoint de WebSocket y gestionar automáticamente TLS. Apunta el subdominio para consultarlo más tarde.

Paso 3: Crea una clave de acceso dinámica

Genera un archivo YAML de clave de acceso de cliente para tus usuarios utilizando el formato de la página Configuración de claves de acceso e incluye los endpoints de WebSocket que has configurado previamente del lado del servidor:

transport:
$type: tcpudp

tcp:
$type: shadowsocks

endpoint:
$type: websocket
url: wss://<DOMAIN>/<TCP_PATH>
cipher: chacha20-ietf-poly1305
secret: <SHADOWSOCKS_SECRET>

udp:
$type: shadowsocks

endpoint:
$type: websocket
url: wss://<DOMAIN>/<UDP_PATH>
cipher: chacha20-ietf-poly1305
secret: <SHADOWSOCKS_SECRET>

Después de generar el archivo YAML de la clave de acceso dinámica, debes enviárselo a tus usuarios. Puedes alojar el archivo en un servicio de alojamiento web estático o generarlo de forma dinámica. Más información sobre cómo usar claves de acceso dinámicas

Paso 4: Conéctate con el cliente de Outline

Utiliza una de las aplicaciones oficiales del cliente de Outline (versión 1.15.0 y posteriores) y añade la clave de acceso dinámica que acabas de crear como entrada del servidor. Haz clic en Conectar para empezar la tunelización a tu servidor usando la configuración de Shadowsocks a través de Websockets.

Utiliza una herramienta como IPInfo para comprobar que estés navegando por Internet mediante tu servidor de Outline.