Documentazione di Shadowsocks
navigazzioni
Formatu di cunfigurazione Shadowsocks
File di configurazione
Shadowsocks piglia cunfigurazioni in formatu JSON:
{
"server":"my_server_ip",
"server_port": 8388,
"portu_locale": 1080,
"password":"barfoo!",
"metudu": "chacha20-ietf-poly1305"
}
Format JSON
- servitore: u vostru hostname o l'IP di u servitore (IPv4/IPv6).
- server_port: numeru di portu di u servitore.
- local_port : numeru di portu lucale.
- password: una password utilizata per criptà u trasferimentu.
- metudu: mètudu di criptografia.
Metudu di criptografia
Configurate i nostri servitori è ricumandemu chì utilizate u cifru chacha20-ietf-poly1305 AEAD perchè hè u metudu più forte di criptografia.
Se cunfigurà u vostru servitore shadowsocks, pudete sceglie "chacha20-ietf-poly1305" o "aes-256-gcm".
URI è codice QR
Shadowsocks per Android / IOS piglia ancu cunfigurazione di formatu URI codificata BASE64:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
L'URI chjaru deve esse: ss://method:password@hostname:port
L'URI sopra ùn seguita micca RFC3986. A password in questu casu deve esse testu chjaru, micca per centu codificatu.
Esempiu: Utilizemu un servitore à 192.168.100.1:8888 usannu bf-cfb metudu di criptografia è password prova/!@#:.
Allora, cù u pianu URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, pudemu generà l'URI codificata BASE64:
> console.log ("ss://" + btoa ("bf-cfb:test/!@#:@192.168.100.1:8888"))
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Per aiutà à urganizà è identificà questi URI, pudete aghjunghje una tag dopu a stringa codificata BASE64:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Indirizzu
Shadowsocks usa l'indirizzi truvati in u formatu di indirizzu SOCKS5:
[Tipu di 1 byte][host di lunghezza variabile][portu di 2 byte]
Eccu i tipi di indirizzu definiti:
- 0x01: l'ospite hè un indirizzu IPv4 di 4 byte.
- 0x03 : l'ospite hè una stringa di lunghezza variabile, cuminciendu cù una lunghezza di 1 byte, seguita da un nome di duminiu massimu di 255 byte.
- 0x04: l'ospite hè un indirizzu IPv16 di 6 byte.
U numeru di u portu hè un integer senza signu big-endian di 2 byte.
TCP
U cliente ss-local inizia una cunnessione à ss-remote mandendu dati criptati cuminciendu cù l'indirizzu di destinazione seguitu da i dati di carica. U criptu serà diversu secondu u cifru utilizatu.
[indirizzu di destinazione] [payload]
U ss-remote riceve i dati criptati, poi decripta è analizza l'indirizzu di destinazione. Allora crea una nova cunnessione TCP à u mira è trasmette i dati di u payload à questu. ss-remote riceve una risposta da u target, poi cripta i dati è rinvia à ss-local finu à ch'ellu hè disconnected.
Per scopi di offuscazione, lucale è remota duveranu mandà e dati di handshake cù qualchì payload in u primu pacchettu.
UDP
ss-local manda u pacchettu di dati criptatu chì cuntene l'indirizzu di destinazione è u payload à ss-remote.
[indirizzu di destinazione] [payload]
Una volta chì u pacchettu criptatu hè ricevutu, ss-remote decripta è analizza l'indirizzu di destinazione. Allora manda un novu pacchettu di dati cù a carica utile à u mira. ss-remote riceve i pacchetti di dati da u target è prepende l'indirizzu di destinazione à u payload in ogni pacchettu. E copie criptate sò rimandate à ss-local.
[indirizzu di destinazione] [payload]
Stu prucessu pò esse ridutta à ss-remote eseguisce una traduzzione di l'indirizzu di rete per ss-local.