Dokumentacija Shadowsocks
ostalo
Format konfiguracije Shadowsocks
Konfiguracijska datoteka
Shadowsocks sprejema konfiguracije formata JSON:
{
“strežnik”:”moj_strežnik_ip”,
“vrata_strežnika”:8388,
“local_port”:1080,
“geslo”:”barfoo!”,
“metoda”:”chacha20-ietf-poly1305”
}
Oblika JSON
- strežnik: vaše ime gostitelja ali IP strežnika (IPv4/IPv6).
- server_port: številka vrat strežnika.
- local_port: lokalna številka vrat.
- geslo: geslo, ki se uporablja za šifriranje prenosa.
- metoda: metoda šifriranja.
Metoda šifriranja
Konfiguriramo naše strežnike in vam priporočamo, da uporabite šifro chacha20-ietf-poly1305 AEAD, ker je najmočnejša metoda šifriranja.
Če konfigurirate lasten strežnik shadowsocks, lahko izbirate med »chacha20-ietf-poly1305« ali »aes-256-gcm«.
URI in koda QR
Shadowsocks za Android / IOS sprejema tudi konfiguracije formata URI, kodiranega z BASE64:
ss://BASE64-KODIRANI-NIZ-BREZ-PADDING#OZNAKE
Navadni URI bi moral biti: ss://method:password@ime gostitelja:vrata
Zgornji URI ne sledi RFC3986. Geslo v tem primeru mora biti golo besedilo, ne odstotno kodirano.
Primer: uporabljamo strežnik na 192.168.100.1:8888 uporabo bf-cfb način šifriranja in geslo test/!@#:.
Nato z navadnim URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, lahko ustvarimo URI, kodiran z BASE64:
> console.log(“ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Za lažje organiziranje in identifikacijo teh URI-jev lahko dodate oznako za kodiranim nizom BASE64:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Naslavljanje
Shadowsocks uporablja naslove v formatu naslova SOCKS5:
[1-bajtni tip][gostitelj spremenljive dolžine][2-bajtna vrata]
Tu so opredeljene vrste naslovov:
- 0x01 : gostitelj je 4-bajtni naslov IPv4.
- 0x03 : gostitelj je niz spremenljive dolžine, ki se začne z 1-bajtno dolžino, ki mu sledi največ 255-bajtno ime domene.
- 0x04 : gostitelj je 16-bajtni naslov IPv6.
Številka vrat je 2-bajtno nepredznačeno celo število z velikim endianom.
TCP
Odjemalec ss-local sproži povezavo s ss-remote tako, da pošlje šifrirane podatke, ki se začnejo s ciljnim naslovom, ki mu sledijo podatki koristnega tovora. Šifriranje se bo razlikovalo glede na uporabljeno šifro.
[ciljni naslov][tovor]
Ss-remote prejme šifrirane podatke, nato dešifrira in razčleni ciljni naslov. Nato ustvari novo povezavo TCP s ciljem in ji posreduje podatke koristnega tovora. ss-remote prejme odgovor od cilja, nato šifrira podatke in jih posreduje nazaj na ss-local, dokler se ne prekine povezava.
Za namene zamegljevanja bi morali lokalni in oddaljeni poslati podatke rokovanja z nekaj koristnega tovora v prvem paketu.
UDP
ss-local pošlje šifriran podatkovni paket, ki vsebuje ciljni naslov in tovor, na ss-remote.
[ciljni naslov][tovor]
Ko je šifrirani paket prejet, ss-remote dešifrira in razčleni ciljni naslov. Nato pošlje nov podatkovni paket s tovorom do cilja. ss-remote prejme podatkovne pakete od cilja in doda ciljni naslov obremenitvi v vsakem paketu. Šifrirane kopije se pošljejo nazaj na ss-local.
[ciljni naslov][tovor]
Ta postopek se lahko skrči na to, da ss-remote izvede prevod omrežnega naslova za ss-local.