Shadowsocks dokumentacija

„Shadowsocks“ konfigūracijos formatas

Konfigūruoti failą

„Shadowsocks“ naudoja JSON formato konfigūracijas:

{

    „serveris“: „mano_serverio_ip“,

    "server_port": 8388,

    „local_port“: 1080,

    „slaptažodis“: „barfoo!“,

    "metodas": "chacha20-ietf-poly1305"

}

JSON formatas

  • serveris: savo pagrindinio kompiuterio pavadinimą arba serverio IP (IPv4 / IPv6).
  • server_port: serverio prievado numeris.
  • local_port: vietinio prievado numeris.
  • slaptažodis: slaptažodis, naudojamas perdavimui užšifruoti.
  • metodas: šifravimo metodas.

Šifravimo metodas

Konfigūruojame savo serverius ir rekomenduojame naudoti chacha20-ietf-poly1305 AEAD šifrą, nes tai yra stipriausias šifravimo būdas. 

Jei konfigūruojate savo „shadowsocks“ serverį, galite pasirinkti „chacha20-ietf-poly1305“ arba „aes-256-gcm“.

URI ir QR kodas

„Shadowsocks“, skirta „Android“ / „IOS“, taip pat naudoja BASE64 koduotus URI formato konfigūracijas:

ss://BASE64-ENCODED-STRING-BE PADDING#TAG

 

Paprastas URI turėtų būti: ss://method:password@hostname:port

Aukščiau pateiktas URI neatitinka RFC3986. Slaptažodis šiuo atveju turėtų būti paprastas tekstas, o ne užkoduotas procentais.



Pavyzdys: Mes naudojame serverį 192.168.100.1:8888 naudojant bf-cfb šifravimo būdas ir slaptažodis test/!@#:

 

Tada su paprastu URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, galime sugeneruoti BASE64 koduotą URI: 

 

> console.log("ss://" + btoa("bf-cfb:test/!@#:@192.168.100.1:8888")

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Norėdami padėti tvarkyti ir identifikuoti šiuos URI, galite pridėti žymą po BASE64 užkoduotos eilutės:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Adresavimas

„Shadowsocks“ naudoja adresus, esančius SOCKS5 adreso formatu:

[1 baito tipas][kintamo ilgio priegloba][2 baitų prievadas]

 

Čia yra apibrėžti adresų tipai:

  • 0x01: pagrindinis kompiuteris yra 4 baitų IPv4 adresas.
  • 0x03 : priegloba yra kintamo ilgio eilutė, prasidedanti 1 baito ilgiu, po kurio seka ne daugiau kaip 255 baitų domeno pavadinimas.
  • 0x04: pagrindinis kompiuteris yra 16 baitų IPv6 adresas.

 

Prievado numeris yra 2 baitų didysis beženklis sveikasis skaičius.

TCP

Ss-local klientas inicijuoja ryšį su ss-remote, siųsdamas užšifruotus duomenis, pradedant tiksliniu adresu, po kurio seka naudingos apkrovos duomenys. Šifravimas skirsis priklausomai nuo naudojamo šifro.

[tikslinis adresas][naudinga apkrova]

Ss-remote gauna užšifruotus duomenis, tada iššifruoja ir analizuoja tikslinį adresą. Tada jis sukuria naują TCP ryšį su taikiniu ir persiunčia į jį naudingos apkrovos duomenis. ss-remote gauna atsakymą iš taikinio, tada užšifruoja duomenis ir persiunčia juos atgal į ss-local, kol bus atjungtas.

Užtemdymo tikslais vietinis ir nuotolinis turėtų siųsti rankos paspaudimo duomenis su tam tikra naudingoji apkrova pirmame pakete.

UDP

ss-local siunčia užšifruotą duomenų paketą, kuriame yra tikslinis adresas ir naudingoji apkrova, į ss-remote.

[tikslinis adresas][naudinga apkrova]

Kai gaunamas užšifruotas paketas, ss-remote iššifruoja ir analizuoja tikslinį adresą. Tada jis siunčia naują duomenų paketą su naudingu kroviniu į tikslą. ss-remote gauna duomenų paketus iš tikslinio objekto ir kiekviename pakete prideda tikslinį adresą prie naudingos apkrovos. Šifruotos kopijos siunčiamos atgal į ss-local.

[tikslinis adresas][naudinga apkrova]

Šis procesas gali būti sutrumpintas iki ss-remote, atliekant tinklo adreso vertimą ss-local.

Pradėkite 5 dienų nemokamą bandomąjį laikotarpį