Nyaraka za Shadowsocks
Navigation
Umbizo la Usanidi wa Shadowsocks
Sanidi Faili
Shadowsocks huchukua usanidi wa umbizo la JSON:
{
"server":"my_server_ip",
"bandari_ya_seva":8388,
"bandari_ya_ndani":1080,
"nenosiri":"barfoo!",
"mbinu":"chacha20-ietf-poly1305"
}
Umbizo la JSON
- seva: jina lako la mwenyeji au IP ya seva (IPv4/IPv6).
- seva_bandari: nambari ya mlango wa seva.
- local_port: nambari ya bandari ya ndani.
- nenosiri: nenosiri linalotumiwa kusimba uhamishaji kwa njia fiche.
- njia: njia ya usimbaji fiche.
Mbinu ya Usimbaji
Tunasanidi seva zetu na kupendekeza kwamba utumie misimbo ya chacha20-ietf-poly1305 AEAD kwa sababu ndiyo njia thabiti zaidi ya usimbaji fiche.
Ikiwa unasanidi seva yako ya shadowsocks, unaweza kuchagua kutoka kwa "chacha20-ietf-poly1305" au "aes-256-gcm".
URI na Msimbo wa QR
Shadowsocks za Android / IOS pia huchukua usanidi wa muundo wa URI uliosimbwa wa BASE64:
ss://BASE64-ENCODED-STRING-BILA-PADDING#TAG
URI dhahiri inapaswa kuwa: ss://method:password@hostname:port
URI iliyo hapo juu haifuati RFC3986. Nenosiri katika kesi hii linapaswa kuwa maandishi wazi, sio kusimbwa kwa asilimia.
Mfano: Tunatumia seva katika 192.168.100.1:8888 kutumia bf-cfb njia ya usimbaji fiche na nenosiri mtihani/!@#:.
Kisha, na URI wazi ss://bf-cfb:test/!@#:@192.168.100.1:8888, tunaweza kutoa URI iliyosimbwa ya BASE64:
> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Ili kusaidia kupanga na kutambua URI hizi, unaweza kuongeza lebo baada ya mfuatano uliosimbwa wa BASE64:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Akizungumza
Shadowsocks hutumia anwani zinazopatikana katika umbizo la anwani SOCKS5:
[aina ya baiti [aina ya baiti] [kipangishi cha urefu unaobadilika][mlango wa baiti 1]
Hapa kuna aina za anwani zilizofafanuliwa:
- 0x01 : mwenyeji ni anwani ya IPv4 ya baiti 4.
- 0x03 : mwenyeji ni mfuatano wa urefu unaobadilika, unaoanza na urefu wa baiti 1, ukifuatwa na jina la kikoa cha juu cha baiti 255.
- 0x04 : mwenyeji ni anwani ya IPv16 ya baiti 6.
Nambari ya bandari ni nambari kamili ya baiti 2 isiyo na saini.
TCP
Kiteja cha ss-local huanzisha muunganisho wa ss-remote kwa kutuma data iliyosimbwa kwa njia fiche kuanzia anwani lengwa ikifuatiwa na data ya upakiaji. Usimbaji fiche utakuwa tofauti kulingana na msimbo uliotumika.
[anwani lengwa][payload]
ss-remote hupokea data iliyosimbwa, kisha kusimbua na kuchanganua anwani lengwa. Kisha huunda muunganisho mpya wa TCP kwa lengo na kupeleka data ya upakiaji kwake. ss-remote hupokea jibu kutoka kwa lengwa kisha husimba data kwa njia fiche na kuipeleka mbele kwa ss-local hadi ikakatishwe.
Kwa madhumuni ya kutatiza, ya ndani na ya mbali inapaswa kutuma data ya kupeana mkono ikiwa na kiasi fulani cha malipo kwenye pakiti ya kwanza.
UDP
ss-local hutuma pakiti ya data iliyosimbwa kwa njia fiche iliyo na anwani lengwa na mzigo wa malipo kwa ss-remote.
[anwani lengwa][payload]
Mara tu pakiti iliyosimbwa inapopokelewa, ss-remote inasimbua na kuchanganua anwani inayolengwa. Kisha hutuma pakiti mpya ya data na mzigo wa malipo kwa lengo. ss-remote hupokea pakiti za data kutoka kwa lengwa na kutanguliza anwani lengwa kwa upakiaji katika kila pakiti. Nakala zilizosimbwa kwa njia fiche hurejeshwa kwa ss-local.
[anwani lengwa][payload]
Mchakato huu unaweza kuchemshwa hadi ss-remote kutekeleza utafsiri wa anwani ya mtandao kwa ss-local.