Shadowsocks dokumentacija
navigacija
Shadowsocks konfiguracijski format
Datoteka za konfiguriranje
Shadowsocks preuzima konfiguracije JSON formata:
{
“poslužitelj”:”moj_ip_poslužitelja”,
“port_poslužitelja”:8388,
“local_port”:1080,
“lozinka”:”barfoo!”,
“metoda”:”chacha20-ietf-poly1305”
}
JSON format
- poslužitelj: vaše ime hosta ili IP poslužitelja (IPv4/IPv6).
- server_port: broj porta poslužitelja.
- local_port: lokalni broj porta.
- lozinka: lozinka koja se koristi za šifriranje prijenosa.
- metoda: metoda šifriranja.
Metoda šifriranja
Konfiguriramo naše poslužitelje i preporučujemo da koristite chacha20-ietf-poly1305 AEAD šifru jer je to najjača metoda enkripcije.
Ako konfigurirate vlastiti shadowsocks poslužitelj, možete birati između “chacha20-ietf-poly1305” ili “aes-256-gcm”.
URI & QR kod
Shadowsocks za Android / IOS također preuzima konfiguracije URI formata kodiranih BASE64:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
Obični URI trebao bi biti: ss://method:password@hostname:port
Gornji URI ne slijedi RFC3986. Lozinka bi u ovom slučaju trebala biti običan tekst, a ne postotno kodirana.
Primjer: koristimo poslužitelj na 192.168.100.1:8888 koristeći bf-cfb način šifriranja i lozinku test/!@#:.
Zatim, s običnim URI-jem ss://bf-cfb:test/!@#:@192.168.100.1:8888, možemo generirati BASE64 kodirani URI:
> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Kako biste organizirali i identificirali ove URI-je, možete dodati oznaku nakon BASE64 kodiranog niza:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Adresiranje
Shadowsocks koristi adrese koje se nalaze u formatu adrese SOCKS5:
[1-bajtni tip][host promjenjive duljine][2-bajtni priključak]
Ovdje su definirane vrste adresa:
- 0x01 : host je 4-bajtna IPv4 adresa.
- 0x03 : host je niz promjenjive duljine, počevši od 1 bajta, nakon čega slijedi naziv domene od najviše 255 bajta.
- 0x04 : host je 16-bajtna IPv6 adresa.
Broj porta je 2-bajtni veliki-endian cijeli broj bez predznaka.
TCP
Ss-local klijent inicira vezu sa ss-remote slanjem šifriranih podataka počevši s ciljnom adresom nakon koje slijede podaci o sadržaju. Enkripcija će se razlikovati ovisno o korištenoj šifri.
[ciljna adresa][korisni teret]
Ss-remote prima šifrirane podatke, zatim dekriptira i analizira ciljnu adresu. Zatim stvara novu TCP vezu s ciljem i prosljeđuje joj podatke o korisnom teretu. ss-remote prima odgovor od cilja, zatim šifrira podatke i prosljeđuje ih natrag na ss-local dok se ne prekine veza.
U svrhu zamagljivanja, lokalni i udaljeni bi trebali poslati podatke o rukovanju s nešto korisnog sadržaja u prvom paketu.
UDP
ss-local šalje šifrirani paket podataka koji sadrži ciljnu adresu i sadržaj na ss-remote.
[ciljna adresa][korisni teret]
Nakon što je šifrirani paket primljen, ss-remote dekriptira i analizira ciljnu adresu. Zatim šalje novi paket podataka s korisnim sadržajem do cilja. ss-remote prima pakete podataka od cilja i dodaje ciljnu adresu u sadržaj svakog paketa. Šifrirane kopije šalju se natrag na ss-local.
[ciljna adresa][korisni teret]
Ovaj se proces može svesti na ss-remote koji izvodi prijevod mrežne adrese za ss-local.