Shadowsocks dokumentasie
navigasie
Shadowsocks-konfigurasieformaat
Stel lêer op
Shadowsocks neem JSON-formaat konfigurasies:
{
"bediener":"my_bediener_ip",
"bediener_poort":8388,
"plaaslike_poort":1080,
"wagwoord":"barfoo!",
“metode”:”chacha20-ietf-poly1305″
}
JSON-formaat
- bediener: jou gasheernaam of bediener-IP (IPv4/IPv6).
- bediener_poort: bedienerpoortnommer.
- plaaslike_poort: plaaslike poortnommer.
- wagwoord: 'n wagwoord wat gebruik word om oordrag te enkripteer.
- metode: enkripsie metode.
Enkripsie metode
Ons konfigureer ons bedieners en beveel aan dat jy die chacha20-ietf-poly1305 AEAD-kode gebruik omdat dit die sterkste metode van enkripsie is.
As u u eie shadowsocks-bediener opstel, kan u kies tussen óf “chacha20-ietf-poly1305” of “aes-256-gcm”.
URI en QR-kode
Shadowsocks vir Android / IOS neem ook BASE64-gekodeerde URI-formaat konfigurasies:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
Die gewone URI moet wees: ss://metode:wagwoord@gasheernaam:poort
Bogenoemde URI volg nie RFC3986 nie. Die wagwoord in hierdie geval moet gewone teks wees, nie persent-geënkodeer nie.
Voorbeeld: Ons gebruik 'n bediener by 192.168.100.1:8888 gebruik van bf-cfb enkripsiemetode en wagwoord toets/!@#:.
Dan, met die gewone URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, kan ons die BASE64-gekodeerde URI genereer:
> console.log(“ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”))
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Om hierdie URI's te help organiseer en identifiseer, kan jy 'n merker na die BASE64-gekodeerde string byvoeg:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
aanspreek
Shadowsocks gebruik die adresse wat in die SOCKS5-adresformaat gevind word:
[1-greep-tipe][gasheer met veranderlike lengte][2-greep-poort]
Hier is die adrestipes wat gedefinieer is:
- 0x01: gasheer is 'n 4-grepe IPv4-adres.
- 0x03 : gasheer is 'n string met veranderlike lengte, wat begin met 'n 1-grepe lengte, gevolg deur 'n maksimum 255-grepe domeinnaam.
- 0x04: gasheer is 'n 16-grepe IPv6-adres.
Die poortnommer is 'n 2-grepe groot-endian ongetekende heelgetal.
TCP
Die ss-plaaslike kliënt begin 'n verbinding met ss-remote deur geënkripteerde data te stuur wat begin met die teikenadres gevolg deur die loonvragdata. Die enkripsie sal verskil afhangende van die syfer wat gebruik word.
[teikenadres][loonvrag]
Die ss-remote ontvang die geënkripteerde data, dan dekripteer en ontleed die teikenadres. Dan skep dit 'n nuwe TCP-verbinding met die teiken en stuur die loonvragdata daarnatoe. ss-remote ontvang 'n antwoord van die teiken en enkripteer dan die data en stuur dit terug na ss-local totdat dit ontkoppel word.
Vir verduistering doeleindes, moet plaaslike en afgeleë die handdruk data stuur met 'n paar loonvrag in die eerste pakkie.
UDP
ss-local stuur die geënkripteerde datapakket wat die teikenadres en loonvrag bevat na ss-remote.
[teikenadres][loonvrag]
Sodra die geënkripteerde pakkie ontvang is, dekripteer en ontleed ss-remote die teikenadres. Dit stuur dan 'n nuwe datapakkie met die loonvrag na die teiken. ss-remote ontvang die datapakkies vanaf die teiken en plaas die teikenadres vooraf aan die loonvrag in elke pakkie. Geënkripteerde kopieë word teruggestuur na ss-local.
[teikenadres][loonvrag]
Hierdie proses kan daarop neerkom dat ss-remote 'n netwerkadresvertaling vir ss-local uitvoer.