Documentación de Shadowsocks
navegación
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.