Shadowsocks dokumentācija
Navigācija
Shadowsocks konfigurācijas formāts
Konfigurēt failu
Shadowsocks izmanto JSON formāta konfigurācijas:
{
“serveris”: “mans_servera_ip”,
“server_port”: 8388,
“local_port”:1080,
“password”: “barfoo!”,
“metode”: “chacha20-ietf-poly1305”
}
JSON formāts
- serveris: jūsu resursdatora nosaukums vai servera IP (IPv4/IPv6).
- server_port: servera porta numurs.
- local_port: vietējā porta numurs.
- parole: parole, ko izmanto pārsūtīšanas šifrēšanai.
- metode: šifrēšanas metode.
Šifrēšanas metode
Mēs konfigurējam savus serverus un iesakām izmantot chacha20-ietf-poly1305 AEAD šifru, jo tā ir spēcīgākā šifrēšanas metode.
Ja konfigurējat savu shadowsocks serveri, varat izvēlēties no “chacha20-ietf-poly1305” vai “aes-256-gcm”.
URI un QR kods
Shadowsocks operētājsistēmai Android/IOS izmanto arī BASE64 kodēta URI formāta konfigurācijas:
ss://BASE64-ENCODED-STRING-WHOUT-PADDING#TAG
Vienkāršajam URI jābūt šādam: ss://method:password@hostname:port
Iepriekš minētais URI neatbilst RFC3986. Parolei šajā gadījumā jābūt vienkāršam tekstam, nevis procentiem kodētai.
Piemērs: mēs izmantojam serveri ar 192.168.100.1:8888 izmantojot bf-cfb šifrēšanas metode un parole pārbaude/!@#:.
Pēc tam ar vienkāršu URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, mēs varam ģenerēt BASE64 kodēto URI:
> console.log("ss://" + btoa("bf-cfb:test/!@#:@192.168.100.1:8888")
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Lai palīdzētu sakārtot un identificēt šos URI, aiz BASE64 kodētās virknes varat pievienot tagu:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Risināšana
Shadowsocks izmanto adreses, kas atrodamas SOCKS5 adreses formātā:
[1 baita veids][mainīga garuma resursdators][2 baitu ports]
Šeit ir definētie adrešu veidi:
- 0x01: resursdators ir 4 baitu IPv4 adrese.
- 0x03 : resursdators ir mainīga garuma virkne, kas sākas ar 1 baita garumu, kam seko ne vairāk kā 255 baitu domēna nosaukums.
- 0x04: resursdators ir 16 baitu IPv6 adrese.
Porta numurs ir 2 baitu lielais neparakstīts vesels skaitlis.
TCP
Ss-local klients uzsāk savienojumu ar ss-remote, nosūtot šifrētus datus, sākot ar mērķa adresi, kam seko lietderīgās slodzes dati. Šifrēšana būs atšķirīga atkarībā no izmantotā šifra.
[mērķa adrese][lietderīgā slodze]
SS-tālvadības pults saņem šifrētos datus, pēc tam atšifrē un parsē mērķa adresi. Pēc tam tas izveido jaunu TCP savienojumu ar mērķi un pārsūta uz to lietderīgās slodzes datus. ss-remote saņem atbildi no mērķa, pēc tam šifrē datus un pārsūta tos atpakaļ uz ss-local, līdz tas tiek atvienots.
Apmulsināšanas nolūkos vietējai un tālvadībai ir jānosūta rokasspiediena dati ar nelielu slodzi pirmajā paketē.
UDP
ss-local nosūta šifrētu datu paketi, kas satur mērķa adresi un lietderīgo slodzi, uz ss-remote.
[mērķa adrese][lietderīgā slodze]
Kad šifrētā pakete ir saņemta, ss-remote atšifrē un parsē mērķa adresi. Pēc tam tas nosūta mērķim jaunu datu paketi ar lietderīgo slodzi. ss-remote saņem datu paketes no mērķa un katras paketes lietderīgajai slodzei pievieno mērķa adresi. Šifrētās kopijas tiek nosūtītas atpakaļ uz ss-local.
[mērķa adrese][lietderīgā slodze]
Šo procesu var samazināt līdz ss-remote, kas veic tīkla adreses tulkošanu ss-local.