Documentación de Shadowsocks

Formato de configuración de Shadowsocks

Archivo de configuración

Shadowsocks toma configuraciones de formato JSON:

{

    “servidor”:”mi_ip_del_servidor”,

    "Server_port": 8388,

    "Puerto_local": 1080,

    “contraseña”:”barfoo!”,

    “método”:”chacha20-ietf-poly1305″

}

Formato JSON

  • servidor: su nombre de host o IP del servidor (IPv4/IPv6).
  • server_port: número de puerto del servidor.
  • local_port: número de puerto local.
  • contraseña: una contraseña utilizada para cifrar la transferencia.
  • método: método de cifrado.

Método de cifrado

Configuramos nuestros servidores y le recomendamos que utilice el cifrado AEAD chacha20-ietf-poly1305 porque es el método de cifrado más seguro. 

Si configura su propio servidor shadowsocks, puede elegir entre "chacha20-ietf-poly1305" o "aes-256-gcm".

URI y código QR

Shadowsocks para Android / IOS también acepta configuraciones de formato URI codificadas en BASE64:

ss://BASE64-CADENA-CODIFICADA-SIN-RELLENO#ETIQUETA

 

El URI simple debe ser: ss://método:contraseña@nombre de host:puerto

El URI anterior no sigue RFC3986. La contraseña en este caso debe ser texto sin formato, no codificada en porcentaje.



Ejemplo: estamos usando un servidor en 192.168.100.1:8888 usando bf-cfb método de cifrado y contraseña prueba/!@#:

 

Luego, con el URI simple ss://bf-cfb:prueba/!@#:@192.168.100.1:8888, podemos generar el URI codificado en BASE64: 

 

> consola.log(“ss://” + btoa(“bf-cfb:prueba/!@#:@192.168.100.1:8888”) )

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Para ayudar a organizar e identificar estos URI, puede agregar una etiqueta después de la cadena codificada en BASE64:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Direccionamiento

Shadowsocks utiliza las direcciones que se encuentran en el formato de dirección SOCKS5:

[tipo de 1 byte] [host de longitud variable] [puerto de 2 bytes]

 

Estos son los tipos de dirección definidos:

  • 0x01: el host es una dirección IPv4 de 4 bytes.
  • 0x03: host es una cadena de longitud variable, que comienza con una longitud de 1 byte, seguida de un nombre de dominio de 255 bytes como máximo.
  • 0x04: el host es una dirección IPv16 de 6 bytes.

 

El número de puerto es un entero sin signo big-endian de 2 bytes.

TCP

El cliente ss-local inicia una conexión a ss-remote mediante el envío de datos cifrados que comienzan con la dirección de destino seguida de los datos de carga útil. El cifrado será diferente según el cifrado utilizado.

[dirección de destino][carga útil]

El ss-remote recibe los datos cifrados, luego descifra y analiza la dirección de destino. Luego, crea una nueva conexión TCP con el objetivo y le reenvía los datos de la carga útil. ss-remote recibe una respuesta del objetivo, luego cifra los datos y los reenvía a ss-local hasta que se desconecta.

Para fines de ofuscación, local y remoto deben enviar los datos del protocolo de enlace con alguna carga útil en el primer paquete.

UDP

ss-local envía el paquete de datos cifrados que contiene la dirección de destino y la carga útil a ss-remote.

[dirección de destino][carga útil]

Una vez que se recibe el paquete cifrado, ss-remote descifra y analiza la dirección de destino. Luego envía un nuevo paquete de datos con la carga útil al destino. ss-remote recibe los paquetes de datos del destino y antepone la dirección de destino a la carga útil en cada paquete. Las copias cifradas se devuelven a ss-local.

[dirección de destino][carga útil]

Este proceso puede reducirse a ss-remote realizando una traducción de direcciones de red para ss-local.

Comience su prueba gratuita de 5 días