Documentación de Shadowsocks

Formato de configuración de Shadowsocks

Ficheiro de configuración

Shadowsocks toma configuracións de formato JSON:

{

    “server”:”my_server_ip”,

    “porto_servidor”:8388,

    "porto_local":1080,

    “contrasinal”:”barfoo!”,

    "método":"chacha20-ietf-poly1305"

}

Formato JSON

  • servidor: o seu nome de host ou IP do servidor (IPv4/IPv6).
  • server_port: número de porto do servidor.
  • local_port: número de porto local.
  • contrasinal: un contrasinal usado para cifrar a transferencia.
  • método: método de cifrado.

Método de cifrado

Configuramos os nosos servidores e recomendamos que utilices o cifrado AEAD chacha20-ietf-poly1305 porque é o método máis potente de cifrado. 

Se configuras o teu propio servidor shadowsocks, podes escoller entre "chacha20-ietf-poly1305" ou "aes-256-gcm".

URI e código QR

Shadowsocks para Android/IOS tamén leva configuracións do formato URI codificado BASE64:

ss://BASE64-CODIFICADO-CADA-SEN-PADDING#TAG

 

O URI simple debe ser: ss://método:contrasinal@nome de host:porto

O URI anterior non segue RFC3986. O contrasinal neste caso debe ser texto simple, non codificado por cento.



Exemplo: estamos a usar un servidor en 192.168.100.1:8888 uso bf-cfb método de cifrado e contrasinal proba/!@#:

 

Despois, co URI simple ss://bf-cfb:test/!@#:@192.168.100.1:8888, podemos xerar o URI codificado en BASE64: 

 

> console.log( "ss://" + btoa ("bf-cfb:test/!@#:@192.168.100.1:8888"))

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Para axudar a organizar e identificar estes URI, pode engadir unha etiqueta despois da cadea codificada BASE64:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Addressing

Shadowsocks usa os enderezos que se atopan no formato de enderezo SOCKS5:

[Tipo de 1 byte][anfitrión de lonxitude variable][Porto de 2 bytes]

 

Aquí están os tipos de enderezos definidos:

  • 0x01: o host é un enderezo IPv4 de 4 bytes.
  • 0x03 : o host é unha cadea de lonxitude variable, que comeza cunha lonxitude de 1 byte, seguida dun nome de dominio de 255 bytes como máximo.
  • 0x04: o host é un enderezo IPv16 de 6 bytes.

 

O número de porto é un enteiro big-endian sen asinar de 2 bytes.

TCP

O cliente ss-local inicia unha conexión con ss-remote enviando datos cifrados comezando polo enderezo de destino seguido dos datos da carga útil. O cifrado será diferente dependendo do cifrado utilizado.

[enderezo de destino][carga útil]

O ss-remote recibe os datos cifrados, despois descifra e analiza o enderezo de destino. A continuación, crea unha nova conexión TCP co destino e envíalle os datos da carga útil. ss-remote recibe unha resposta do destino, despois cifra os datos e reenvíaos a ss-local ata que se desconecte.

Para propósitos de ofuscación, local e remoto deberían enviar os datos do apretón de mans con algunha carga útil no primeiro paquete.

UDP

ss-local envía o paquete de datos cifrados que contén o enderezo de destino e a carga útil a ss-remote.

[enderezo de destino][carga útil]

Unha vez que se recibe o paquete cifrado, ss-remote descifra e analiza o enderezo de destino. Despois envía un novo paquete de datos coa carga útil ao destino. ss-remote recibe os paquetes de datos do destino e antepón o enderezo de destino á carga útil de cada paquete. As copias cifradas son enviadas de volta a ss-local.

[enderezo de destino][carga útil]

Este proceso pódese reducir a ss-remote que realiza unha tradución de enderezos de rede para ss-local.

Comeza a túa proba gratuíta de 5 días