Documentație Shadowsocks
Navigare
Formatul de configurare Shadowsocks
Fișierul de configurare
Shadowsocks preia configurații în format JSON:
{
„server”:”my_server_ip”,
„Server_port”: 8388,
„port_local”:1080,
„parolă”:”barfoo!”,
„metodă”:”chacha20-ietf-poly1305″
}
Format JSON
- Server : numele dvs. de gazdă sau IP-ul serverului (IPv4/IPv6).
- server_port: numărul portului serverului.
- local_port: numărul portului local.
- parola: o parolă folosită pentru a cripta transferul.
- metoda: metoda de criptare.
Metoda de criptare
Configuram serverele noastre și recomandăm să utilizați cifrul AEAD chacha20-ietf-poly1305 deoarece este cea mai puternică metodă de criptare.
Dacă vă configurați propriul server shadowsocks, puteți alege dintre „chacha20-ietf-poly1305” sau „aes-256-gcm”.
URI și codul QR
Shadowsocks pentru Android / IOS acceptă și configurații de format URI codificate BASE64:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
URI-ul simplu ar trebui să fie: ss://method:password@hostname:port
URI-ul de mai sus nu urmează RFC3986. Parola în acest caz ar trebui să fie text simplu, nu codificată procentual.
Exemplu: folosim un server la 192.168.100.1:8888 folosind bf-cfb metoda de criptare și parola Test/!@#:.
Apoi, cu URI simplu ss://bf-cfb:test/!@#:@192.168.100.1:8888, putem genera URI-ul codificat BASE64:
> console.log( „ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”))
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Pentru a ajuta la organizarea și identificarea acestor URI-uri, puteți adăuga o etichetă după șirul codificat BASE64:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
adresare
Shadowsocks folosește adresele găsite în formatul de adresă SOCKS5:
[tip de 1 octet][gazdă cu lungime variabilă][port de 2 octeți]
Iată tipurile de adrese definite:
- 0x01: gazda este o adresă IPv4 de 4 octeți.
- 0x03 : gazda este un șir de lungime variabilă, începând cu o lungime de 1 octet, urmată de un nume de domeniu de maximum 255 de octeți.
- 0x04: gazda este o adresă IPv16 de 6 octeți.
Numărul portului este un număr întreg nesemnat big-endian de 2 octeți.
TCP
Clientul ss-local inițiază o conexiune la ss-remote prin trimiterea de date criptate începând cu adresa țintă urmată de datele de încărcare utilă. Criptarea va fi diferită în funcție de cifrul utilizat.
[adresă țintă][sarcină utilă]
ss-remote primește datele criptate, apoi decriptează și analizează adresa țintă. Apoi creează o nouă conexiune TCP la țintă și îi transmite datele de încărcare utilă. ss-remote primește un răspuns de la țintă, apoi criptează datele și le transmite înapoi către ss-local până când este deconectată.
În scopuri de ofuscare, local și la distanță ar trebui să trimită datele de handshake cu o anumită sarcină utilă în primul pachet.
UDP
ss-local trimite pachetul de date criptate care conține adresa țintă și sarcina utilă către ss-remote.
[adresă țintă][sarcină utilă]
Odată ce pachetul criptat este primit, ss-remote decriptează și analizează adresa țintă. Apoi trimite un nou pachet de date cu sarcina utilă către țintă. ss-remote primește pachetele de date de la țintă și înaintează adresa țintă la sarcina utilă din fiecare pachet. Copiile criptate sunt trimise înapoi la ss-local.
[adresă țintă][sarcină utilă]
Acest proces poate fi redus la ss-remote care efectuează o traducere a adresei de rețea pentru ss-local.